Modelowanie i symulacje numeryczne zjawisk fizycznych
Modelowanie i symulacje numeryczne zjawisk fizycznych
Modelowanie i symulacje numeryczne zjawisk fizycznych
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Modelowanie</strong> i <strong>symulacje</strong> <strong>numeryczne</strong><br />
<strong>zjawisk</strong> <strong>fizycznych</strong><br />
Krzysztof Murawski<br />
Instytut Fizyki, UMCS<br />
1
Spis treści<br />
1 Podręczniki akademickie - literatura obowiązkowa 2<br />
2 Wstęp 3<br />
3 Wykład 1-3: Istota modelowania i symulacji komputerowych<br />
w fizyce technicznej 7<br />
3.1 Rachunki <strong>numeryczne</strong> a teoria i eksperyment w fizyce technicznej 7<br />
3.2 Nasze pierwsze rachunki w fizyce technicznej . . . . . . . . . . 7<br />
3.2.1 Zalecane ćwiczenie . . . . . . . . . . . . . . . . . . . . 19<br />
3.3 Prawo zachowania . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
3.4 Równania hiperboliczne . . . . . . . . . . . . . . . . . . . . . 22<br />
3.4.1 Typowe skalarne równania hiperboliczne fizyki technicznej<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
3.5 Równanie ruchu drogowego . . . . . . . . . . . . . . . . . . . . 23<br />
3.5.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 24<br />
3.6 Przepływ płynu w rurach . . . . . . . . . . . . . . . . . . . . . 24<br />
3.6.1 Równanie przemysłu naftowego . . . . . . . . . . . . . 24<br />
3.6.2 Zalecane eksperymenty <strong>numeryczne</strong> . . . . . . . . . . . 25<br />
3.6.3 Równania wodnego młota . . . . . . . . . . . . . . . . 26<br />
3.6.4 Zalecane eksperymenty <strong>numeryczne</strong> . . . . . . . . . . . 27<br />
3.7 Model plazmy - równania idealnej magnetohydrodynamiki . . 28<br />
3.7.1 Model kinetyczny plazmy . . . . . . . . . . . . . . . . 30<br />
3.7.2 Przybliżenie quasi-cząstkowe . . . . . . . . . . . . . . . 34<br />
3.7.3 Przybliżenie magnetohydrodynamiczne . . . . . . . . . 35<br />
3.7.4 Obraz Lagrange’a . . . . . . . . . . . . . . . . . . . . . 38<br />
3.7.5 Przybliżenie nieściśliwe . . . . . . . . . . . . . . . . . . 38<br />
3.7.6 Przybliżenie plazmy zimnej . . . . . . . . . . . . . . . 39<br />
2
3.8 Równania Eulera . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />
3.9 Równania Naviera-Stokes’a . . . . . . . . . . . . . . . . . . . . 41<br />
3.10 Równania płytkiej wody . . . . . . . . . . . . . . . . . . . . . 43<br />
4 Wykład 4-6: Metody <strong>numeryczne</strong> dla równania unoszenia i<br />
układów liniowych 45<br />
4.1 Zjawisko unoszenia . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
4.2 Równania liniowe fizyki technicznej . . . . . . . . . . . . . . . 48<br />
4.3 Quasi-liniowa postać równań fizyki technicznej . . . . . . . . . 48<br />
4.4 Problem własny dla macierzy Jacobiego . . . . . . . . . . . . . 49<br />
4.5 Diagonalizacja układu liniowego . . . . . . . . . . . . . . . . . 50<br />
4.6 Problem początkowy dla układu liniowego . . . . . . . . . . . 52<br />
4.6.1 Problem Riemanna . . . . . . . . . . . . . . . . . . . . 54<br />
4.7 Twierdzenie Laxa o równoważności . . . . . . . . . . . . . . . 55<br />
4.8 Lokalny błąd ucięcia i równanie zmodyfikowane dla dyskretnej<br />
postaci równania unoszenia zanieczyszczeń . . . . . . . . . . . 56<br />
4.9 Konsystencja schematu <strong>numeryczne</strong>go . . . . . . . . . . . . . . 57<br />
4.10 Analiza stabilności schematu <strong>numeryczne</strong>go według von Neumanna<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />
4.11 Schemat Godunowa dla równania unoszenia zanieczyszczeń . . 59<br />
4.12 Schemat MacCormacka dla równania unoszenia zanieczyszczeń 59<br />
4.13 Lokalny błąd ucięcia schematu pod-wiatr . . . . . . . . . . . . 60<br />
4.14 Warunek stabilności schematu pod-wiatr . . . . . . . . . . . . 61<br />
5 Wykład 7-9: Numeryczne metody dla równania unoszenia<br />
płynu w cienkich rurach 62<br />
5.1 Biblioteka programów numerycznych NUMERICA . . . . . . . 63<br />
5.2 Program w fortranie 77 . . . . . . . . . . . . . . . . . . . . . . 63<br />
3
5.2.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 66<br />
5.3 Skrypt dla pakietu Gnuplot . . . . . . . . . . . . . . . . . . . 66<br />
5.4 Schematy różnic skończonych . . . . . . . . . . . . . . . . . . 67<br />
5.4.1 Proste schematy <strong>numeryczne</strong> . . . . . . . . . . . . . . . 68<br />
5.4.2 Liczba CFL . . . . . . . . . . . . . . . . . . . . . . . . 70<br />
5.4.3 Warunki brzegowe . . . . . . . . . . . . . . . . . . . . 70<br />
5.5 Eksperymenty <strong>numeryczne</strong> . . . . . . . . . . . . . . . . . . . . 70<br />
5.6 Metoda z wiatrem . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />
5.7 Ogólne sformułowanie schematu pod-wiatr . . . . . . . . . . . 72<br />
5.8 Schematy monotoniczne . . . . . . . . . . . . . . . . . . . . . 72<br />
5.9 Twierdzenie Godunowa . . . . . . . . . . . . . . . . . . . . . . 75<br />
5.10 Dokładność schematów numerycznych . . . . . . . . . . . . . . 75<br />
5.11 Schematy Laxa-Friedrichsa i Laxa-Wendroffa . . . . . . . . . . 76<br />
5.12 Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
5.13 Zalecane ćwiczenia dla równania unoszenia w cienkich rurach . 78<br />
6 Wykład 10-11: Numeryczne rozwiązania fal akustycznych o<br />
małej amplitudzie 80<br />
6.1 Wyprowadzenie równania falowego dla fal akustycznych . . . . 80<br />
6.2 Schemat numeryczny dla równania falowego . . . . . . . . . . 82<br />
6.3 Zalecane eksperymenty <strong>numeryczne</strong> dla fal akustycznych o<br />
małej amplitudzie . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
7 Wykład 12-13: Fale akustyczne w grawitacyjnie uwarstwionej<br />
atmosferze – równanie Kleina-Gordona 84<br />
7.1 Wyprowadzenie równania Kleina-Gordona . . . . . . . . . . . 86<br />
7.2 Program numeryczny dla równania Kleina-Gordona . . . . . . 89<br />
7.3 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . . . . . 92<br />
4
8 Wykład 14-15: Słabo nieliniowe szybkie fale magnetoakustyczne<br />
w plazmie zimnej - równania Burgersa 93<br />
8.1 Wyprowadzenie zmodyfikowanego równania Burgersa . . . . . 96<br />
8.2 Wyprowadzenie równania Burgersa . . . . . . . . . . . . . . . 98<br />
9 Wykład 15-16: Nieliniowe równania hiperboliczne dla układów<br />
fizyki technicznej 100<br />
9.1 Postać całkowa równań hiperbolicznych . . . . . . . . . . . . . 100<br />
9.2 Warunek Rankine’a-Hugoniota dla nieciągłości . . . . . . . . . 101<br />
9.3 Nieliniowe równania skalarne . . . . . . . . . . . . . . . . . . . 102<br />
9.4 Równanie ruchu drogowego . . . . . . . . . . . . . . . . . . . . 103<br />
9.5 Wypukłe i niewypukłe strumienie . . . . . . . . . . . . . . . . 104<br />
9.6 Krzywe charakterystyczne . . . . . . . . . . . . . . . . . . . . 104<br />
9.7 Problem Riemanna dla równania Burgersa . . . . . . . . . . . 105<br />
9.8 Słabe rozwiązania równania Burgersa . . . . . . . . . . . . . . 106<br />
9.9 Warunek entropii dla fali szokowej . . . . . . . . . . . . . . . . 106<br />
9.10 Problem Riemanna dla równania Burgersa - pełne rozwiązanie 107<br />
9.11 Problem Riemanna dla zmodyfikowanego równania Burgersa . 107<br />
10 Wykład 17-18: <strong>Modelowanie</strong> <strong>zjawisk</strong> fizyki technicznej z wykorzystaniem<br />
równań Eulera 111<br />
10.1 Jedno-wymiarowe równania Eulera . . . . . . . . . . . . . . . 111<br />
10.2 Problem własny dla macierzy A c i A n . . . . . . . . . . . . . 113<br />
10.3 Uogólnione niezmienniki Riemanna . . . . . . . . . . . . . . . 114<br />
10.4 Klasyczny problem Riemanna dla równań Eulera . . . . . . . . 116<br />
10.5 Skoki związane z prostymi falami . . . . . . . . . . . . . . . . 120<br />
10.6 Metody <strong>numeryczne</strong> dla układu hiperbolicznych równań fizyki<br />
technicznej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />
5
10.6.1 Zachowawcze metody <strong>numeryczne</strong> . . . . . . . . . . . . 122<br />
10.7 Metody objętości skończonych . . . . . . . . . . . . . . . . . . 123<br />
10.8 Metoda fal biegnących . . . . . . . . . . . . . . . . . . . . . . 124<br />
10.9 Kilka istotnych schematów numerycznych dla równań fizyki<br />
technicznej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />
10.10Metoda Godunowa dla układu hiperbolicznych równań fizyki<br />
technicznej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128<br />
10.11Jedno-wymiarowe równania Eulera . . . . . . . . . . . . . . . 129<br />
10.11.1 Równania Eulera w zmiennych zachowawczych . . . . . 129<br />
10.11.2 Równania Eulera w zmiennych prymitywnych . . . . . 130<br />
10.12Warunek stabilności . . . . . . . . . . . . . . . . . . . . . . . . 130<br />
10.13Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />
11 Wykład 19: Metody Godunowa i przybliżone sposoby rozwiązania<br />
problemu Riemanna dla równań hiperbolicznych 132<br />
11.1 Metoda Godunowa . . . . . . . . . . . . . . . . . . . . . . . . 132<br />
11.2 Przybliżone metody rozwiązywania problemu Riemanna . . . . 133<br />
11.3 Metoda Roe rozwiązania problemu Riemanna . . . . . . . . . 133<br />
11.4 Zalecane eksperymenty <strong>numeryczne</strong> . . . . . . . . . . . . . . . 136<br />
11.5 Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />
12 Wykład 20: Schematy <strong>numeryczne</strong> wyższego rzędu dokładne<br />
dla równań hiperbolicznych fizyki technicznej 137<br />
12.1 Rekonstrukcja danych . . . . . . . . . . . . . . . . . . . . . . 137<br />
12.2 Metoda MUSCL . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />
12.3 Schemat MUSCL-Hancocka . . . . . . . . . . . . . . . . . . . 142<br />
12.3.1 Metoda MUSCL-Hancocka dla równania unoszenia . . 143<br />
12.4 Eksperymenty z pakietem NUMERICA . . . . . . . . . . . . . 145<br />
6
12.4.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 145<br />
12.4.2 Odpowiedzi . . . . . . . . . . . . . . . . . . . . . . . . 146<br />
12.5 Zaśmiecające oscylacje . . . . . . . . . . . . . . . . . . . . . . 147<br />
12.6 Kompatybilność danych numerycznych i metoda TVD . . . . . 147<br />
12.7 Całkowita wariacja . . . . . . . . . . . . . . . . . . . . . . . . 148<br />
12.8 Twierdzenie Hartena . . . . . . . . . . . . . . . . . . . . . . . 149<br />
12.9 Symulacje <strong>numeryczne</strong> zanieczyszczeń powietrza . . . . . . . . 149<br />
12.9.1 Model numeryczny . . . . . . . . . . . . . . . . . . . . 151<br />
12.9.2 Wyniki <strong>numeryczne</strong> i ich dyskusja . . . . . . . . . . . . 153<br />
13 Wykład 21-22: <strong>Modelowanie</strong> <strong>numeryczne</strong> <strong>zjawisk</strong> fizyki technicznej<br />
opisywanych równaniami magnetohydrodynamiki 157<br />
13.1 Równania magnetohydrodynamiki . . . . . . . . . . . . . . . . 157<br />
13.1.1 Postać zachowawcza równań magnetohydrodynamiki . 158<br />
13.1.2 Postać niezachowawcza równań MHD . . . . . . . . . . 159<br />
13.2 Problemy z numerycznymi rozwiązaniami równań MHD . . . . 162<br />
13.2.1 Metody usuwania dywergencji B . . . . . . . . . . . . . 163<br />
13.3 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . . . . . 169<br />
14 Wykład 23-24: Model polimeru, ropy naftowej i wody. Odkształcenia<br />
sprężyste w belkach i innych układach mechanicznych<br />
170<br />
14.1 Dynamika ropy naftowej, wody i polimeru - zastosowanie w<br />
przemyśle naftowym . . . . . . . . . . . . . . . . . . . . . . . 170<br />
14.1.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 172<br />
14.2 Odkształcenia sprężyste w układach mechanicznych . . . . . . 173<br />
14.2.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 174<br />
7
15 Wykład 25-28: Równania płytkiej wody 175<br />
15.1 Jedno-wymiarowe równania płytkiej wody . . . . . . . . . . . 175<br />
15.2 Problem Riemanna dla jedno-wymiarowych równań płytkiej<br />
wody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176<br />
15.3 Problem pękniętej tamy . . . . . . . . . . . . . . . . . . . . . 176<br />
15.4 Numeryczne prognozowanie pogody . . . . . . . . . . . . . . . 177<br />
15.4.1 Zalecane ćwiczenia . . . . . . . . . . . . . . . . . . . . 178<br />
16 Wykład 29-30: Problemy zaawansowane 180<br />
16.1 Wielo-wymiarowe równania zachowania . . . . . . . . . . . . . 180<br />
16.1.1 Metody rozszczepienia operatora . . . . . . . . . . . . 181<br />
16.1.2 Metody nierozszczepialnego operatora . . . . . . . . . . 183<br />
16.1.3 Strukturalne i niestrukturalne siatki <strong>numeryczne</strong> . . . . 184<br />
16.1.4 Siatki samoadaptacyjne . . . . . . . . . . . . . . . . . 187<br />
16.2 Niejawne schematy <strong>numeryczne</strong> . . . . . . . . . . . . . . . . . 189<br />
16.3 Ledwo niejawny schemat dla równań Eulera . . . . . . . . . . 191<br />
17 Podsumowanie 193<br />
18 Wnioski 194<br />
19 Dodatek A: Schematy <strong>numeryczne</strong> dla równania unoszenia<br />
w cienkich rurach 199<br />
19.1 Schematy: w pełni dyskretne, pół-dyskretne i niejawne . . . . 199<br />
19.2 Wycentrowany schemat Godunowa . . . . . . . . . . . . . . . 200<br />
19.3 Schemat FORCE . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />
20 Dodatek B: Schematy centralne dla praw zachowania 201<br />
8
21 Dodatek C: Metody HLL i HLLC przybliżonego rozwiązania<br />
problemu Riemanna dla równań fizyki technicznej 203<br />
21.1 Komentarz o metodzie HLL . . . . . . . . . . . . . . . . . . . 205<br />
21.2 Schematy Rusanowa i Laxa-Friedrichsa . . . . . . . . . . . . . 206<br />
21.3 Metoda HLLC rozwiązywania problemu Riemanna . . . . . . . 207<br />
21.3.1 Metoda HLLC dla jedno-wymiarowych równań Eulera . 208<br />
21.3.2 Podsumowanie metody HLLC . . . . . . . . . . . . . . 209<br />
21.4 Oszacowanie prędkości fal . . . . . . . . . . . . . . . . . . . . 210<br />
22 Dodatek D: Inne <strong>numeryczne</strong> metody dla równań fizyki technicznej<br />
211<br />
22.1 Metoda WAF . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />
22.1.1 Metoda WAF dla równania unoszenia . . . . . . . . . . 211<br />
22.2 Uogólniony problem Riemanna . . . . . . . . . . . . . . . . . . 213<br />
22.3 Metoda kawałkami liniowej interpolacji . . . . . . . . . . . . . 215<br />
22.4 Schemat ADER . . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />
22.5 Wycentrowany schemat SLIC . . . . . . . . . . . . . . . . . . 218<br />
22.6 Wersja TVD metody WAF . . . . . . . . . . . . . . . . . . . . 220<br />
22.7 Obszar TVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221<br />
23 Dodatek E: Wartości i wektory własne macierzy Jacobiego<br />
dla równań MHD 221<br />
23.1 Osobliwości w wektorach własnych . . . . . . . . . . . . . . . 223<br />
24 Dodatek F: Schemat numeryczny dla silnego pola magnetycznego<br />
225<br />
1
Forma i warunki zaliczenia wykładów<br />
Egzamin lub obrona własnych projektów (programów lub wyników symulacji<br />
komputerowych) zaliczeniowych.<br />
1 Podręczniki akademickie - literatura obowiązkowa<br />
1. LeVeque R., Finite Volume Methods for Hyperbolic Problems, Cambridge<br />
University Press, Cambridge 2002<br />
2. Toro E.F., Riemann Solvers and Numerical Methods for Fluid Dynamics:<br />
A Practical Introduction, Springer 2009<br />
3. Guinot V., Godunov-type schemes. An introduction for engineers, Elsevier<br />
2003<br />
4. Trangenstein J.A., Numerical solution of hyperbolic partial differential<br />
equations, Cambridge University Press 2009<br />
2
2 Wstęp<br />
Ze wględu na złożoność <strong>zjawisk</strong> fizyki technicznej większość z nich można<br />
opisać za pomocą równań, które na ogół nie dadzą się rozwiązać analitycznie.<br />
W rezultacie równania te wymagają <strong>numeryczne</strong>go traktowania. Podstawową<br />
ideą eksperymentów numerycznych jest symulowanie ewolucji układu fizycznego<br />
poprzez rozwiązanie odpowiedniego zestawu równań matematycznych,<br />
które ten układ opisują. Typowym sposobem przeprowadzania symulacji numerycznych<br />
jest skonstruowanie modelu matematycznego, zwykle w formie<br />
układu równań różniczkowych, a następnie przetransformowanie tych równań<br />
do postaci dyskretnej, która może być już traktowana numerycznie. W rezultacie<br />
<strong>symulacje</strong> <strong>numeryczne</strong> polegają na zadaniu warunków początkowych i<br />
śledzeniu ich ewolucji w czasie.<br />
Symulacje <strong>numeryczne</strong> pojawiły się jako nowa dziedzina nauki uzupełniająca<br />
zarówno eksperyment jak i teorię. Symulacje czasami mogą zastąpić<br />
eksperyment, chociaż na ogół <strong>symulacje</strong> i eksperyment uzupełniają się.<br />
Wyniki badań eksperymentalnych są często wyjaśnione symulacjami a <strong>symulacje</strong><br />
są zazwyczaj kalibrowane eksperymentem. Eksperyment dostarcza danych<br />
symulacjom, które możemy postrzegać jako eksperymentowanie w fizyce<br />
teoretycznej. Informacja zwrotna, którą dostarczają <strong>symulacje</strong> <strong>numeryczne</strong><br />
i ciągłe śledzenie wyników eksperymentów wraz z rezultatami badań analitycznych<br />
sprawiają, że <strong>symulacje</strong> stają się nieodzownym narzędziem nauki.<br />
Dlatego też wzrost mocy obliczeniowych komputerów i ich zasobów pamięci<br />
wpłynął znacznie na rozwój symulacji komputerowych. Podobnie, poprawa<br />
jakości algorytmów numerycznych znacząco wpłynęło na jakość otrzymanych<br />
wyników.<br />
Obecnie istnieje wiele metod konstrukcji schematów numerycznych, które<br />
spełniają wyżej opisane wymogi. Metody typu Godunowa uważane są za<br />
3
jedne z najbardziej efektywnych metod rozwiązania hiperbolicznych praw zachowania.<br />
Godunow (1959) po raz pierwszy wprowadził pierwszego-rzędu dokładne<br />
metody pod wiatr wśród rodziny prostych dyskretyzacji równań. Oryginalny<br />
schemat Godunowa (1959) używa samo-podobnego rozwiązania problemu<br />
Riemanna określonego dla kawałkami stałej funkcji w problemie Cauchy’ego.<br />
Rozwiązanie to służy do określenia strumienia metodą pod wiatr.<br />
Problem Riemanna dla układu praw zachowania jest zdefiniowany jako problem<br />
Cauchy’ego odpowiadającym (klasycznie) dwum stałym stanom oddzielonym<br />
nieciągłością. Godunow (1959) dowiódł twierdzenia, że jeśli schemat<br />
numeryczny ma zachować monotoniczność rozwiązania, schemat ten musi być<br />
co-najwyżej pierwszego-rzędu dokładny. Twierdzenie to wpłynęło zniechęcająco<br />
na próby poprawy schematu <strong>numeryczne</strong>go, który wprowadził Godunow.<br />
Ulepszenie schematu na drugiego-rzędu dokładny odbywało się poprzez zastosowanie<br />
nieoscylacyjnej, kawałkami liniowej rekonstrukcji z uśrednionych<br />
po objętości komórek danych. Wydaje się, że to był Kolgan (1972), który<br />
po raz pierwszy zaproponował redukcję szumów numerycznych poprzez zastosowanie<br />
tzw. zasady minimalnej wartości pochodnych, otrzymując w ten<br />
sposób nieoscylacyjny schemat typu Godunowa. Schemat ten był drugiegorzędu<br />
dokładny dla gładkich rozwiązań. Następnie van Leer (1979) napisał<br />
Monotone Upstream Scheme for Conservation Laws (MUSCL), w którym zastosował<br />
drugiego-rzędu rekonstrukcję. Schemat ten został znacznie uproszczony<br />
przez studenta mechanki płynów (UC Berkeley) Steve’a Hancocka w<br />
1980 roku i dlatego nosi teraz nazwę schematu MUSCL-Hancocka.<br />
Konstrukcja schematów numerycznych wyższego rzędu dokładności niż<br />
dwa jest na ogół zawiła. W projektowaniu takich schematów napotykamy conajmniej<br />
trzy trudności. Jedna z nich polega na zachowaniu wyższego-rzędu<br />
dokładności, zarówno w przestrzeni jak i czasie, w układach <strong>fizycznych</strong> opisy-<br />
4
wanych wielo-wymiarowymi równaniami, które dodatkowo zawierają człony<br />
źródłowe. Inna trudność polega na zachowaniu wielkości <strong>fizycznych</strong> w obecności<br />
szoków. Dodatkowa trudność związana jest z powstawaniem “zaśmiecających”<br />
oscylacji, które szczególnie uwidaczniają się w pobliżu stromych profili.<br />
Zgodnie z twierdzeniem Godunowa (1959) są one nieuniknione w schematach<br />
numerycznych o dokładności większej niż jeden. Oscylacje te stanowią<br />
szumy <strong>numeryczne</strong>, które mogą doprowadzić do wygenerowania niestabilności.<br />
Dlatego ich wyeliminowanie jest wysoce pożądane. W celu ich usunięcia<br />
stosowane są nieliniowe adaptacyjne schematy <strong>numeryczne</strong>.<br />
Cel i zakres wykładów<br />
Powody badań praw zachowania w fizyce technicznej są oczywiste: prawa<br />
te opisują <strong>zjawisk</strong>a w wielu dziedzinach nauki począwszy od modelowania<br />
unoszenia zanieczyszczeń z wykorzystaniem równania adwekcji do badania<br />
supernowych w astrofizyce poprzez równania magnetohydrodynamiki. Ponieważ<br />
interesujące nas prawa zachowania są nieliniowe, na ogół nie jest<br />
możliwe otrzymanie ich rozwiązań w sposób jawny. Stąd istnieje potrzeba<br />
wypracowania metod numerycznych w celu otrzymania przybliżonych rozwiązań.<br />
Zaprojektowanie i implementacja wydajnych metod numerycznych<br />
stanowi główny cel tych materiałów dydaktycznych.<br />
W celu zaprojektowania wydajnych metod numerycznych musimy zrozumieć<br />
strukturę rozwiązań analitycznych praw zachowania. Dlatego po krótce<br />
przedyskutujemy właściwości teoretyczne rozwiązań, które są odpowiednie<br />
do zaprojektowania i analizy schematów numerycznych.<br />
Symulacje <strong>numeryczne</strong> często są jedynym narzędziem służącym do zbadania<br />
dynamiki układów złożonych. Chociaż różnorodność układów <strong>fizycznych</strong>,<br />
które możemy analizować numerycznie, stale rośnie, oczekujemy na rozwią-<br />
5
zania bardziej złożonych układów. Model numeryczny może być użyty do<br />
zintepretowania wyników pomiarów, rozszerzenia istniejących modeli analitycznych<br />
i numerycznych na obszary o większym zakresie parametrów i jakościowej<br />
weryfikacji istniejących teorii. Jest to możliwe poprzez porównanie<br />
przewidywań modelu <strong>numeryczne</strong>go z danymi eksperymentalnymi.<br />
Głównym celem niniejszego wykładu jest wypracowanie technik modelowania<br />
komputerowego <strong>zjawisk</strong> fizyki technicznej. Z wykorzystaniem pakietów<br />
numerycznych, np. jak Numerica, Clawpack, Compact, Centpack i innych,<br />
rozważać będziemy unoszenie zanieczyszczeń, <strong>zjawisk</strong>o młota wodnego, ruch<br />
drogowy, przepływ płynów w rurach i innych ośrodkach sprężystych. Przedyskutujemy<br />
także fale na płytkiej wodzie, zajmiemy się problematyką przewidywania<br />
pogodny i falami w plazmie. Zajęcia przygotują słuchaczy do modelowania<br />
<strong>zjawisk</strong> w ośrodkach ciągłych w zastosowaniu do układów fizyki<br />
technicznej.<br />
6
3 Wykład 1-3: Istota modelowania i symulacji<br />
komputerowych w fizyce technicznej<br />
Plan wykładu<br />
• rachunki <strong>numeryczne</strong> a teoria i eksperyment w fizyce technicznej<br />
• <strong>zjawisk</strong>a opisywane skalarnymi równaniami hiperbolicznymi<br />
• modelowanie pogody z wykorzystaniem równań płytkiej wody<br />
• <strong>zjawisk</strong>a w płynach - równania Eulera<br />
• model magnetohydrodynamiczny plazmy<br />
3.1 Rachunki <strong>numeryczne</strong> a teoria i eksperyment w fizyce<br />
technicznej<br />
Gwałtowny rozwój technik komputerowych przyczynił się do tego, że rachunki<br />
<strong>numeryczne</strong> zyskały status nowej dziedziny badawczej, z cechami podobieństwa<br />
do teorii i eksperymentu.<br />
W fizyce technicznej używamy komputera do modelowania <strong>zjawisk</strong> w celu<br />
ich lepszego zrozumienia.<br />
3.2 Nasze pierwsze rachunki w fizyce technicznej<br />
Osoba może wykonać dziennie średnio około 40 kroków iteracji w czasie<br />
równania różniczkowego. Zastosowanie metod komputerowych znacznie<br />
przyśpiesza wykonanie rachunków i otrzymanie wysokiej jakości wyników.<br />
To szybkość przeprowadzania rachunków i jakość wyników w głównej mierze<br />
stymulują rozwój metod numerycznych.<br />
7
Rozpocznijmy swoją przygodę od rozpatrzenia równania falowego (równanie<br />
to wyprowadzimy w dalszej części materiałów)<br />
q ,tt − c 2 q ,xx = 0 , (1)<br />
gdzie użyliśmy następującej notacji dla pochodnych:<br />
q ,tt ≡ ∂2 q<br />
∂t 2 ,<br />
q ,xx ≡ ∂2 q<br />
∂x 2 . (2)<br />
Symbole t i x oznaczają odpowiednio czas i współrzędną przestrzenną a c<br />
jest prędkością fali opisywanej funkcją q(x, t).<br />
Rysunek 1: Siatka numeryczna rozmiarze przestrzennym ∆x i kroku czasowym<br />
∆t.<br />
Zapiszmy równanie (1) w postaci dyskretnej. W tym celu wprowadźmy<br />
stały rozmiar (jednorodnej) siatki <strong>numeryczne</strong>j ∆x i krok czasowy ∆t (rys. 1):<br />
x i = i∆x , i = 0, 1, . . . , M , ∆x = x i+1 − x i , (3)<br />
t n = n∆t , n = 0, 1, . . . , n max , ∆t = t n+1 − t n . (4)<br />
8
Wtedy wartość funkcji falowej q(x = x i , t = t n ) zapiszemy jako<br />
q n i = q(x = x i , t = t n ) . (5)<br />
Zastępując w równaniu (1) pochodne odpowiednimi schematami różnicowymi<br />
(szczegóły implementacji schematów będziemy dyskutowali w dalszych<br />
częściach niniejszych materiałów dydaktycznych) otrzymamy schemat numeryczny,<br />
który posłuży nam do <strong>numeryczne</strong>go rozwiązania równania falowego.<br />
Schemat numeryczny wykorzystajmy w poniższym skrypcie napisanym w języku<br />
IDL/GDL.<br />
; *******************************************************************<br />
; Program w IDL-u/GDL-u rozwiązujący problem początkowy dla równania falowego:<br />
;<br />
; q_tt (x,t) = c^2*q_xx(x, t)<br />
;<br />
; *******************************************************************<br />
; funkcja określająca warunek początkowy<br />
function F, x<br />
; return, sin( 3.14159265*x )<br />
; return, sin( 3.14159265*x ) + sin( 2*3.14159265*x )<br />
; return, sin( 3.14159265*x/4 )<br />
return, exp( -( ( x - 2 )/( 2*0.25 ) )^2 )<br />
;<br />
; -----------<br />
; rectangle<br />
9
;<br />
; F = 0.0<br />
; if(abs(x-2) LE 0.5) then begin<br />
; F = 1.0<br />
; endif<br />
; return, F<br />
; -----------<br />
end<br />
; *****************<br />
; program główny<br />
; *****************<br />
window,0,xsize=800,ysize=600<br />
;rozmiar okna, w którym wyświetlane są wyniki<br />
nx = 200 ; ilość komórek siatki <strong>numeryczne</strong>j<br />
xmin = 0.0<br />
; min x<br />
xmax = 4.0<br />
; max x<br />
show_delay = 0.02<br />
; wstrzymanie rysowania wykresu<br />
; deklaracja wektorów<br />
x = fltarr(nx)<br />
q3 = fltarr(nx)<br />
q2 = fltarr(nx)<br />
q1 = fltarr(nx)<br />
10
c = 1<br />
r = 0.9<br />
; prędkość fali<br />
; liczba Couranta - parametr decydujący o sta<br />
dx = ( xmax-xmin )/( nx - 1 )<br />
dt = ( dx*r )/c<br />
; rozmiar komórki <strong>numeryczne</strong>j<br />
; krok czasowy - warunek stabilności schematu<br />
for i = 0, nx-1 do begin<br />
x(i) = xmin + i*dx<br />
endfor<br />
; punkty siatki <strong>numeryczne</strong>j<br />
; warunek początkowy<br />
for i = 0, nx-1 do begin<br />
q1(i) = F(x(i))<br />
q3(i) = q1(i)<br />
endfor<br />
;parametry wykresu<br />
!x.style = 1<br />
!y.style = 1<br />
; zakres wyświetlanych wyników<br />
!x.range = [min(x),max(x)]<br />
!y.range = [ -0.1, 1.1 ]<br />
; tytuły osi<br />
!x.title = ’x’<br />
!y.title = ’q’<br />
; styl osi x<br />
; styl osi y<br />
11
!p.charsize = 1.5<br />
; wielkość znaków<br />
plot, x, q3<br />
wait, show_delay<br />
; wykres q3<br />
; wstrzymanie rysowania wykresu o show_delay<br />
; rozwiązanie równania metodą różnic skończonych:<br />
for i = 1, nx-2 do begin<br />
q2(i) = ( 1 - r*r )*F(x(i)) + r*r*( F(x(i+1)) + F(x(i-1)) ) * 0.5<br />
q3(i) = q2(i)<br />
endfor<br />
; zadanie otwartych warunków brzegowych<br />
q2(0) = q1(1)<br />
q2(nx-1) = q1(nx-2)<br />
q3(0) = q2(0)<br />
q3(nx-1) = q2(nx-1)<br />
plot, x, q3<br />
wait, show_delay<br />
; -----------------<br />
; iteracje w czasie<br />
; -----------------<br />
for j=0, nx+0 do begin<br />
12
for i=1, nx-2 do begin<br />
q3(i) = ( 2 - 2*r*r )*q2(i) + r*r*( q2(i-1) + q2(i+1) ) - q1(i)<br />
endfor<br />
; warunki brzegowe<br />
q3(0) = q2(1)<br />
q3(nx-1) = q2(nx-2)<br />
plot, x, q3<br />
wait, show_delay<br />
for i=0, nx-1 do begin<br />
q1(i) = q2(i)<br />
q2(i) = q3(i)<br />
endfor<br />
endfor<br />
end<br />
Uruchamiając powyższy skryp IDLa/GDLa zauważmy, że zaburzenie początkowe<br />
opisane funkcją Gaussa, rozpada się na dwie fale D’Alembert’a. Fale<br />
te rozchodzą się w przeciwnych kierunkach i mają o połowę mniejszą amplitudę<br />
od zaburzenia początkowego. W końcowej fazie symulacji widoczne są<br />
błędy <strong>numeryczne</strong> związane z odbiciami od brzegów obszaru symulacji. Błędy<br />
<strong>numeryczne</strong> będziemy dyskutować w dalszych częściach wykładu.<br />
13
Wybierzmy teraz jako stan (warunek) początkowy falę prostokątną. Zauważmy,<br />
że schemat numeryczny prowadzi do licznych oscylacji, które zaśmiecają<br />
rozwiązanie fizyczne. Schemat, który działa dobrze dla zaburzeń<br />
gładkich (np. zadanych funkcją Gaussa), wykazuje więc duże problemy z<br />
poprawnym rozpodobnieniem nieciągłości. Naszym celem jest przedstawienie<br />
metod, które radzą sobie dobrze z reprezentacją stromych profili, które<br />
są jednym z charakterystycznych rozwiązań nieliniowych równań różniczkowych.<br />
Każda z fal D’Alambert’a może być opisana równaniem adwekcji (ang.<br />
advection equation):<br />
q ,t + cq ,x = 0 . (6)<br />
Równanie to będziemy dyskutować w szczegółach poniżej. Warto jednak<br />
zwrócić uwagę, że w fizyce technicznej wyróżniamy zarówno adwekcję, której<br />
towarzyszy unoszenie z określoną prędkością c, i konwekcję, która jest procesem<br />
unoszenia lżejszych części płynu. Adwekcja może jednak występować<br />
bez obecności pola grawitacyjnego, które jest niezbędne dla procesu konwekcji.<br />
Poniżej będziemy jednak równanie (6) określać mniej porawną ale za to<br />
rodzimie brzmiącą nazwą a mianowicie równaniem unoszenia.<br />
Ewolucję zadanego dla czasu t = 0 zaburzenia początkowego dla równania<br />
unoszenia możemy prześledzić uruchamiając poniższy skrypt IDLa/GDLa:<br />
; *******************************************************************<br />
; metody <strong>numeryczne</strong>go rozwiązywania problemu początkowego<br />
; dla r-nia unoszenia q_t + c q_x = 0<br />
; *******************************************************************<br />
;window,0,xnx=500,ynx=300<br />
14
nx = 1000 ; liczba komórek siatki <strong>numeryczne</strong>j<br />
xmin = 0.0 ; początek obszaru symulacji<br />
xmax = 10.0 ; koniec obszaru symulacji<br />
pocz = 1<br />
szer = 1<br />
; początek impulsu<br />
; szerokość impulsu<br />
x = fltarr(nx)<br />
q = fltarr(nx)<br />
p = fltarr(nx) ; dla Laxa-Wendroffa<br />
n = fltarr(nx) ; dla Godunowa (Fromma)<br />
c = 1 ; predkosc unoszenia<br />
cfl = 0.9<br />
; liczba Couranta < 1 ze wzgledu na stablinosc schematow numeryczn<br />
dx = (xmax-xmin) / nx<br />
dt = (dx/c)*cfl<br />
; szerokość komórki <strong>numeryczne</strong>j<br />
; przyrost czasu<br />
; określenie punktów siatki <strong>numeryczne</strong>j<br />
for i=0,nx-1 do begin<br />
x(i) = xmin + i*dx<br />
endfor<br />
; *************************************************************************<br />
; zaburzenie początkowe<br />
; *************************************************************************<br />
15
;--------------------------prostokąt--------------------------------------<br />
;for i=0,nx-1 do begin<br />
; q(i) = 0<br />
; if ((x(i) GE pocz) && (x(i) LE pocz+szer)) then begin<br />
; q(i)=1<br />
; endif<br />
;endfor<br />
;--------------------------Gauss------------------------------------------<br />
;for i=0,nx-2 do begin<br />
; q(i) = exp(-((x(i)-3.0)/(2*0.5))^2)<br />
;endfor<br />
;--------------------------sinus------------------------------------------<br />
;for i=0,nx-1 do begin<br />
; q(i)=0<br />
; if ((x(i) GE pocz) && (x(i) LE pocz + 2*3.14)) then begin<br />
; q(i)=sin(x(i)-pocz)<br />
; endif<br />
;endfor<br />
;--------------------------trojkat----------------------------------------<br />
for i=1,nx-2 do begin<br />
q(i) = 0<br />
if ((x(i) GE pocz) && (x(i) LT pocz+szer)) then begin<br />
q(i) = q(i-1) + dx<br />
endif<br />
if ((x(i) GE pocz+szer) && (x(i) LT pocz + 2*szer)) then begin<br />
q(i) = q(i-1) - dx<br />
endif<br />
16
endfor<br />
; parametry rysunku<br />
; ********************<br />
!x.style = 1<br />
!y.style = 1<br />
!y.range = [min(q)-0.2,max(q)+0.2]<br />
!x.title = ’x’<br />
!y.title = ’q’<br />
!p.charsize = 1.5<br />
; styl linii OX<br />
; styl linii OY<br />
; zakres zmiennej y<br />
; tytul osi OX<br />
; tytul osi OY<br />
; wielkość znaków<br />
; ****************<br />
; iteracje w czasie<br />
; ****************<br />
;<br />
for k = 1, 120 do begin<br />
; warunki brzegowe - określenie wartości w komórkach duchach<br />
; -------------- otwarte -----------------------------------<br />
q(0) = q(1) ; z lewej strony<br />
q(nx-1) = q(nx-2) ; z prawej strony<br />
; -------------- okresowe ----------------------------------<br />
; q(0) = q(nx-2) ; z lewej strony<br />
; q(1) = q(nx-3) ; z lewej strony<br />
; q(nx-1) = q(1) ; z prawej strony<br />
; q(nx-2) = q(2) ; z prawej strony<br />
17
; =====================<br />
; schematy <strong>numeryczne</strong><br />
; =====================<br />
;-------------------------FTBS-------------------------------<br />
; for i=1,nx-2 do begin<br />
; q(i)=q(i) - c*dt/dx*(q(i)-q(i-1))<br />
; endfor<br />
;-------------------------FTCS-------------------------------<br />
; for i=1,nx-2 do begin<br />
; q(i)=q(i) - c*dt/(2*dx)*(q(i+1)-q(i-1))<br />
; endfor<br />
;-------------------------Lax-Friedrichs---------------------<br />
; for i=1,nx-2 do begin<br />
; q(i)=((q(i-1)+q(i+1))/2) - c*(dt/(2*dx))*(q(i+1)-q(i-1))<br />
; endfor<br />
;-------------------------pod wiatr--------------------------<br />
; for i=1,nx-2 do begin<br />
; q(i)=q(i) - (dt/(2*dx))*((c+abs(c))*(q(i)-q(i-1))+(c-abs(c))*(q(i+1)-q(i)))<br />
; endfor<br />
;------------------------Lax-Wendroff------------------------<br />
for i=1,nx-2 do begin<br />
p(i)=(((q(i-1)+q(i))/2) - (c*(dt/dx)*((q(i)-q(i-1))/2)))<br />
endfor<br />
for i=1,nx-2 do begin<br />
q(i)=(q(i) - (c*(dt/dx)*(p(i+1)-p(i))))<br />
endfor<br />
;-----------------------MacCormack----------------------------<br />
18
; for i=1,nx-2 do begin<br />
; p(i)=(q(i) - ( c*(dt/dx)*(q(i)-(q(i-1)))) )<br />
; endfor<br />
; for i=1,nx-2 do begin<br />
; q(i)=(((q(i)+p(i))/2) - (c*(dt/dx)*((p(i+1)-p(i))/2)))<br />
; endfor<br />
;-----------------------Godunow (Fromm)-----------------------<br />
; for i=1,nx-2 do begin<br />
; n(i)=((q(i+1)-q(i-1))/(2*dx))<br />
; endfor<br />
; for i=1,nx-2 do begin<br />
; p(i)=(q(i)-q(i-1)+((1/2)*(dx-(c*dt))*(n(i)-n(i-1))))<br />
; endfor<br />
; for i=1,nx-2 do begin<br />
; q(i)=(q(i)-(v*(dt/dx)*p(i)))<br />
; endfor<br />
plot,x,q<br />
wait,0.05<br />
endfor<br />
end<br />
3.2.1 Zalecane ćwiczenie<br />
Wykonajmy następujące eksperymenty <strong>numeryczne</strong>:<br />
1. dokonajmy uruchomienia powyższego skryptu dla różnych warunków<br />
19
początkowych<br />
2. wybierzmy różne schematy <strong>numeryczne</strong><br />
Szczegóły dotyczące schematów numerycznych będziemy dyskutowali poniżej.<br />
3.3 Prawo zachowania<br />
Wiele procesów fizyki technicznej opisywanych jest podstawowymi prawami<br />
zachowania takimi jak: zachowanie masy, energii, pędu, ładunku itd.<br />
Procesy te opisywane są równaniem zachowania, np.<br />
ϱ ,t + ∇ · (ϱv) ≡ ϱ ,t + v · ∇ϱ + ϱ∇ · v = 0 . (7)<br />
Tutaj ϱ jest uogólnioną gęstością a v oznacza prędkość przepływu. Człon<br />
v · ∇ϱ opisuje adwekcję a ϱ∇ · v odpowiada kompresji lub procesowi odwrotnemu,<br />
czyli rozrzedzeniu.<br />
v<br />
v<br />
X<br />
X<br />
1 2<br />
Rysunek 2: W przedziale < x 1 , x 2 > masa ulega zmianie wskutek wpływu materii<br />
z lewej strony i wypływu w punkcie x = x 2 .<br />
Wyprowadzimy teraz równanie zachowania masy w przypadku jednowymiarowej<br />
dynamiki płynu. Bardziej ogólnego wyprowadzenia dokonali np.<br />
Landau i Lifshitz (1986). Niech x i ϱ(x, t) oznaczają odpowiednio odległość<br />
i gęstość masy w punkcie x. Załóżmy, że w płynie nie ma źródeł i ubytków<br />
masy, co oznacza, że masa nie jest tworzona i nie znika w układzie. Wtedy<br />
masa na odcinku < x 1 , x 2 > może ulec zmianie tylko wskutek przepływu<br />
20
przez punkty brzegowe x 1 i x 2 (rys. 2). Zmiana masy w czasie (reprezentowana<br />
przez pochodną w czasie) jest spowodowana strumieniem wpływającym<br />
z lewej strony i strumieniem wypływającym z prawej strony. To oczywiste<br />
stwierdzenie możemy zapisać następująco:<br />
∫<br />
d x2<br />
ϱ(x, t)dx = ϱ(x 1 , t)v(x 1 , t) − ϱ(x 2 , t)v(x 2 , t) , (8)<br />
dt x 1<br />
gdzie v(x, t) jest prędkością przepływu a iloczyn gęstości masy ϱ(x, t) i v(x, t)<br />
jest równy strumieniowi. Dla funkcji różniczkowalnych z powyższego r-nia<br />
otrzymamy<br />
lub<br />
∫ x2<br />
x 1<br />
∫ x2<br />
∫ x2<br />
ϱ ,t dx = − (ϱv) ,x dx (9)<br />
x 1<br />
x 1<br />
[ϱ ,t + (ϱv) ,x ]dx = 0 . (10)<br />
Ponieważ równanie to jest spełnione dla dowolnego przedziału < x 1 , x 2 >,<br />
wyrażenie pod całką musi być równe zero, czyli<br />
ϱ ,t + (ϱv) ,x = 0 . (11)<br />
Otrzymaliśmy w ten sposób odpowiednik różniczkowy prawa zachowania<br />
masy. W przypadku stałej prędkości v w równaniu (11) otrzymamy równanie<br />
unoszenia<br />
ϱ ,t + vϱ ,x = 0. (12)<br />
Równanie (11) możemy także zapisać w postaci Lagrange’a (ang. Lagrangian<br />
form) następująco:<br />
ϱ ,t + vϱ ,x ≡ dϱ<br />
dt = −ϱv ,x, (13)<br />
gdzie dwa człony stojące po lewej stronie zawierają pochodne Eulera po czasie<br />
(ang. Eulerian time derivative) i adwekcyjną pochodną po zmiennej przestrzennej<br />
x (ang. advective space derivative). Człony te można połączyć w<br />
21
pochodną Lagrange’a dϱ/dt, która oznacza zmianę ϱ w układzie poruszającym<br />
się z prędkością v.<br />
3.4 Równania hiperboliczne<br />
Równania hiperboliczne - równania cząstkowe zapisane następująco:<br />
q ,t + f(q) ,x + g(q) ,y + h(q) ,z = s . (14)<br />
Tutaj q jest wektorem stanu, składowe strumienia [f, g, h] i człon źródłowy<br />
s zapiszemy jako<br />
q = [q 1 , . . . , q m ] T , f = [f 1 , . . . , f m ] T , s = [s 1 , . . . , s m ] T , m = 1, 2, . . . . (15)<br />
Symbol T odpowiada transpozycji (przestawieniu elementów) wektora.<br />
Zauważmy, że nie każde równanie zapisane w postaci (14) jest równaniem<br />
hiperbolicznym. Aspekt ten będziemy dyskutować poniżej przy okazji<br />
podania defincji równań hiperbolicznych.<br />
3.4.1 Typowe skalarne równania hiperboliczne fizyki technicznej<br />
W przypadku m = 1 i przestrzeni jedno-wymiarowej równanie (14) upraszcza<br />
się do skalarnego równania hiperbolicznego<br />
q ,t + f(q) ,x = 0 . (16)<br />
Typowe przykłady takiego równania to:<br />
1. równanie unoszenia (np. Toro 2009) ze strumieniem<br />
f(q) = λq , λ = const. (17)<br />
2. nielepkie równanie Burgersa (np. Toro 2009), dla którego<br />
f(q) = 1 2 q2 . (18)<br />
22
3. równanie ruchu drogowego (np. LeVeque 2002) ze strumieniem<br />
f(q) = a(1 − q)q . (19)<br />
4. równanie Buckley-Leveretta (np. LeVeque 2002) z<br />
f(q) =<br />
3.5 Równanie ruchu drogowego<br />
q 2<br />
q 2 + b(1 − q) 2 . (20)<br />
Rozważmy prosty model ruchu drogowego. Niech q(x, t) oznacza gęstość<br />
pojazdów, wyrażającą się ilością pojazdów na jednostkę długości drogi i niech<br />
v(q) będzie oznaczać ich prędkość. Strumień pojazdów jest wtedy określany<br />
jako vq. Zakładając, że na drodze nie ma odjazdów ani dojazdów, prawo<br />
zachowania możemy wyrazić następująco:<br />
Prędkość v(q) możemy określić jako<br />
q ,t + (vq) ,x = 0 . (21)<br />
(<br />
v(q) = v max 1 − q )<br />
, (22)<br />
q max<br />
gdzie v max jest maksymalną prędkością pojazdów a q max ich maksymalną<br />
gęstością. Z powyższego wyrażenia wynika, że w przypadku braku pojazdów<br />
(przypadek q = 0) prędkość v = v max . Przypadek całkowicie zapełnionej<br />
drogi (przypadek q = q max ) odpowiada zerowej prędkości pojazdów, czyli<br />
v(q) = 0.<br />
Bardziej zaawansowany model ruchu drogowego można znaleźć w monografii<br />
Guinota (2003). Model ten oparty jest na następujących równaniach<br />
zachowania masy i pędu, czyli<br />
q ,t +<br />
( ) q<br />
2<br />
ϱ<br />
,x<br />
ϱ ,t + q ,x = s i − s e , (23)<br />
+ auϱ ,x − aq ,x = γϱ + (s i − s e ) q ϱ . (24)<br />
23
Tutaj ϱ jest gęstością pojazdów, a q ich pędem, a jest dodatnim czynnikiem,<br />
który wyraża intensywność reakcji kierowców na zmianę warunków jazdy z<br />
przodu pojazdów, s i i s e oznaczają ilość samochodów na jednostkę długości<br />
wjeżdżających i zjeżdżających z drogi a γ jest przyspieszeniem pojazdu.<br />
3.5.1 Zalecane ćwiczenia<br />
Z wykorzystaniem gotowego programu <strong>numeryczne</strong>go zalecamy wykonanie<br />
następujących eksperymentów numerycznych:<br />
1. zapoznanie się z modelem ruchu drogowego wprowadzonym przez Guinota<br />
(2003) i z programem numerycznym “Traffic.for”<br />
2. wykonanie symulacji odpowiadających włączeniu sygnalizacji świetlnej<br />
czerwonej<br />
3. wykonanie symulacji odpowiadających włączeniu sygnalizacji świetlnej<br />
zielonej<br />
3.6 Przepływ płynu w rurach<br />
3.6.1 Równanie przemysłu naftowego<br />
Rozpatrzmy płyn składający się z dwóch faz przepływających w ośrodku<br />
porowatym. Za klasyczny przykład może posłużyć nam proces pozyskiwania<br />
ropy naftowej poprzez wpompowywanie wody do złoża ropy naftowej, z<br />
którego ropa była już pozyskana w tradycyjny sposób. Pozostałości ropy naftowej<br />
w takim złożu wydobywa się poprzez wpompowanie pod dużym ciśnieniem<br />
wody w uprzednio przygotowane studnie. Rozważmy jedno-wymiarowy<br />
model oddziaływania wody z ropą naftową. Niech q(x, t) oznacza stopień nasycenia<br />
(ang. saturation) wody, czyli iloraz objętości zajmowanej przez wodę<br />
24
do objętości ośrodka porowatego (ang. pore). Oczywiste jest, że 0 ≤ q ≤ 1.<br />
Wtedy 1 − q(x, t) odpowiada stopniowi nasycenia ropy naftowej.<br />
Buckley i Leverett zaproponowali w 1942 roku model oddziaływania wody<br />
i ropy naftowej wprowadzając strumień wody:<br />
i strumień ropy naftowej<br />
f w (q) = V d<br />
q 2<br />
q 2 + a(1 − q) 2 (25)<br />
f r (q) = V d<br />
a(1 − q) 2<br />
q 2 + a(1 − q) 2 . (26)<br />
Tutaj 0 < a < 1 jest stałym parametrem a V d jest tzw. prędkością Darcy’ego<br />
zdefiniowaną jako prędkość wody w ośrodku porowatym.<br />
Z uwagi na zależność<br />
f w (q) + f r (q) = 1 (27)<br />
musimy rozwiązać tylko jedno równanie zachowania dla np. ropy naftowej,<br />
czyli<br />
q ,t + (f r (q)) ,x = 0 . (28)<br />
Zwróćmy uwagę, że w powyższym równaniu f r ,qq może osiągać wartości<br />
zarówno ujemne, dodatnie i zero. Dla takiego przypadku mówimy, że strumień<br />
f r jest niewypukły. Fakt ten ma swoje konsekwencje w numerycznych<br />
metodach rozwiązywania równania przemysłu naftowego. Szczegóły można<br />
znaleźć w monografiach LeVeque’a (2002), Guinota (2003) i Trangensteina<br />
(2008).<br />
3.6.2 Zalecane eksperymenty <strong>numeryczne</strong><br />
Z wykorzystaniem gotowego programu <strong>numeryczne</strong>go wykonajmy kilka<br />
eksperymentów numerycznych naśladujących proces wydobycia ropy naftowej<br />
poprzez wpompowanie wody.<br />
25
3.6.3 Równania wodnego młota<br />
Termin wodnego młota (ang. water hammer) oznacza <strong>zjawisk</strong>a związane<br />
z gwałtowną zmianą ciśnienia zachodzącą w układzie rur. Zmiany te wywołane<br />
są działaniem zaworów, pomp i turbin. W czasie tych <strong>zjawisk</strong> woda i<br />
rury poddane są działaniu wysokich ciśnień. Mała ściśliwość wody i elastyczność<br />
rur powoduje, że fale ciśnieniowe biegną od miejsca ich generacji do<br />
odległych obszarów systemu rur. Typowa prędkość tych fal wynosi około 1<br />
km/s. Zmiany ciśnienia mogą osiągnąć nawet wartość 10 6 Pa, co odpowiada<br />
ciśnieniu hydrostatycznemu kolumny wody o wysokości 100 m. Po odbiciu<br />
fal ciśnienie może spaść do bardzo małych wartości prowadząc do <strong>zjawisk</strong>a<br />
kawitacji. Kawitacja jest <strong>zjawisk</strong>iem polegającym na gwałtownej przemianie<br />
fazowej z fazy ciekłej w fazę gazową pod wpływem zmiany ciśnienia. Jeżeli<br />
płyn gwałtownie przyśpiesza zgodnie z zasadą zachowania energii, ciśnienie<br />
statyczne cieczy musi zmaleć. Dzieje się tak np. w wąskim otworze przelotowym<br />
zaworu. W wyniku tego pojawiają się małe prędkości przepływu (rzędu<br />
kilku metrów na sekundę). Tarcie jest wtedy małe a fale mogą doznawać wielokrotnych<br />
odbić od różnych części systemu rur zanim ich amplituda znacznie<br />
się zmniejszy. Te wielokrotne odbicia mogą powodować nakładanie się kilku<br />
fal, które prowadzą do dużych lokalnych maksimów w ciśnieniu. Zjawiska te<br />
powstają w skali czasu milisekund i mogą one powodować duże zniszczenia<br />
systemu rur.<br />
Równania wodnego młota możemy wyprowadzić z prawa zachowania masy<br />
i pędu. Dla rury o stałym przekroju równania te zapiszemy następująco (Guinot<br />
2003):<br />
q m ,t +<br />
(<br />
Ap + q2 m<br />
µ<br />
µ ,t + q m ,x = 0 , (29)<br />
)<br />
,x<br />
26<br />
= −f d |u|u , (30)
gdzie A jest polem przekroju rury, f d oznacza współczynnik tarcia (który<br />
zależy od szorstkości rury i lepkości płynu w rurze), p jest ciśnieniem gazu,<br />
q m jest zaburzoną gęstością pędu (zaburzonym strumieniem masy) płynu, u<br />
jest prędkością płynu a µ oznacza gęstość liniową płynu wyrażoną jako masę<br />
płynu przypadającą na jednostkę długości rury. Oznaczając gęstość płynu<br />
przez ϱ możemy napisać<br />
µ = ϱA , (31)<br />
q m = µu = ϱAu . (32)<br />
Człon źródłowy w równaniu (30) wyraża fakt, że dyssypacja energii spowodowana<br />
turbulencją jest proporcjonalna do kwadratu prędkości. Znak minus<br />
w tym członie oznacza, że siła tarcia ma przeciwny zwrot niż prędkość<br />
przepływu.<br />
Prędkość fal ciśnieniowych c w przypadku przekroju kołowego rury możemy<br />
wyrazić następująco:<br />
c =<br />
κ f<br />
(<br />
1 +<br />
κ f D<br />
Ee<br />
) , (33)<br />
gdzie D jest średnicą rury, e jest jej grubością, E oznacza moduł Younga<br />
materiału, z którego wykonana jest rura a κ f jest ściśliwością płynu w rurze.<br />
3.6.4 Zalecane eksperymenty <strong>numeryczne</strong><br />
1. z wykorzystaniem przygotowanego programu <strong>numeryczne</strong>go wykonajmy<br />
kilka symulacji numerycznych <strong>zjawisk</strong> opisanych równaniami wodnego<br />
młota (29) i (30)<br />
2. zapoznajmy się z programem i dokonajmy wizualizacji danych numerycznych<br />
27
3. <strong>symulacje</strong> <strong>numeryczne</strong> mogą polegać na generowaniu lokalnych zaburzeń<br />
w gęstości masy lub prędkości i śledzeniu ewolucji zaburzeń w<br />
czasie<br />
3.7 Model plazmy - równania idealnej magnetohydrodynamiki<br />
Termin plazma został wprowadzony przez Tonksa i Langmuir’a (1929) w<br />
czasie ich badań nad oscylacjami elektrycznych wyładowań w gazach. Plazma<br />
może być wytworzona termicznie. Wyobraźmy sobie następujący eksperyment.<br />
Dostarczajmy energii na sposób ciepła ciału stałemu, np. lodowi.<br />
Wskutek tego lód doznaje przejścia fazowego do nowego stanu, który jest<br />
cieczą. Jeżeli będziemy nadal podgrzewać ciecz, ulegnie ona wyparowaniu<br />
i stanie się gazem. Dodatkowe dostarczanie energii doprowadzi do jonizacji<br />
cząsteczek pary wodnej. Przy odpowiednio wysokiej temperaturze, która<br />
zwykle przewyższa 10 5 K, większość materii będzie znajdowała się w stanie<br />
zjonizowanym - zwanym plazmą. Plazma może istnieć w temperaturze niższej<br />
niż 10 5 , jeżeli istnieje mechanizm jonizujący gaz i jeżeli gęstość masy jest<br />
dostatecznie mała, aby rekombinacja nie była zbyt intensywna.<br />
W przeciwieństwie do konwencjonalnych gazów, takich jak większość płynów,<br />
plazma może przewodzić prąd elektryczny. Ponieważ plazma zachowuje<br />
się inaczej niż materia w innych stanach skupienia, plazma jest często nazywana<br />
czwartym stanem skupienia. Nazwa ta była wprowadzona przez Crookes’a<br />
(1879) w celu opisu zjonizowanego ośrodka wytworzonego w czasie<br />
wyładowań elektrycznych w gazie.<br />
Ze względu na niską temperaturę i wysoką gęstość plazma w warunkach<br />
zmienskich nie występuje w stanie naturalnym. Plazmę możemy jednak znaleźć<br />
w świetle fluorescencyjnym i być może w mniej znanych miejscach takich<br />
28
jak w pobliżu powierzchni lądujących statków kosmicznych. Plazma istnieje<br />
także w górnych warstwach atmosfery ziemskiej (zwanej jonosferą), gdzie<br />
powstaje ona wskutek fotojonizacji rozrzedzonego gazu. Plazma dociera do<br />
Ziemi ze Słońca w postaci wiatru słonecznego, który składa się głównie z protonów<br />
i elektronów i wypełnia ośrodek międzyplanetarny. Przypuszcza się,<br />
że aż 99.9 % wszechświata składa się z plazmy.<br />
Wiele <strong>zjawisk</strong> w plazmie opisywanych jest rówananiami Maxwell’a (np.<br />
Dendy 1990), które mogą być zapisane następująco:<br />
∇ · B = 0 , (34)<br />
∇ · E = q ε , (35)<br />
1<br />
µ ∇ × B = εE ,t + j , (36)<br />
∇ × E = −B ,t . (37)<br />
W celu wyeliminowania natężenia pola magnetycznego H i przesunięcia elektrycznego<br />
D, w równaniach tych użyliśmy<br />
B = µH , (38)<br />
D = εE . (39)<br />
Tutaj E oznacza pole elektryczne, q jest gęstością ładunku, µ i ε są odpowiednio<br />
przenikalnością magnetyczną i stałą elektryczną. Dla próżni wielkości te<br />
osiągają odpowiednio wartości µ = 4π · 10 −7 H/m i ε ≃ 8.854 · 10 −12 F/m.<br />
Symbol j oznacza gęstość prądu, określonej prawem Ohma<br />
j = σ(E + v × B) . (40)<br />
Tutaj σ oznacza współczynnik przewodnictwa elektrycznego.<br />
Równania Maxwella mają fizyczną interpretację. Równanie (34) stanowi<br />
warunek braku monopoli magnetycznych, podczas gdy równanie (35) i prawo<br />
29
Faradaya (37) zakłada, że pole elektryczne może być generowane poprzez<br />
ładunki elektryczne lub zmienne w czasie pole magnetyczne. Prawo Ampera<br />
(36) natomiast stanowi, że prąd elektryczny lub zmienne w czasie pole<br />
elektryczne może generować pole magnetyczne.<br />
3.7.1 Model kinetyczny plazmy<br />
Istnieją przypadki w geofizyce (np. Shizgal, Hubert 1989) i fizyce przestrzeni<br />
kosmicznej (Shizgal, Blackmore 1986), w których średnia droga swobodna<br />
cząsteczek (zdefiniowana jako średnia odległość jaką przebywa cząsteczka<br />
między zderzeniami) jest porównywalna lub większa niż lokalna skala<br />
przestrzenna. W tych przypadkach plazma jest tak rozrzedzona, że równania<br />
płynowe nie stanowią już dobrego opisu i teoria kinetyczna jest niezbędna.<br />
Rozważmy plazmę, której i-ty składnik, posiada ładunek elektryczny e i ,<br />
masę m i , gęstość liczbową n i , prędkość v i i temperaturę T i . Procesy kinetyczne<br />
charakteryzują się skalami czasowymi, które są związane z częstością<br />
plazmową,<br />
i częstością cyklotronową,<br />
ω i =<br />
√<br />
ni e 2 i<br />
εm i<br />
, (41)<br />
Ω i = |e i|B<br />
m i<br />
, (42)<br />
gdzie B jest wartością indukcji pola magnetycznego. W skrócie, indukcję<br />
pola magnetycznego będziemy nazywać polem magnetycznym. Skala długości<br />
określona jest tymi częstościami i odpowiednimi prędkościami. Skale te to:<br />
a) długość Debye’a<br />
Tutaj k B jest stałą Boltzmanna;<br />
λ Di =<br />
√<br />
εkB T<br />
n i e 2 i<br />
. (43)<br />
30
) termiczny promień żyroskopowy<br />
r ti = c i<br />
Ω i<br />
(44)<br />
z prędkością dźwięku<br />
c) promień żyroskopowy<br />
d) długość inercyjna<br />
c i =<br />
√<br />
kB T i<br />
m i<br />
; (45)<br />
r di = v i<br />
Ω i<br />
; (46)<br />
λ i = c ω i<br />
. (47)<br />
Kinetyczny (płynowy) opis plazmy jest wymagany wtedy, kiedy powyższe<br />
skale są większe niż lub porównywalne do (mniejsze od) skal <strong>zjawisk</strong>a fizycznego.<br />
Istnieje też reżim pośredni, dla przykładu, kiedy efekty kinetyczne są<br />
istotne wzdłuż równowagowego pola magnetycznego a są one zaniedbywalne<br />
w kierunku prostopadłym. W innym przypadku różne składniki plazmy mogą<br />
być traktowane w różny sposób. W opisie hybrydowym jedne składniki są<br />
opisane równaniami kinetycznymi a inne potraktowane są jako płyn.<br />
Stan gazowy może być opisany z wykorzystaniem funkcji dystrybucji dla<br />
różnych składników. Dla odpowiednio rozrzedzonych gazów jedna funkcja<br />
dystrybucji f(v, r, t) jest zwykle wystarczająca przy założeniu, że nie ma<br />
korelacji między dwiema cząstkami. Funkcja dystrybucji jest zdefiniowana<br />
jako wielkość<br />
f(v, r, t)dv dr , (48)<br />
która równa jest ilości cząsteczek o prędkości zawartej w przedziale < v, v +<br />
dv > i znajdujących się w przestrzeni < r, r+dr > w czasie t. Dystrybucja ta<br />
zależy od siedmiu argumentów: trzech składowych prędkości, trzech składowych<br />
wektora położenia r i czasu t. Zredukowanie tej liczby argumentów jest<br />
31
zwykle wymagane, aby uczynić problem możliwym do rozważania. Redukcję<br />
osiąga się poprzez wyrażenie dystrybucji za pomocą momentów.<br />
Pierwszym momentem jest gęstość liczbowa<br />
∫<br />
n(r, t) = f(v, r, t)dv . (49)<br />
Stąd gęstość masy ϱ jest<br />
ϱ(r, t) = m n(r, t) , (50)<br />
gdzie m jest masą cząstki. Mikroskopowy opis odnosi się do f(v, r, t), podczas<br />
gdy w opisie makroskopowym używamy ϱ(r, t).<br />
Zjawiska kinetyczne opisane są równaniem Własowa (np. Dendy 1990,<br />
Nocera, Mangeney 1999),<br />
f i ,t + v · ∇f i + e i<br />
m i<br />
[E + (v × B)] · f i ,v = 0 , (51)<br />
gdzie f i (r, v) oznacza funkcję dystrybucji i-tego składnika plazmy. Pole elektryczne<br />
E i magnetyczne B opisane są równaniami Maxwella, które zawierają<br />
człony źródłowe powstałe z momentów wszystkich składników plazmy, tj.<br />
∇ × E = −B ,t , (52)<br />
1<br />
µ ∇ × B = ∑ ∫<br />
e i<br />
i<br />
f i vdv + εE ,t , (53)<br />
∇ · B = 0 , (54)<br />
ε∇ · E = ∑ ∫<br />
e i<br />
i<br />
f i dv . (55)<br />
Aby jakościowo ocenić znaczenie równań (52)-(54) ważne jest, abyśmy<br />
zdecydowali, który rodzaj pola elektromagnetycznego dominuje. Dla silnego<br />
pola magnetycznego możemy zaniedbać zaburzenia w polu magnetycznym<br />
w całym zakresie częstości badanego <strong>zjawisk</strong>a. W tym przypadku fluktuacje<br />
gęstości ładunku elektrycznego są ważne a pole elektrostatyczne ewoluuje<br />
32
zgodnie z równaniem (55). Zarówno jony jak i elektrony są często traktowane<br />
w tym przypadku kinetycznie z odpowiednimi skalami przestrzennymi<br />
i czasowymi, równymi odpowiednio elektronowej długości Debye’a i odwrotności<br />
elektronowej częstości plazmowej. Dla częstości mniejszych niż jonowa<br />
częstość plazmowa elektrony są traktowane adiabatycznie z gęstością cząsteczkową,<br />
n e = n e0 exp<br />
Tutaj φ jest potencjałem elektrostatycznym takim, że<br />
( ) |e|φ<br />
. (56)<br />
k B T e<br />
E = −∇φ (57)<br />
i n e0 jest równowagową gęstością elektronów. Zaburzenia, które spełniają ten<br />
warunek, nazywane są elektrostatycznymi.<br />
Dla skończonych wartości pola magnetycznego istnieje wiele obszarów,<br />
które możemy sklasyfikować w zależności od częstości fali w porównaniu z<br />
cyklotronową częstością elektronu Ω e . Dla częstości o wiele większych niż Ω e<br />
zarówno elektrostatyczne i elektromagnetyczne oscylacje są istotne w plazmie.<br />
Oscylacje te są zwykle słabo sprzężone. Do opisu elektrostatycznych<br />
oscylacji możemy zastosować przybliżenie elektrostatyczne. Jeśli interesują<br />
nas fale elektromagnetyczne, musimy rozwiązać równania Maxwella.<br />
Dla częstości bliskich Ω e , określonej równaniem (42), dynamika elektronów<br />
musi być także uwzględniona. Jednakże dla odpowiednich skal czasowych<br />
jony muszą być potraktowane jako niemobilny płyn. Dla Ω io < ω < Ω e zarówno<br />
dynamika elektronów i jonów oraz fale elektromagnetyczne muszą być<br />
uwzględnione. Tutaj Ω io jest cyklotronową częstością jonu. W przypadku gdy<br />
ω < Ω io , elektrony mogą być potraktowane jako bezmasowy płyn. Wtedy zamiast<br />
równania (55) zastosujemy równanie zachowania pędu elektronu do<br />
określenia pola elektrycznego.<br />
33
3.7.2 Przybliżenie quasi-cząstkowe<br />
Równania (52)-(54) sprawiają duży kłopot przy próbie ich analitycznego<br />
rozwiązania i dlatego zwykle niezbędne jest ich <strong>numeryczne</strong> rozwiązanie (np.<br />
Klimas 1987), w którym f i przybliżamy pewną liczbą quasi-cząstek. Wtedy<br />
rozwiązujemy równanie Własowa metodą charakterystyk (np. Tanaka 1993).<br />
Kolektywne zachowanie płynu możemy otrzymać poprzez uśrednienie po<br />
quasi-cząstkach, których liczba N jest zawsze mniejsza niż rzeczywista liczba<br />
cząstek w układzie (np. Book 1981, Brackbill 1991). Położenie quasi-cząstek<br />
możemy znaleźć w wyniku rozwiązania równań trajektorii, tj.<br />
dr i<br />
dt = v i(t), i = 1, 2, · · · , N . (58)<br />
Tutaj v i oznacza prędkość quasi-cząstki o numerze i. Prędkość tą możemy<br />
określić z drugiej zasady dynamiki Newtona,<br />
m i<br />
dv i<br />
dt = F i({r l }, {v l }, t), l = 1, 2, · · · , N, l ≠ i , (59)<br />
gdzie siła F i działająca na i-tą quasi-cząstkę zależy od położeń {r l } i prędkości<br />
{v l } pozostałych cząstek.<br />
Gęstość masy ϱ możemy znaleźć w wyniku uśrednienia, na ogół przy<br />
użyciu funkcji wagowej uwzględniającej skończone rozmiary cząstek, tj.<br />
ϱ(r i ) =< ∑ j<br />
m j δ(r j − r i ) > . (60)<br />
Tutaj dokonujemy sumowania po masach m j wszystkich cząstek j, które znajdują<br />
się w pobliżu i-tej cząstki. Podobnie gęstość pędu ϱv możemy określić<br />
w wyniku zsumowania pędów cząstek, tj.<br />
ϱv(r i ) =< ∑ j<br />
m j v j δ(r j − r i ) > . (61)<br />
Dla dużej liczby cząstek wygodnie jest wprowadzić potencjał φ taki, że<br />
F i = −∇φ(r i ) . (62)<br />
34
Przybliżenia quasi-cząstkowego możemy używać do <strong>numeryczne</strong>go rozwiązania<br />
równań. Jednakże przybliżenie to jest kłopotliwe dla płynów nieściśliwych,<br />
dla których warunek ∇ · v = 0 jest trudnym do spełnienia. Quasicząstki<br />
nie mogą przenikać przez siebie. Czasem błędy <strong>numeryczne</strong> związane<br />
ze skończonym krokiem czasowym mogą doprowadzić do niefizycznego<br />
przenikania cząstek. Metody <strong>numeryczne</strong> są zwykle stabilne i spełniają warunki<br />
dodatniości gęstości masy i ciśnienia oraz spełniają prawa zachowania.<br />
W konsekwencji ograniczonej mocy komputerów i skończonej liczby quasicząstek<br />
metody <strong>numeryczne</strong> mogą być mało dokładne i efektywne.<br />
3.7.3 Przybliżenie magnetohydrodynamiczne<br />
Wyprowadzenie równań opisujących dynamikę plazmy rozpoczyna się od<br />
równania Boltzmann’a, które opisuje zachowanie cząstek plazmy (np. Shizgal,<br />
Hubert 1989). Obliczając momenty tego równania ze wględu na prędkość, ładunek<br />
elektryczny itd. możemy otrzymać różne równania dla cząstek płynu<br />
takie, jak pęd i gęstość ładunku elektrycznego. Do równań tych musimy dołączyć<br />
równania Maxwella (34)–(37).<br />
Z równania (37) otrzymamy<br />
E<br />
l<br />
∼ B τ , (63)<br />
gdzie l jest charakterystyczną skalą długości w plazmie i τ jest charakterystyczną<br />
skalą czasu. Porównując dwa człony stające po prawej stronie równania<br />
(36) znajdziemy, że<br />
εE ,t El<br />
1<br />
∼ εµ<br />
|∇ × B|<br />
µ<br />
τB = 1 El<br />
c 2 τB , (64)<br />
gdzie c jest prędkością światła. Z wykorzystaniem równania (63) powyższy<br />
iloraz możemy zapisać jako<br />
1<br />
c 2 l 2<br />
τ 2 .<br />
35
Od tej chwili opuścimy człon −εE ,t w równaniu (36). Jest to usprawiedliwione,<br />
jeśli charakterystyczna prędkość l/τ, z którą rozpatrywane zdarzenie<br />
w plazmie ma miejsce, jest mniejsza niż prędkość światła c. Wtedy równanie<br />
(36) możemy zapisać w następującej postaci:<br />
j ≃ 1 ∇ × B. (65)<br />
µ<br />
Warto wspomnieć, że równanie (35) nie jest wymagane w dalszej analizie,<br />
ponieważ równanie to zawiera ładunek elektryczny q, który nie jest obecny w<br />
innych równaniach. Co więcej, z wykorzystaniem prawa Ohma (40), równanie<br />
indukcji (37) możemy zapisać jako<br />
B ,t = ∇ × (v × B) − ∇ × (η∇ × B) , (66)<br />
gdzie współczynnik dyfuzyjności magnetycznej (rezystywności)<br />
η = 1<br />
µσ . (67)<br />
Działając operatorem dywergencji na równanie (66) otrzymamy<br />
(∇ · B) ,t = 0 . (68)<br />
Z równania tego wnioskujemy, że prawo zachowania strumienia magnetycznego,<br />
tj.<br />
∇ · B = 0 , (69)<br />
musimy zadać jako konieczny warunek początkowy (dla czasu t = 0).<br />
Równania magnetohydrodynamiki stanowią połączenie równań Eulera i<br />
równań Maxwella przy założeniu, że plazma jest potraktowana jako jednolity<br />
płyn, efekty relatywistyczne są zaniedbane, większość właściwości plazmy<br />
przyjęta jest za izotropowe, prądy przesunięcia i przemieszczenia między jonami<br />
i elektronami są zaniedbane oraz interesuje nas dynamika plazmy zachodząca<br />
z dużymi skalami czasowymi (np. Priest 1982). Równanie pędu<br />
36
zawiera dodatkowy człon, który pochodzi z siły Lorentza j × B, tj.<br />
(ϱv) ,t<br />
+ ∇ · ((ϱv) v) = −∇p + j × B . (70)<br />
Pole magnetyczne zmienia równanie energii, które możemy zapisać w postacie<br />
zachowawczej jako<br />
(<br />
E ,t + ∇ ·<br />
Tutaj gęstość energii całkowitej E jest<br />
(E + p + B2<br />
2µ )v − 1 µ B(v · B) )<br />
= 0 . (71)<br />
E =<br />
p<br />
γ − 1 + ϱv2<br />
2 + B2<br />
2µ . (72)<br />
Trzy człony po prawej stronie powyższego równania opisują odpowiednio w<br />
kolejności gęstość energii wewnętrznej, kinetycznej i magnetycznej. Iloraz ciepeł<br />
właściwych γ = c p /c V jest taki, że γ = (m+2)/m, gdzie m oznacza liczbę<br />
stopni swobody molekuł płynu, c p i c V<br />
są ciepłami właściwymi odpowiednio<br />
przy stałym ciśnieniu i stałej objętości. Dla płynu składającego się z atomów<br />
m = 3, podczas gdy dla cząsteczek dwu-atomowych m = 5.<br />
W podsumowaniu, równania idealnej magnetohydrodynamiki (MHD) stanowią<br />
następujący układ:<br />
∂ϱ<br />
+ ∇ · (ϱv) = 0 ,<br />
∂t<br />
(73)<br />
ϱ ∂v<br />
∂t + ϱ (v · ∇) v = −∇p + 1 (∇ × B) × B + ϱg ,<br />
µ<br />
(74)<br />
∂B<br />
= ∇ × (v × B) ,<br />
∂t<br />
(75)<br />
∇ · B = 0 , (76)<br />
∂p<br />
+ ∇ · (pv) = (1 − γ)p∇ · v ,<br />
∂t<br />
(77)<br />
p = k B<br />
ϱT . (78)<br />
m<br />
Tutaj ϱ jest gęstością masy, v = [u, v, w] jest prędkością, B oznacza indukcję<br />
pola magnetycznego, p jest ciśnieniem, g oznacza wektor przyspieszenia gra-<br />
37
witacyjnego, T jest temperaturą, m jest masą główną cząstki a k B oznacza<br />
stałą Boltzmanna.<br />
3.7.4 Obraz Lagrange’a<br />
jako<br />
W obrazie Lagrange’a równania magnetohydrodynamiki możemy zapisać<br />
dϱ<br />
dt<br />
= −∇ · (ϱv) , (79)<br />
ϱ dv<br />
dt = −∇p + 1 (∇ × B) × B ,<br />
µ<br />
(80)<br />
dB<br />
= (B · ∇)v − B∇ · v ,<br />
dt<br />
(81)<br />
∇ · B = 0 , (82)<br />
dp<br />
= −γp∇ · v .<br />
dt<br />
(83)<br />
Tutaj pochodna Lagrange’a jest zdefiniowana następująco:<br />
3.7.5 Przybliżenie nieściśliwe<br />
Dla plazmy nieściśliwej mamy<br />
d<br />
dt = ∂ ∂t + v · ∇ . (84)<br />
γ → ∞ , ∇ · v → 0 (85)<br />
tak, że<br />
dp<br />
= −γp∇ · v (86)<br />
dt<br />
pozostaje skończone. Wtedy z równań (79)-(83) otrzymamy<br />
dϱ<br />
= 0,<br />
dt<br />
(87)<br />
ϱ dv<br />
dt = −∇p + 1 (∇ × B) × B,<br />
µ<br />
(88)<br />
dB<br />
= (B · ∇)v,<br />
dt<br />
(89)<br />
∇ · B = ∇ · v = 0 . (90)<br />
38
3.7.6 Przybliżenie plazmy zimnej<br />
W przybliżeniu plazmy zimnej człony zawierające ciśnienie są zaniedywalnie<br />
małe w porównaniu z członami magnetycznymi i mogą być zastąpione<br />
zerami. Równania plazmy zimnej przyjmą wtedy następującą postać:<br />
ϱ ,t + ∇ · (ϱv) = 0 , (91)<br />
ϱv ,t + ϱ(v · ∇)v = 1 (∇ × B) × B ,<br />
µ<br />
(92)<br />
B ,t = ∇ × (v × B) , (93)<br />
∇ · B = 0 . (94)<br />
3.8 Równania Eulera<br />
Gaz (taki jak np. powietrze) składa się z dużej liczby molekuł. Ruch każdej<br />
z nich może być śledzony indywidualnie. Taki opis nazywa się opisem cząstkowym<br />
i prowadzi on do dużej liczby zwyczajnych równań różniczkowych.<br />
Powstały układ tych równań jest zbyt duży do rozwiązania nawet metodami<br />
komputerowymi. Zamiast opisu cząstkowego stosowany jest opis makroskopowy.<br />
W opisie tym szczególnego znaczenia nabierają wielkości takie, jak:<br />
gęstość masy ϱ, prędkość plazmy v i ciśnienie. Wszystkie te wielkości mogą<br />
być mierzone doświadczalnie. Stosownymi prawami zachowania są:<br />
• Prawo zachowania masy. Prawo to jest bardzo dobrze znane w dynamice<br />
cieczy jako, że odzwierciedla ono fakt, że całkowita masa gazy<br />
pozostaje zachowana. Matematycznie prawo to zapisujemy w następującej<br />
postaci:<br />
ϱ ,t + ∇ · (ϱv) = 0 . (95)<br />
• Prawo zachowania pędu. Z drugiej zasady dynamiki Newtona wynika,<br />
że zmianę pędu można dokonać poprzez przyłożenie siły. W przypadku<br />
39
aku sił zewnętrznych ciśnienie gazu jest jedyną działającą siłą na gaz.<br />
W rezultacie otrzymujemy prawo zachowania<br />
(ϱv) ,t + ∇ · (ϱv ⊗ v) + ∇p = 0 . (96)<br />
Symbol ⊗ oznacza mnożenie tensorowe, tj. dla dwóch dowolnych wektorów<br />
a = [a 1 , a 2 , a 3 ] i b = [b 1 , b 2 , b 3 ] mamy<br />
⎡<br />
⎤<br />
a 1 b 1 a 1 b 2 a 1 b 3<br />
a ⊗ b =<br />
⎢ a 2 b 1 a 2 b 2 a 2 b 3<br />
. (97)<br />
⎥<br />
⎣<br />
⎦<br />
a 3 b 1 a 3 b 2 a 3 b 3<br />
Zauważmy, że powyższe prawo zachowania oznacza, że pochodna substancjalna<br />
(śledcza) gęstości pędu jest zrekompensowana gradientem<br />
ciśnienia. Wynika to z obserwacji, że gaz płynie z obszaru o wysokim<br />
ciśnieniu do obszaru o niskim ciśnieniu.<br />
• Prawo zachowania energii. Całkowita energia gazu składa się z energii<br />
kinetycznej i wewnętrznej (potencjalnej). Gęstość energii kinetycznej<br />
wyraża się standardowo, tj.<br />
E k = 1 2 ϱv2 , (98)<br />
podczas gdy energia wewnętrzna jest zdeterminowana równaniem stanu.<br />
Dla równania gazu doskonałego gęstością energii wewnętrznej jest<br />
E i =<br />
W rezultacie gęstość energii całkowitej jest<br />
E =<br />
p<br />
γ − 1 . (99)<br />
p<br />
γ − 1 + 1 2 ϱv2 . (100)<br />
Prawo zachowania energii wyraża się wtedy następująco:<br />
E ,t + ∇ · [(E + p)v] = 0 . (101)<br />
40
Powyższe prawa zachowania możemy napisać w postaci zbiorczej, tj.<br />
ϱ ,t + ∇ · (ϱv) = 0 , (102)<br />
(ϱv) ,t + ∇ · (ϱv ⊗ v + pI) = 0 , (103)<br />
E ,t + ∇ · [(E + p)v] = 0 , (104)<br />
gdzie I oznacza jednostkową macierz o wymiarze 3 × 3. Powyższy układ równań<br />
służy jako przykład wielo-wymiarowych nieliniowych praw zachowania<br />
stosowanych w fizyce technicznej.<br />
Równania Eulera możemy bezpośrednio uzyskać z równań MHD (73)-<br />
(78). W przypadku braku pola magnetycznego, B = 0, z równań tych otrzymamy<br />
równania Eulera, które zapiszemy w formie zachowawczej jako<br />
q ,t + f(q) ,x + g(q) ,y + h(q) ,z = 0 , (105)<br />
⎡<br />
q =<br />
⎢<br />
⎣<br />
ϱ<br />
ϱu<br />
ϱv<br />
ϱw<br />
E<br />
⎤ ⎡<br />
, f =<br />
⎥ ⎢<br />
⎦ ⎣<br />
ϱu<br />
ϱu 2 + p<br />
ϱuv<br />
ϱuw<br />
u(E + p)<br />
⎤ ⎡<br />
, g =<br />
⎥ ⎢<br />
⎦ ⎣<br />
ϱv<br />
ϱvu<br />
ϱv 2 + p<br />
ϱvw<br />
v(E + p)<br />
⎤ ⎡<br />
, h =<br />
⎥ ⎢<br />
⎦ ⎣<br />
ϱw<br />
ϱwu<br />
ϱwv<br />
ϱw 2 + p<br />
w(E + p)<br />
⎤<br />
.(106)<br />
⎥<br />
⎦<br />
Zauważmy, że dokonaliśmy wyprowadzenie równań Eulera w sposób bardzo<br />
skrócony. Szczegóły wyprowadzenie można znaleźć w podręcznikach.<br />
Podczas wyprowadzenia zaniedbaliśmy lepkość i przewodnictwo cieplne. Człony<br />
te będą obecne w równaniach Naviera-Stokse’a, które przedstawimy w<br />
następnym rozdziale.<br />
3.9 Równania Naviera-Stokes’a<br />
Równania Naviera-Stokes’a były otrzymane w pierwszej połowie dziewiętnastego<br />
wieku (dokładnie w 1845 r.) niezależnie przez francuzkiego badacza<br />
41
M. Naviera i angielskiego naukowca G. Stokes’a. We współrzędnych kartezjańskich<br />
i dla dwu-wymiarowego przepływu, w którym współrzędna z jest<br />
zignorowana, tj. ∂/∂z = 0, równania Naviera-Stokes’a możemy zapisać w<br />
postaci praw zachowania (7), tzn.<br />
⎛ ⎞ ⎛<br />
⎞<br />
ϱ<br />
ϱv x<br />
ϱv x<br />
ϱv 2 +<br />
x − τ xx<br />
+<br />
⎜ ϱv y ⎟ ⎜ ϱv x v y − τ xy<br />
⎟<br />
⎝ ⎠ ⎝<br />
⎠<br />
E (E + p)v x − v x τ xx − v y τ xy + q x<br />
,t<br />
,x<br />
⎛<br />
⎞<br />
ϱv y<br />
ϱv y v x − τ yx<br />
⎜ ϱvy 2 = S. (107)<br />
− τ yy<br />
⎟<br />
⎝<br />
⎠<br />
(E + p)v y − v x τ yx − v y τ yy + q y<br />
Tutaj S jest członem źródłowym, v = [v x , v y , 0] a E oznacza całkowitą gęstość<br />
energii taką, że ciśnienie p otrzymamy z następującego równania:<br />
[<br />
p = (γ − 1) E − 1 ]<br />
2 ϱ(v2 x + vy)<br />
2 . (108)<br />
Pod koniec wieku siedemnastego Isaac Newton wykazał, że naprężenie w<br />
płynie τ jest proporcjonalne do gradientu prędkości. Takie płyny nazywamy<br />
newtonowskimi w przeciwieństwie do płynów nie-newtonowskich, takich jak<br />
np. krew, dla których powyższa zależność na τ nie istnieje. Dla płynów newtonowskich<br />
Stokes pokazał, że składowa normalna (τ xx , τ yy ) i składowe styczne<br />
(τ xy , τ yx ) naprężeń mogą być wyrażone następująco:<br />
τ xx = λ∇ · v + 2µv x,x , τ xy = µ(v x,y + v y,x ) ,<br />
τ yx = τ xy , τ yy = λ∇ · v + 2µv y,y . (109)<br />
Tutaj µ jest współczynnikiem lepkości molekularnej a λ jest współczynnikiem<br />
lepkości objętościowej. Składowa normalna naprężenia jest związana ze<br />
42<br />
,y
zmianą objętości elementu płynu, podczas gdy składowe τ xy i τ yx odzwierciedlają<br />
deformację elementu płynu. Stokes dokonał hipotezy, według której<br />
λ = − 2 3 µ . (110)<br />
Ciekawe jest, że powyższy związek jest często używany, ale nie jest ostatecznie<br />
potwierdzony.<br />
Dla gazów przyjmuje się, że współczynnik lepkości µ zmienia się zgodnie<br />
z prawem Sutherlanda<br />
µ = µ 0<br />
( T<br />
T 0<br />
) 3/2<br />
T 0 + 110<br />
T + 110 , (111)<br />
gdzie warunki bez naprężeń oznaczyliśmy dolnym indeksem 0 .<br />
Przepły energii na sposób ciepła wskutek przewodnictwa cieplnego jest<br />
proporcjonalny do lokalnego gradientu temperatury, czyli<br />
q x = −κT ,x , q y = −κT ,y , (112)<br />
gdzie q x is q y są strumieniami energii odpowiednio wzdłuż kierunków x i y,<br />
występującymi w równaniach Naviera-Stokes’a (107).<br />
Tutaj κ jest współczynnikiem przewodnictwa cieplnego. Zakładając, że<br />
liczba Prandtla P r jest stała i znana, otrzymamy wyrażenie na współczynnik<br />
przewodnictwa cieplnego<br />
Powyższy wiązek jest definicją liczby Prandtla.<br />
κ = µc s<br />
P r<br />
. (113)<br />
3.10 Równania płytkiej wody<br />
Równania płytkiej wody możemy otrzymać z równań Eulera przy założeniu,<br />
że pionowa składowa przyspieszenia, Dw/Dt, może być zaniedbana.<br />
Równania te zapiszemy następująco:<br />
q ,t + f(q) ,x + g(q) ,y = s . (114)<br />
43
Tutaj wektor stanu q i człon źródłowy s określimy jako<br />
⎡<br />
q =<br />
⎢<br />
⎣<br />
⎤ ⎡<br />
h<br />
hu<br />
, s =<br />
⎥ ⎢<br />
⎦ ⎣<br />
hv<br />
⎤<br />
0<br />
−ghb ,x<br />
. (115)<br />
⎥<br />
⎦<br />
−ghb ,y<br />
Składowe strumienia [f, g] znajdziemy natomiast z następujących wyrażeń:<br />
⎡<br />
f =<br />
⎢<br />
⎣<br />
⎤ ⎡<br />
hu<br />
hu 2 + 1 2 gh2<br />
, g =<br />
⎥ ⎢<br />
⎦ ⎣<br />
huv<br />
⎤<br />
hv<br />
huv<br />
. (116)<br />
⎥<br />
hv 2 + 1 ⎦<br />
2 gh2<br />
44
4 Wykład 4-6: Metody <strong>numeryczne</strong> dla równania<br />
unoszenia i układów liniowych<br />
W tej części wykładu rozważymy równanie unoszenia i charakterystyki<br />
związane z tym równaniem. Następnie rozważymy problem Cauchy’ego i problem<br />
Riemanna dla tego równania, quasi-liniową formę równań hiperbolicznych<br />
i wartości własne macierzy Jacobiego.<br />
4.1 Zjawisko unoszenia<br />
Niech q(x, t) oznacza gęstość (konecentrację) składnika chemicznego, np.<br />
zanieczyszczenia w rzece. Załóżmy, że woda w rzece płynie z pędkością λ(x, t).<br />
Zanieczyszczenie w rzece będzie transportowane w kierunku prędkości wody<br />
w rzece tak, że strumień masy w tym wypadku jest λq. Załóżmy, że nie<br />
ma produkcji i destrukcji zanieczyszczeń podczas przepływu i wobec tego w<br />
równaniu zachowania masy nie widnieją człony źródłowe. W konsekwencji<br />
prawem zachowania jest<br />
q ,t + (λq) ,x = 0 . (117)<br />
Dla przypadku, kiedy λ = const powyższe równanie nazwiemy równaniem<br />
unoszenia<br />
q ,t + λq ,x = 0 . (118)<br />
Charakterystykami równania (118) nazywamy krzywe x = x(t) w płaszczyźnie<br />
x − t, takie że<br />
Otrzymamy stąd<br />
dx<br />
dt = λ , x(0) = x 0 . (119)<br />
x = x 0 + λt . (120)<br />
Tutaj x 0 jest punktem początkowym (stopą charakterystyki). Patrz rys. 3.<br />
45
Rysunek 3: Charakterystyki dla równania unoszenia. Przypadek λ > 0.<br />
Policzmy teraz zmianę q(x(t), t) wzdłuż danej charakterystyki x = x(t)<br />
dq<br />
dt = q ,t + q ,x<br />
dx<br />
dt = q ,t + λq ,x = 0 . (121)<br />
Wnioskujemy stąd, że wzdłuż charakterystyki x(t) równanie unoszenia staje<br />
się zwyczajnym równaniem różniczkowym ze stałą wartością q(x, t).<br />
Rozważmy teraz problem początkowy dla równania unoszenia<br />
q ,t + λq ,x = 0 , |x| < ∞ , t > 0 , (122)<br />
q(x, t = 0) = q 0 (x) . (123)<br />
Aby rozwiązać ten problem, wybierzmy charakterystykę przechodzącą przez<br />
punkt (x, t) i znajdźmy punkt początkowy, dla którego charakterystyka przecina<br />
oś x. Ponieważ q jest stałe wzdłuż x = x 0 + λt, mamy<br />
q(x, t) = q 0 (x 0 ) = q 0 (x − λt) . (124)<br />
Ćwiczenie: Sprawdźmy, że powyższe wyrażanie stanowi rozwiązanie równania<br />
unoszenia.<br />
46
Klasyczny problem Riemanna jest szczególnym rozwiązaniem problemu<br />
Cauchy’ego, dla którego q(x) zmienia się skokowo w x = 0 (rys. 4),<br />
q(x, 0) =<br />
{ ql , x < 0 ,<br />
q r , x ≥ 0 .<br />
(125)<br />
Znajdziemy rozwiązanie problemu w postaci<br />
q(x, 0) = q 0 (x − λt) =<br />
{ ql , x − λt < 0 ,<br />
q r , x − λt ≥ 0 .<br />
(126)<br />
Rysunek 4: Problem Riemanna dla równania unoszenia w przypadku λ > 0.<br />
Dokonamy teraz dyskusji równania unoszenia z członem źródłowym, s,<br />
q ,t + λq ,x = q ,t + q ,x<br />
dx<br />
dt<br />
47<br />
= s(x, t, q) . (127)
Taki człon źródłowy pojawia się np. w równaniu unoszenia-dyfuzji z s = βq,<br />
gdzie β oznacza współczynnik reakcji. Wzdłuż charakterystyki x = x 0 + λt<br />
otrzymamy<br />
dq<br />
dt = q dx<br />
,t + q ,x<br />
dt<br />
= s(x, t, q) . (128)<br />
Wnioskujemy stąd, że q(x, t) zmienia się wzdłuż charakterystyki x = x 0 + λt.<br />
4.2 Równania liniowe fizyki technicznej<br />
Zapiszmy układ równań liniowych opisujących procesy fizyki technicznej<br />
następująco:<br />
q ,t + Aq ,x = 0 . (129)<br />
Układ ten nazywamy hiperbolicznym, jeśli spełnione są warunki:<br />
• wartości własne macierzy A są rzeczywiste,<br />
• wektory własne A są liniowo niezależne.<br />
Układ nazywamy ściśle hiperbolicznym, jeśli wszystkie rzeczywiste wartości<br />
własne są różne. Powiemy, że układ jest eliptyczny, jeśli żadna z wartości<br />
własnych macierzy A nie jest rzeczywista.<br />
4.3 Quasi-liniowa postać równań fizyki technicznej<br />
Przypomnijmy, że równanie skalarne (np. unoszenia zanieczyszczeń) możemy<br />
zapisać następująco:<br />
q ,t + f(q) ,x = 0 . (130)<br />
Dla różniczkowalnej funkcji strumienia f(q) możemy otrzymać quasi-liniową<br />
postać równania skalarnego, tj.<br />
q ,t + f ,q q ,x = 0 . (131)<br />
48
Stąd znajdziemy charakterystyczną prędkość<br />
Wnioskujemy, że λ w ogólności zależy od q.<br />
λ(q) = f ,q . (132)<br />
Rozważmy teraz układ dwóch 1-wymiarowych równań hiperbolicznych<br />
Tutaj wektor stanu q is strumień f zapiszemy jako<br />
q =<br />
⎡ ⎤<br />
⎢ q 1 ⎥<br />
⎣<br />
q 2<br />
q ,t + f ,x = 0 . (133)<br />
⎦ , f =<br />
⎡<br />
⎢ f 1(q 1 , q 2 )<br />
⎣<br />
f 2 (q 1 , q 2 )<br />
⎤<br />
⎥<br />
⎦ . (134)<br />
Po zastosowaniu “reguły łańcucha” do równania (133) zapisanego w jego składowych,<br />
otrzymamy<br />
q 1,t + f 1,q1 q 1,x + f 1,q2 q 2,x = 0 , (135)<br />
q 2,t + f 2,q1 q 1,x + f 2,q2 q 2,x = 0 . (136)<br />
Powyższe równania zapiszemy w postaci macierzowej jako<br />
⎡ ⎤ ⎡<br />
⎤ ⎡ ⎤<br />
⎢ q 1 ⎥ ⎢<br />
⎣ ⎦ +<br />
f 1,q 1<br />
f 1,q2 ⎥ ⎢ q 1 ⎥<br />
⎣ ⎦ ⎣ ⎦ = q ,t + Aq ,x = 0 , (137)<br />
q 2 f 2,q1 f 2,q2 q 2<br />
,t<br />
,x<br />
gdzie A = ∂f/∂q jest Jacobianem. W tym szczególnym przypadku A jest<br />
macierzą o wymiarze 2 × 2.<br />
4.4 Problem własny dla macierzy Jacobiego<br />
Rozważmy równanie, które jest uogólnieniem równania (137), czyli<br />
q ,t + Aq ,x = 0 , (138)<br />
gdzie A jest macierzą wymiaru m × m.<br />
49
Wartości własne A są pierwiastkami wielomianu charakterystycznego<br />
|A − λ (k) I| = 0 , k = 1, . . . , m . (139)<br />
Lewy wektor własny l (k) macierzy A spełnia następujące równanie:<br />
l (k) A = λ (k) l (k) , k = 1, . . . , m . (140)<br />
Prawy wektor własny r (k) macierzy A jest taki, że<br />
Ar (k) = λ (k) r (k) , k = 1, . . . , m . (141)<br />
4.5 Diagonalizacja układu liniowego<br />
Rozważmy liniowy układ równań hiperbolicznych<br />
q ,t + Aq ,x = 0 , (142)<br />
ze stałą macierzą A o wymiarze m×m, jej wartościami własnymi λ (1) , . . . , λ (m)<br />
i prawymi wektorami własnymi r (1) , . . . , r (m) takimi, że<br />
r (k) = [r (k)<br />
1 , . . . , r (k)<br />
m ] T , k = 1, . . . , m . (143)<br />
Wygodnie jest wprowadzić następujące macierze:<br />
⎡<br />
⎤ ⎡<br />
λ (1) 0 . . . 0<br />
0 λ (2) . . . 0<br />
Λ =<br />
, R =<br />
⎢ . . . . . . . . . . . .<br />
⎥ ⎢<br />
⎣<br />
⎦ ⎣<br />
0 0 . . . λ (m)<br />
Macierz A daje się zdiagonalizować jako<br />
r (1)<br />
1 r (2)<br />
1 . . . r (m)<br />
1<br />
r (1)<br />
2 r (2)<br />
2 . . . r (m)<br />
2<br />
. . . . . . . . . . . .<br />
r m (1) r m (2) . . . r m<br />
(m)<br />
⎤<br />
. (144)<br />
⎥<br />
⎦<br />
A = RΛR −1 , Λ = R −1 AR . (145)<br />
50
Zdefiniujmy wielkości charakterystyczne w następująco:<br />
w = [w 1 , . . . , w m ] T = R −1 q , q = Rw . (146)<br />
Możemy wtedy zapisać układ liniowy jako<br />
q ,t + Aq ,x = Rw ,t + ARw ,x = 0 . (147)<br />
Stąd otrzymamy<br />
R −1 (Rw ,t + ARw ,x ) = w ,t + (R −1 AR)w ,x = w ,t + Λw ,x = 0 . (148)<br />
Powyższe równanie zapiszemy jawnie<br />
⎡<br />
⎢<br />
⎣<br />
⎤<br />
w 1<br />
w 2<br />
. . .<br />
⎥<br />
⎦<br />
w m<br />
,t<br />
⎡<br />
+<br />
⎢<br />
⎣<br />
⎤ ⎡<br />
λ (1) 0 . . . 0<br />
0 λ (2) . . . 0<br />
. . . . . . . . . . . .<br />
⎥ ⎢<br />
⎦ ⎣<br />
0 0 . . . λ (m)<br />
⎤<br />
w 1<br />
w 2<br />
. . .<br />
⎥<br />
⎦<br />
w m<br />
,x<br />
⎡<br />
=<br />
⎢<br />
⎣<br />
0<br />
0<br />
. . .<br />
0<br />
⎤<br />
. (149)<br />
⎥<br />
⎦<br />
W wyniku otrzymaliśmy układ m niesprzężonych równań unoszenia<br />
w i,t + λ (i) w i,x = 0 , i = 1, . . . , m . (150)<br />
Dla m różnych wartości własnych zdefiniujemy m krzywych charakterystycznych<br />
(rys. 5)<br />
dx<br />
dt = λ(i) , x = x 0 + λ (i) t , i = 1, . . . , m . (151)<br />
osi x<br />
Ćwiczenie: Czy mogą istnieć charakterystyki równoległe do osi t lub do<br />
51
Rysunek 5: Charakerystyki liniowego układu równań hiperbolicznych.<br />
4.6 Problem początkowy dla układu liniowego<br />
Zapiszmy problem początkowy (Cauchy’ego) dla liniowego układu równań<br />
hiperbolicznych jako<br />
q ,t + Aq ,x = 0 , (152)<br />
q(x, t = 0) = q 0 (x) . (153)<br />
Tutaj q 0 (x) oznacza stan początkowy układu. Z pomocą równania (148)<br />
możemy problem Cauchy’ego zapisać następująco:<br />
w ,t + Λw ,x = 0 , (154)<br />
w(x, t = 0) = w 0 (x) = R −1 q 0 (x) . (155)<br />
Składowa i-ta powyższego równania to<br />
Wzdłuż charakterystyki, dx/dt = λ (i) , mamy<br />
w i,t + λ (i) w i,x = 0 , (156)<br />
w i (x, t = 0) = w 0 i (x) . (157)<br />
w i,t + λ (i) w i,x = dw i<br />
dt = 0 . (158)<br />
52
Rozwiązaniem tego równania jest<br />
w i (x, t) = w 0 i (x − λ (i) t) , i = 1, 2, . . . , m . (159)<br />
Stąd otrzymamy<br />
⎡<br />
w(x, t) =<br />
⎢<br />
⎣<br />
w 1 (x, t)<br />
w 2 (x, t)<br />
. . .<br />
w m (x, t)<br />
⎤ ⎡<br />
=<br />
⎥ ⎢<br />
⎦ ⎣<br />
w1(x 0 − λ (1) t)<br />
w2(x 0 − λ (2) t)<br />
. . .<br />
wm(x 0 − λ (m) t)<br />
⎤<br />
. (160)<br />
⎥<br />
⎦<br />
W zmiennych oryginalnych rozwiązanie to ma postać<br />
⎡<br />
q(x, t) =<br />
⎢<br />
⎣<br />
⎤<br />
q 1<br />
q 2<br />
. . .<br />
⎥<br />
⎦<br />
q m<br />
⎡<br />
= Rw =<br />
⎢<br />
⎣<br />
= w 1 (x, t)<br />
⎢<br />
⎣<br />
r (1)<br />
1 w 1 + r (2)<br />
1 w 2 + . . . + r (m)<br />
1 w m<br />
⎤<br />
. . .<br />
⎥<br />
⎦<br />
m w 1 + r m (2) w 2 + . . . + r m<br />
(m) w m<br />
⎤<br />
⎡ ⎤<br />
r (1)<br />
2 w 1 + r (2)<br />
2 w 2 + . . . + r (m)<br />
2 w m<br />
r (1)<br />
⎡<br />
r (1)<br />
1<br />
r (1)<br />
2<br />
. . .<br />
r (1)<br />
m<br />
+ . . . + w m (x, t)<br />
⎥<br />
⎢<br />
⎦<br />
⎣<br />
Z wykorzystaniem równania (159) znajdziemy, że<br />
r (m)<br />
1<br />
r (m)<br />
2<br />
. . .<br />
r (m)<br />
m<br />
. (161)<br />
⎥<br />
⎦<br />
m∑<br />
m∑<br />
q(x, t) = w i (x, t)r (i) = wi 0 (x − λ (i) t)r (i) . (162)<br />
i=1<br />
i=1<br />
Wnioskujemy stąd, że w każdym punkcie (x, t) rozwiązanie zależy od stanu<br />
początkowego (stopy), x i 0, charakterystyki m, która przechodzi przez ten<br />
punkt (rys. 5). Stopy charakterystyk określimy następująco:<br />
x (i)<br />
0 = x − λ (i) t , i = 1, 2, . . . , m . (163)<br />
53
4.6.1 Problem Riemanna<br />
Problem Riemanna dla układu liniowego fizyki technicznej jest specyficznym<br />
przypadkiem problemu Cauchy’ego, dla którego stan początkowy q(x, 0)<br />
jest nieciągły w punkcie 0, czyli<br />
q ,t + Aq ,x = 0 , (164)<br />
{ ql , x < 0 ,<br />
q(x, 0) =<br />
(165)<br />
q r , x ≥ 0 .<br />
Rozwiążemy problem Riemmana z wykorzystaniem następujących rozwinięć<br />
w szeregi:<br />
q l =<br />
m∑<br />
α i r (i) ,<br />
m∑<br />
q r = β i r (i) . (166)<br />
i=1<br />
i=1<br />
Porównując powyższe wyrażenia z rozwiązaniem ogólnym równania (162) dla<br />
czasu t = 0, otrzymamy<br />
{ αi , x < 0 ,<br />
wi 0 (x) =<br />
(167)<br />
β i , x ≥ 0 .<br />
Znajdziemy rozwiązanie w następującej postaci:<br />
m∑<br />
q = w i (x, t)r (i) , (168)<br />
i=1<br />
gdzie<br />
⎧<br />
⎨ α<br />
w i (x, t) = wi 0 (x − λ (i) i , x − λ (i) t < 0 , (x/t < λ (i) ) ,<br />
t) =<br />
⎩<br />
β i , x − λ (i) t ≥ 0 , (x/t ≥ λ (i) ) .<br />
(169)<br />
Dla dowolnego punktu (x, t) znajdziemy maximum I indeksu i takie, że<br />
Zapiszemy wtedy równanie (168) jako<br />
x<br />
t > λ(i) , i ≤ I . (170)<br />
I∑<br />
q(x, t) = β i (x, t)r (i) +<br />
m∑<br />
α i (x, t)r (i) . (171)<br />
i=1<br />
i=I+1<br />
54
Jako przykład rozważmy układ dwóch równań, dla których m = 2. Wtedy<br />
z równania (171) otrzymamy<br />
q r = β 1 r (1) + β 2 r (2) , (172)<br />
q ∗ (x, t) = β 1 r (1) + α 2 r (2) , (173)<br />
q l = α 1 r (1) + α 2 r (2) . (174)<br />
Rozwiążemy problem Riemanna dla układu równań liniowych obliczając<br />
skok w danych początkowych, czyli<br />
m∑<br />
q r − q l = γ i r (i) , γ i = β i − α i . (175)<br />
i=1<br />
Z <strong>numeryczne</strong>go punktu widzenia wygodnie jest posiadać rozwiązanie problemu<br />
Riemanna q(0) dla x/t = 0, wyrażone dla x = 0 jako<br />
q(0) = q l + ∑<br />
γ i r (i) = q r − ∑<br />
γ i r (i) . (176)<br />
λ (i) 0<br />
Ćwiczenie: Udowodnijmy, że równania (171) i (176) są równoważne.<br />
Podsumowując tą część wykładu stwierdzamy, że problem Riemanna jest<br />
rozwiązany w postaci kawałkami stałych stanów, które doznają nieciągłości<br />
w punktach. Nieciągłości te są proporcjonalne do prawych wektorów własnych,<br />
r (i) , macierzy A i poruszają się z characterystycznymi prędkościami<br />
λ (i) . Tutaj Ar (i) = λ (i) r (i) , i = 1, 2, . . . , m.<br />
4.7 Twierdzenie Laxa o równoważności<br />
Podczas konstrukcji schematu <strong>numeryczne</strong>go ważną rolę odgrywa twierdzenie<br />
Laxa o równoważności, które możemy symbolicznie sformułować w<br />
następujący sposób:<br />
55
zbieżność = konsystencja + stabilność.<br />
Schemat nazywamy zbieżnym, jeśli rozwiązanie <strong>numeryczne</strong> jest bliskie<br />
rozwiązaniu dokładnemu równania hiperbolicznego dla rozmiaru komórki <strong>numeryczne</strong>j<br />
dążącego do zera, czyli ∆x → 0. Konsystencję i stabilność określimy<br />
po dyskusji błędów ucięcia.<br />
4.8 Lokalny błąd ucięcia i równanie zmodyfikowane dla<br />
dyskretnej postaci równania unoszenia zanieczyszczeń<br />
Przypomnijmy, że schemat FTCS (ang. Forward in Time and Centered<br />
in Space) dla równania unoszenia zanieczyszczeń (118) możemy zapisać następująco:<br />
L(qi n ) ≡ qn+1 i − qi<br />
n<br />
∆t<br />
Zastąpmy w powyższym wyrażeniu q n i<br />
równania unoszenia. Otrzymamy wtedy<br />
L(q(x i , t n )) = q(x i, t n+1 ) − q(x i , t n )<br />
∆t<br />
+ λ qn i+1 − q n i−1<br />
2∆x<br />
= 0 . (177)<br />
rozwiązaniem dokładnym q(x, t) dla<br />
+ λ q(x i+1, t n ) − q(x i−1 , t n )<br />
2∆x<br />
. (178)<br />
Dla różniczkowalnej (gładkiej) funkcji q(x, t) możemy skorzystać z rozwinięcia<br />
w szereg Taylora i otrzymać w ten sposób lokalny błąd ucięcia<br />
L T E = (q ,t + λq ,x )| n i +<br />
( ∆t<br />
2 q ,tt + λ n<br />
6 (∆x)2 q ,xxx + O((∆t) 2 ) + O((∆x) )) 3 . (179)<br />
i<br />
Zauważmy, że q(x, t) nie spełnia równania unoszenia (118) a jest rozwiązaniem<br />
zmodyfikowanego równania, w którym q ,tt i q ,xxx opisują odpowiednio<br />
dyfuzję i dyspersję.<br />
56
Ponieważ<br />
q ,t + λq ,t = 0 , (180)<br />
z równania (179) otrzymamy, że<br />
L T E =<br />
[ ∆t<br />
2 q ,tt + λ 6 (∆x)2 q ,xxx + O((∆t) 2 ) + O((∆x) 3 )] n<br />
i<br />
. (181)<br />
Stąd<br />
L T E = O(∆t) + O((∆x) 2 ) . (182)<br />
Z powyższego równania wnioskujemy, że schemat FTCS jest pierwszego rzędu<br />
dokładny w czasie i drugiego rzędu dokładny w przestrzeni. W rezultacie<br />
mówimy, że schemat ten jest pierwszego rzędu dokładny.<br />
W ogólności lokalny błąd ucięcia schematu <strong>numeryczne</strong>go możemy wyrazić<br />
następująco:<br />
L T E = O((∆t) k ) + O((∆x) j ) . (183)<br />
Mówimy wtedy, że taki schemat jest k-tego i j-tego rzędu dokładny odpowiednio<br />
w czasie i w przestrzeni.<br />
4.9 Konsystencja schematu <strong>numeryczne</strong>go<br />
Zdefiniujemy schemat numeryczny konsystentnym, jeżeli lokalny bład ucięcia<br />
dąży do zera wraz z rozmiarem komórki <strong>numeryczne</strong>j, tj.<br />
L T E → 0 , dla ∆t → 0 , ∆x → 0 . (184)<br />
Z równania (182) znajdziemy, że<br />
L T E = O(∆t) + O((∆x) 2 ) . (185)<br />
Dlatego L T E spełnia warunek konsystencji zadany równaniem (184). W rezultacie<br />
wnioskujemy, że schemat FTCS jest konsystentny z równaniem unoszenia<br />
(118).<br />
57
4.10 Analiza stabilności schematu <strong>numeryczne</strong>go według<br />
von Neumanna<br />
Schemat numeryczny jest niestabilny, jeżeli błędy <strong>numeryczne</strong> rosną w<br />
czasie. Z drugiej strony stabilność schematu polega na konrolowaniu błędnych<br />
oscylacji, które pojawiają się zwykle w pobliżu stromych profili rozwiązań.<br />
Niestabilność (w sensie nieograniczonego wzrostu amplitudy rozwiązania)<br />
danego schematu <strong>numeryczne</strong>go może być analizowana między innymi<br />
metodą von Neumanna (von Neumann, Richtmeyer 1950). W metodzie tej<br />
rozważamy falę (składową Fouriera)<br />
q n i = A n e Iiθ . (186)<br />
Tutaj θ jest fazą a I = √ −1 jest jednostką urojoną. Podstawiając równanie<br />
(186) do schematu FTCS, który zapiszemy<br />
otrzymamy<br />
q n+1<br />
i = q n i + c 2 (qn i−1 − q n i+1) , (187)<br />
A n+1 e Iiθ = A n e Iiθ − c 2 An ( e I(i+1)θ − e I(i−1)θ) . (188)<br />
Po podzieleniu stronami przez A n mamy stąd<br />
A = 1 − c 2<br />
(<br />
e Iθ − e −Iθ) = 1 − Ic sin θ . (189)<br />
Wprowadźmy wielkość |A| zwaną współczynnikiem wzmocnienia, który w<br />
tym przypadku wynosi<br />
|A| =<br />
√<br />
1 + c 2 sin 2 θ . (190)<br />
Warunkiem stabilności schematu jest |A| < 1. Ponieważ w tym przypadku<br />
|A| > 1, wnioskujemy stąd, że schemat FTCS jest bezwarunkowo niestabilny<br />
i dlatego jest on bezużytecznym w praktyce.<br />
58
4.11 Schemat Godunowa dla równania unoszenia zanieczyszczeń<br />
Rozważmy ponownie równanie unoszenia (118) z λ > 0. Dokonując przybliżenia<br />
pochodnych następująco:<br />
q ,t = qn+1 i − qi<br />
n<br />
∆t<br />
, q ,x = qn i − q n i−1<br />
∆x<br />
, (191)<br />
otrzymamy schemat pod-wiatr zwany też schematem Godunowa (Godunov<br />
1959), tj.<br />
q n+1<br />
i = q n i + c(q n i−1 − q n i ) . (192)<br />
4.12 Schemat MacCormacka dla równania unoszenia zanieczyszczeń<br />
tj.<br />
Schemat MacCormacka wykorzystuje przednie i tylnie schematy Eulera,<br />
q ∗ i = q n i − λ ∆t<br />
∆x (qn i+1 − q n i ) , (193)<br />
59
qi<br />
∗∗ = qi n − λ ∆t<br />
∆x (q∗ i − qi−1) ∗ , (194)<br />
q n+1<br />
i<br />
Schemat ten możemy zapisać następująco:<br />
q n+1<br />
i<br />
= 1 2 (q∗ i + q ∗∗<br />
i ) . (195)<br />
( q<br />
= qi n n<br />
− λ∆t i+1 − qi−1<br />
n )<br />
,<br />
2∆x<br />
+λ 2 (∆t)2<br />
2<br />
( q<br />
n<br />
i+1 − 2qi n + qi−1<br />
n )<br />
. (196)<br />
(∆x) 2<br />
Zwróćmy uwagę, że ostatni człon w powyższym schemacie związany jest z<br />
dyfuzją, jako że schemat ten odpowiada równaniu różniczkowemu<br />
gdzie współczynnik dyfuzji<br />
q ,t + λq ,x = µ MC q ,xx , (197)<br />
µ MC = 1 2 λ2 ∆t . (198)<br />
4.13 Lokalny błąd ucięcia schematu pod-wiatr<br />
Zapiszmy schemat pod-wiatr (192) następująco:<br />
q n+1<br />
i<br />
− qi<br />
n<br />
∆t<br />
+ λ qn i − q n i−1<br />
∆x<br />
= 0 , (199)<br />
Po podstawieniu dokładnego rozwiązania q(x, t) do powyższego wyrażenia<br />
otrzymamy lokalny błąd ucięcia schematu pod-wiatr<br />
L T E = q(x i, t n+1 ) − q(x i , t n )<br />
∆t<br />
Rozwijając w szereg Taylora znajdziemy, że<br />
+ λ q(x i, t n ) − q(x i−1 , t n )<br />
∆x<br />
. (200)<br />
L T E =<br />
[ ∆t<br />
2 q ,tt − λ∆x<br />
2 q ,xx + O((∆t) 2 ) + O((∆x) 2 )] n<br />
i<br />
. (201)<br />
Wnioskujemy stąd, że schemat pod-wiatr jest pierwszego rzędu dokładny w<br />
przestrzeni i w czasie.<br />
60
4.14 Warunek stabilności schematu pod-wiatr<br />
Współczynnik wzmocnienia |A| dla schematu pod-wiatr jest<br />
|A| =<br />
√<br />
(1 − c) 2 + c 2 + 2c(1 − c) cos θ . (202)<br />
Z warunku stabilności<br />
znajdziemy, że<br />
|A| ≤ 1 (203)<br />
0 ≤ c ≤ 1 . (204)<br />
Stąd otrzymamy ograniczenie na krok czasowy<br />
0 ≤<br />
λ<br />
∆x/∆t ≤ 1 ,<br />
∆x<br />
∆t ≤<br />
λ . (205)<br />
Wtedy<br />
W praktyce wprowadzimy liczbę Couranta (CFL) tak, że<br />
c cfl = λ∆t<br />
∆x . (206)<br />
∆t = c cfl<br />
∆x<br />
λ , 0 < c cfl ≤ 1 . (207)<br />
Ze względów bezpieczeństwa polecane jest zastosowanie<br />
0 < c cfl < 1 , (208)<br />
np. c cfl = 0.8. Zauważmy, że mniejsza wartość c cfl prowadzi do bardziej<br />
dyfuzyjnego schematu.<br />
61
5 Wykład 7-9: Numeryczne metody dla równania<br />
unoszenia płynu w cienkich rurach<br />
Zaniedbując szereg efektów (takich jak nieliniowość i dyssypację energii)<br />
i uwzgłedniając tylko ruch w jednym kierunku w najprostszym wypadku<br />
ewolucję płynu w cienkich rurach można uznać ze jedno-wymiarową i opisać<br />
ją równaniem unoszenia<br />
q ,t + λq ,x = 0 . (209)<br />
Tutaj λ jest prędkością unoszenia a q(x, t) oznacza uogólnioną gęstość. Bardziej<br />
złożony model ewolucji płynu w rurach można znaleźć w monografii<br />
Guinota (2003) lub w pracach Murawskiego (1985-1988).<br />
Skrypt napisany w języku IDLa rozwiązujący równanie unoszenia przedstawiony<br />
został powyżej. W tej części wykładu do rozwiązania równanie unoszenia<br />
użyjemy programu z biblioteki NUMERICA (Toro 2009). Dla osób<br />
programujących w języku C++ udostępnimy stosowny kod. Możliwe jest również<br />
wykorzystanie pakietu Compack (Mishra 2011) zawierającego programy<br />
napisane w Matlabie, pakietu (programów napisanych w fortranie 77) CLAW-<br />
PACK (LeVeque 2002), oprogramowania napisanego w językach fortran 77,<br />
C++ i GUI przez Trangensteina (2008) lub pakietu Centpack napisanego w<br />
C++ (Balbas, Tadmor 2006). Są to ogólnie dostępne do celów dydaktycznych<br />
bądź naukowych programy służące do rozwiązywania hiperbolicznych<br />
równań różniczkowych.<br />
Poniżej przedstawimy pakiet programów numerycznych NUMERICA. Opisy<br />
innych programów można znaleźć w stosownych dokumentach dostarczanych<br />
przez autorów wraz z pakietami.<br />
62
5.1 Biblioteka programów numerycznych NUMERICA<br />
• NUMERICA (Toro 2009) - biblioteka zawierająca kody źródłowe z przeznaczeniem<br />
do celów edukacyjnych, badań i zastosowań<br />
• pomocna jako narzędzie do nauki i w procesie edukacyjnym<br />
• dostarcza wzorców programowania numerycznych metod rozwiązywania<br />
hiperbolicznych równań różniczkowych<br />
• może być użyta jako wzorzec do uogólniania programów<br />
• łatwo dostosowana do konkretnych aplikacji<br />
• stanowi wzorzec do ambitniejszych programów numerycznych<br />
• dostępna dla społeczności akademickiej<br />
• składa się z programów rozwiązujących równanie unoszenia, równanie<br />
Burgersa, równania płytkiej wody i równań Eulera<br />
• napisana w języku fortran 77<br />
5.2 Program w fortranie 77<br />
Istotne fragmenty programu (z biblioteki Numerica) rozwiązującego równanie<br />
unoszenia:<br />
C<br />
C<br />
C<br />
C<br />
C<br />
Purpose: to solve the linear advection equation with constant<br />
coefficient by a selection of 8 schemes, namely:<br />
Godunov’s first-order upwind scheme<br />
The Toro-Billett first-order upwind scheme<br />
The Lax-Friedrichs scheme (first-order centred)<br />
63
C<br />
The FORCE scheme (first-order centred)<br />
C<br />
Godunov’s first-order centred scheme<br />
C<br />
The Lax-Wendroff scheme (second order, oscillatory)<br />
C The Fromm scheme (second order, oscillatory)<br />
C<br />
The Warming-Beam scheme (second order, oscillatory)<br />
C Input file: lagen.ini<br />
C output file: lagen.out<br />
*<br />
C Programer: E. F. Toro<br />
*<br />
C Theory in Chaps. 5, 7 and 13 of<br />
C Toro, E. F., "Riemann Solvers and Numerical Methods for<br />
C Fluid Dynamics", Springer-Verlag, 2009<br />
C<br />
* *************************<br />
C * The Code at a Glance *<br />
* *************************<br />
*<br />
C CALL READER (Defines the problem)<br />
C CALL INITIA (Specifies initial conditions)<br />
*<br />
C-----Time stepping begins here<br />
*<br />
C CALL BCONDI (set boundary condition)<br />
C CALL CFL (CFL condition)<br />
C CALL GODUPW (Godunov interface flux)<br />
C CALL UPDATE (update the solution)<br />
64
C CALL OUTPUT (Output results)<br />
*<br />
C-----Time stepping ends here<br />
65
5.2.1 Zalecane ćwiczenia<br />
W celu zapoznania się z programem polecamy wykonanie następujących<br />
instrukcji:<br />
• zapoznajmy się z ogólną strukturą programu<br />
• wykonajmy kilka uruchomień programu zmieniając warunki początkowe.<br />
W szczególności zadajmy gładkie i nieciągłe warunki początkowe<br />
• dokonajmy wizualizacji danych<br />
• uruchommy program dla siatek numerycznych o różnych rozmiarach<br />
komórek ∆x<br />
• porównajmy rozwiązania <strong>numeryczne</strong> z analitycznymi<br />
• obserwujmy błedy <strong>numeryczne</strong><br />
• wybierzmy najlepszą metodę dla gładkich i nieciągłych warunków początkowych<br />
Wizualizacji danych dokonajmy przy pomocy ulubionego programu graficznego.<br />
Jednym z prostszych z nich jest Gnuplot. Poniżej przedstawimy prosty<br />
skrypt do wizualizacji danych numerycznych.<br />
5.3 Skrypt dla pakietu Gnuplot<br />
#<br />
set terminal postscript eps enh ’Helvetica’<br />
set xlabel ’x’<br />
set ylabel ’{/Symbol d}{/Symbol r}<br />
#set output ’prof.eps’<br />
66
#plot [0:] ’cl1d_integrals.dat’ u 1:($5-3.87437024775149208) t ""<br />
w l<br />
set xrange [:4.0]<br />
set yrange [:100]<br />
set label "yield point" at 0.003, 260<br />
set logscale<br />
plot ’../object/arcade.dat’ using 1:(1*$11)/1 title "Vx" with lines, \<br />
’../object/arcade.dat’ using 1:(1*$12)/1 title "Vy" with lines<br />
unset logscale<br />
reset<br />
5.4 Schematy różnic skończonych<br />
W tej części wykładu zaprezentujemy i przedyskutujemy schematy różnicskończonych<br />
dla skalarnych hiperbolicznych równań różniczkowych ze szczególnym<br />
uwzględnieniem równania unoszenia w cienkich rurach. Równania<br />
te opisują wymienione wyżej charakterystyczne <strong>zjawisk</strong>a fizyki technicznej.<br />
Oszacujemy błędy <strong>numeryczne</strong> i wprowadzimy stabilne i niestabilne schematy<br />
różnic-skończonych. Pokażemy, że rozwiązanie <strong>numeryczne</strong> najprostszego<br />
równania hiperbolicznego, jakim jest równanie unoszenia w cienkich<br />
rurach, sprawia wiele kłopotów.<br />
Przypomnijmy, że równanie unoszenia w cienkich rurach dane jest<br />
q ,t + λq ,x = 0 . (210)<br />
67
Tutaj, λ = const jest prędkością unoszenia a q stanowi uogólnioną gęstość<br />
płynu. Zapiszmy warunek początkowy dla równania unoszenia w cienkich<br />
rurach<br />
q(x, t = 0) = q 0 (x). (211)<br />
Zapiszmy równanie unoszenia w postaci<br />
( ∂<br />
∂t + λ ∂ )<br />
u = 0. (212)<br />
∂x<br />
Wnioskujemy stąd, że rozwiązaniem powyżej określonego problemu Cauchy’ego<br />
(początkowego) jest<br />
q(x, t) = q 0 (x − λt) . (213)<br />
Oznacza to, że profil początkowy ulega jedynie translacji o wektor λt.<br />
5.4.1 Proste schematy <strong>numeryczne</strong><br />
Naszym celem jest dokonanie dyskretyzacji równania unoszenia z użyciem<br />
różnic skończonych zastępujących pochodne.<br />
Zastosujmy rozwinięcie w szerg Taylora różniczkowalnej (gładkiej) funkcji<br />
g(x) takiej, że<br />
∞∑ ∆x k<br />
g(x 0 + ∆x) = g(x 0 ) + g ,kx (x 0 ) . (214)<br />
k!<br />
Tutaj g ,kx oznacza k-tą pochodną g ze względu na zmienną przestrzenną x.<br />
Zapiszmy powyższe wyrażenie w postaci<br />
g(x 0 + ∆x) = g(x 0 ) + ∆x g ,x (x 0 ) + O((∆x) 2 ) . (215)<br />
Tutaj O((∆x) 2 ) oznacza wszystkie człony wyższego rzędu niż ∆x. W podobny<br />
sposób znajdziemy<br />
g(x 0 − ∆x) = g(x 0 ) − ∆x g ,x (x 0 ) + O((∆x) 2 ) . (216)<br />
68<br />
k=1
Z równań (215) i (216) otrzymamy odpowiednio przedni i tylni schematy<br />
Eulera:<br />
g ,x = g(x 0 + ∆x) − g(x 0 )<br />
∆x<br />
g ,x = g(x 0) − g(x 0 − ∆x)<br />
∆x<br />
+ O(∆x) , (217)<br />
+ O(∆x) . (218)<br />
Łącząc równania (217) i (218) otrzymamy centerowany schemat Eulera<br />
g ,x = g(x 0 + ∆x) − g(x 0 − ∆x)<br />
2∆x<br />
+ O((∆x) 2 ) . (219)<br />
Wprowadźmy teraz siatkę numeryczną o rozmiarach (kroku przestrzennym)<br />
∆x i (kroku czasowym) ∆t następująco:<br />
x i = i∆x , i = 0, 1, . . . , i max , ∆x = x i+1 − x i , (220)<br />
t n = n∆t , n = 0, 1, . . . , n max , ∆t = t n+1 − t n . (221)<br />
Wtedy<br />
q n i = q(x i , t n ) . (222)<br />
Przybliżmy pochodne cząstkowe ich odpowiednikami różnic skończonych.<br />
W szczególności pochodną po czasie zastąpmy przednim schematem Eulera<br />
a pochodną przestrzenną schematem centrowanym, czyli<br />
q ,t ≃ qn+1 i − qi<br />
n<br />
∆t<br />
, q ,x ≃ qn i+1 − q n i−1<br />
2∆x<br />
. (223)<br />
Po podstawieniu tych schematów do równania (118), otrzymamy dyskretną<br />
reprezentację równania unoszenia<br />
q n+1<br />
i<br />
− qi<br />
n<br />
∆t<br />
+ λ qn i+1 − q n i−1<br />
2∆x<br />
= 0 . (224)<br />
Stąd otrzymamy przedni w czasie i wycentrowany w przestrzeni (FTCS) schemat<br />
numeryczny<br />
q n+1<br />
i<br />
= q n i + λ∆t<br />
2∆x (qn i−1 − q n i+1) . (225)<br />
69
Z powyższego schematu wnioskujemy, że aby dokonać aktualizacji rozwiązania<br />
w danej komórce <strong>numeryczne</strong>j, qi<br />
n+1 , potrzebujemy trzech stanów: qi−1,<br />
n<br />
q n i , q n i+1.<br />
5.4.2 Liczba CFL<br />
c jako<br />
Zdefiniujmy teraz liczbę (CFL, Couranta) Couranta-Friedrichsa-Lewy’ego<br />
c = λ∆t<br />
∆x =<br />
Możemy wtedy równanie (225) zapisać w postaci<br />
λ<br />
∆x/∆t . (226)<br />
q n+1<br />
i = q n i + c 2 (qn i−1 − q n i+1) . (227)<br />
Stąd możemy w sposób jawny obliczyć ewolucję q w czasie dla każdego punktu<br />
i, z wyjątkiem i = 0 i i = i max . Dla tych punktów musimy określić warunki<br />
brzegowe.<br />
5.4.3 Warunki brzegowe<br />
Jako przykład warunków brzegowych przedstawimy warunki Neumanna<br />
zwane także otwartymi. Warunki te realizowane są poprzez zerowanie się<br />
pochodnej przestrzennej. Prowadzą one do<br />
q0 n = q1 n , qi n max+1<br />
= qi n max<br />
. (228)<br />
Warunki Neumanna są jednymi z prostszych używanych w symulacjach numerycznych.<br />
Możliwe jest też wprowadzenie innych warunków brzegowych.<br />
5.5 Eksperymenty <strong>numeryczne</strong><br />
Możemy dokonać dyskretyzacji równania unoszenia,<br />
q ,t + λq ,x = 0 , λ = const , (229)<br />
70
do postaci<br />
q n+1<br />
i = q n i + c(q n i−1 − q n i ) . (230)<br />
Otrzymaliśmy w ten sposób schemat numeryczny.<br />
Wykonajmy następujące polecenia:<br />
• ugruntujmy naszą wiedzę o sposobie rozwiązania problemu Riemanna<br />
dla równania unoszenia. Wykorzystajmy notatki przedstawione w tekście<br />
powyżej lub polecaną literaturę<br />
• polepszmy naszą znajomość programu rozwiązującego równanie unoszenia<br />
• poprawmy sposób wizualizacji danych<br />
• wykonajmy <strong>symulacje</strong> odpowiednim programem numerycznym<br />
5.6 Metoda z wiatrem<br />
Przybliżmy teraz pochodne w równaniu unoszenia w cienkich rurach,<br />
przednimi schematami Eulera<br />
q ,t + λq ,x = 0 , λ > 0 , (231)<br />
q ,t ≃ qn+1 i − qi<br />
n<br />
∆t<br />
, q ,x ≃ qn i+1 − q n i<br />
∆x<br />
Otrzymamy wtedy dyskretną reprezentację równania unoszenia<br />
. (232)<br />
L(qi n ) = qn+1 i − qi<br />
n<br />
∆t<br />
Stąd otrzymamy schemat z wiatrem<br />
+ λ qn i+1 − q n i<br />
∆x<br />
= 0 . (233)<br />
q n+1<br />
i = q n i + c(q n i − q n i+1) . (234)<br />
Ćwiczenie: Wyprowadźmy wyrażenie na lokalny błąd odcięcia. Czy schemat<br />
z wiatrem jest konsystentny i stabilny<br />
71
5.7 Ogólne sformułowanie schematu pod-wiatr<br />
Powyżej skonstruowaliśmy schemat pod-wiatr dla równania unoszenia w<br />
przypadku λ > 0. Wyprowadźmy teraz schemat, który będzie pracował zarówno<br />
dla λ > 0 i λ < 0. W tym celu wprowadźmy oznaczenia<br />
λ ± = 1 (λ ± |λ|) ,<br />
2 c±<br />
= ∆tλ±<br />
∆x . (235)<br />
Wtedy schemat pod-wiatr zapiszemy w następującej postaci:<br />
q n+1<br />
i = q n i + c − (q n i − q n i+1) + c + (q n i − q n i−1) . (236)<br />
Ćwiczenie: Pokażmy, że schemat pod-wiatr dla przypadku λ < 0 jest<br />
warunkowo stabilny.<br />
5.8 Schematy monotoniczne<br />
Schemat numeryczny nazywamy monotonicznym, jeśli<br />
u n i > q n i (237)<br />
warunkuje<br />
u n+1<br />
i > q n+1<br />
i . (238)<br />
Tutaj u i q są dwoma rozwiązaniami równania hyperbolicznego.<br />
jako<br />
Przedyskutujemy teraz schemat, który możemy zapisać w ogólnej postaci<br />
q n+1<br />
i = H(q n i−l, q n i , . . . , q n i+r) . (239)<br />
Schemat ten jest monotonicznym, jeśli dla wszystkich k = i − l, . . . , i + r<br />
mamy<br />
∂H<br />
∂q n k<br />
≥ 0 . (240)<br />
72
W przypadku równania unoszenia (118) schematami monotonicznymi są te,<br />
które zawierają nieujemne współczynniki.<br />
Jako przykład rozważymy schemat Godunowa zapisany w postaci równania<br />
(239) jako<br />
q n+1<br />
i = q n i + c(q n i−1 − q n i ) , (241)<br />
H = cq n i−1 + (1 − c)q n i . (242)<br />
Z powyższego równania wioskujemy, że schemat Godunowa jest monotoniczny,<br />
jeśli |c| ≤ 1. Skalarny schemat numeryczny<br />
q n+1<br />
i = H(q n i−l, . . . , q n i+r) , (243)<br />
z l i r nieujemnymi liczbami całkowitymi, jest monotoniczny, jeśli dla wszystkich<br />
j mamy<br />
H ,q n<br />
j<br />
> 0 , j = i − l, . . . , i + r . (244)<br />
Oznacza to, że H jest niemalejącą funkcją dowolnego swojego argumentu.<br />
Definicja ta jest równoważna do poprzedniej definicji schematu monotonicznego.<br />
Przykład: Jako dobry przykład posłuży nam schemat Godunowa<br />
Stąd otrzymujemy<br />
q n+1<br />
i = q n i + c(q n i−1 − q n i ) . (245)<br />
H = H(q n i−1, q n i ) = cq n i−1 + (1 − c)q n i (246)<br />
a następnie<br />
H ,q n<br />
i−1<br />
= c ≥ 0 , H ,q n<br />
i<br />
= 1 − c ≥ 0 . (247)<br />
W rezultacie wnioskujemy, że w przypadku gdy |c| ≤ 1 schemat Godunowa<br />
jest monotoniczny.<br />
73
Z użyciem równania (243) znajdziemy, że 3-punktowy schemat,<br />
jest monotoniczny, jeśli<br />
q n+1<br />
i<br />
= q n i + ∆t<br />
∆x (f n i−1/2 − f n i+1/2) , (248)<br />
∂f n i+1/2<br />
∂q n i<br />
≥ 0 ,<br />
∂f n i+1/2<br />
∂q n i+1<br />
≤ 0 . (249)<br />
Twierdzenie: Niech będą dane początkowe {q n i }. Jeżeli rozwiązanie {q n+1<br />
i }<br />
otrzymane jest w wyniku schematu monotonicznego, wtedy spełnione są następujące<br />
warunki:<br />
max i {q n+1<br />
i } ≤ max i {q n i } , min i {q n+1<br />
i } ≥ min i {q n i } . (250)<br />
Kontynuując powyższą procedurę otrzymamy<br />
max i {q n i } ≤ max i {q n−1<br />
i } ≤ . . . ≤ max i {q 0 i } , (251)<br />
min i {q n i } ≥ min i {q n−1<br />
i } ≥ . . . ≥ min i {q 0 i } . (252)<br />
Wnioskujemy stąd, że schemat monotoniczny nie generuje nowych ekstremów<br />
(błędnych oscylacji) a rozwiązanie spełnia warunek<br />
Definicja: Schemat<br />
min j {q n j } ≤ q n i ≤ max j {q n j } . (253)<br />
q n i =<br />
k=r ∑<br />
k=−l<br />
b k q n i+k . (254)<br />
dla równania unoszenia jest kompatybilny z danymi, jeśli rozwiązanie w każdym<br />
punkcie i, otrzymane za pomocą tego schematu, jest ograniczone przez<br />
parę wielkości otrzymanych pod-wiatr, tj.<br />
(q n i−s, q n i ) , s = sgn(λ) . (255)<br />
Twierdzenie: Schemat dla równania unoszenia jest monotoniczny tylko<br />
wtedy, gdy wszystkie współczynniki schematu nie są ujemne<br />
{b k } ≥ 0 . (256)<br />
74
5.9 Twierdzenie Godunowa<br />
Rozważmy równanie unoszenia w cienkich rurach<br />
q ,t + λq ,x = 0 . (257)<br />
Twierdzenie Godunowa (1959) dowodzi, że nie ma monotonicznych, liniowych<br />
(o stałych współczynnikach) schematów o dokładności większej niż jeden.<br />
5.10 Dokładność schematów numerycznych<br />
Rozważmy liniowy schemat numeryczny<br />
q n+1<br />
i =<br />
k r ∑<br />
k=−k l<br />
b k q n i+k (258)<br />
z k l , k r nieujemnymi liczbami całkowitymi i {b k } współczynnikami schematu,<br />
niezależnymi od {q n i }. Schemat zadany równaniem (258) jest p-tego rzędu<br />
dokładny w przestrzeni i w czasie wtedy i tylko wtedy, gdy<br />
k r ∑<br />
k=−k l<br />
k m b k = (−c) m , 0 ≤ m ≤ p . (259)<br />
Dowód: Dowód tego twierdzenia możemy przeprowadzić przez standardową<br />
analizę błedów ucięcia (patrz str. 383, Toro 1999).<br />
Przykład: Jako przykład rozważmy schemat pod-wiatr dla równania<br />
unoszenia w cienkich rurach (118) z λ > 0. Mamy wtedy<br />
q n+1<br />
i = q n i − c ( q n i − q n i−1)<br />
= cq<br />
n<br />
i−1 + (1 − c) q n i =<br />
k r ∑<br />
k=−k l<br />
b k q n i+k , (260)<br />
gdzie<br />
k l = −1 , k r = 0 , b −1 = c , b 0 = 1 − c , (261)<br />
q n+1<br />
i =<br />
k r ∑<br />
k=−k l<br />
b k q n i+k . (262)<br />
75
Dla m = 0 mamy<br />
0∑<br />
k 0 b k =<br />
0∑<br />
b k = c + (1 − c) = 1 = (−c) 0 . (263)<br />
k=−1 k=−1<br />
Dla m = 1 otrzymamy<br />
0∑<br />
k 1 b k = (−1) 1 c + 0 1 (1 − c) = −c . (264)<br />
k=−1<br />
Wnioskujemy stąd, że powyższy schemat jest pierwszego rzędu dokładny w<br />
przestrzeni i w czasie. Schemat ten nie jest drugiego rzędu dokładny, ponieważ<br />
0∑<br />
k 2 b k = (−1) 2 c + 0 2 (1 − c) = c ≠ (−c) 2 = c 2 . (265)<br />
k=−1<br />
Zalecane ćwiczenia:<br />
1. Pokażmy, że schemat pod-wiatr dla równania unoszenia w cienkich rurach,<br />
dany przez ∑ 0<br />
k=−1 k 2 b k = c ≠ (−c) 2 nie jest drugiego-rzędu dokładny.<br />
2. Udowodnijmy, że schemat Fromma jest drugiego-rzędu dokładny w<br />
przestrzeni i w czasie.<br />
3. Wykonajmy <strong>symulacje</strong> <strong>numeryczne</strong> unoszenia w cienkich rurach, wybierzmy<br />
najlepsze schematy <strong>numeryczne</strong> dla gładnich i niegładkich stanów<br />
początkowych. Ulepszmy metodę wizualizacji danych. Przygotujmy<br />
skrypt dokonujący animacji danych numerycznych.<br />
Komentarz: schemat Beama-Warminga jest schematem pod-wiatr.<br />
5.11 Schematy Laxa-Friedrichsa i Laxa-Wendroffa<br />
Schemat FTCS dany równaniem (227) możemy uczynić stabilnym po zastąpieniu<br />
qi n średnią arytmetyczną (qi+1+q n i−1)/2. n Otrzymamy wtedy schemat<br />
76
Laxa-Friedrichsa (LF)<br />
q n+1<br />
i<br />
= qn i+1 + q n i−1<br />
2<br />
Możemy zapisać ten schemat w następującej postaci<br />
q n+1<br />
i<br />
+ c 2 (qn i−1 − q n i+1) . (266)<br />
= 1 + c<br />
2 qn i−1 + 1 − c<br />
2 qn i+1 . (267)<br />
Schemat ten jest monotoniczny i jest on warunkowo stabilny dla |c| ≤ 1. W<br />
zmodyfikowanym równaniu współczynnik dyfuzji jest<br />
α LF = 1 − c2<br />
λ∆x . (268)<br />
2c<br />
Wyprowadzimy teraz schemat Laxa-Wendroffa dla równania unoszenia w<br />
cienkich rurach (118). Z wykorzystaniem rozwinięcia w szereg Taylora,<br />
q(x, t + ∆t) = q(x, t) + ∆t q ,t + 1 2 (∆t)2 q ,tt + · · · , (269)<br />
z równania unoszenia otrzymamy<br />
q ,t = −λq ,x , q ,tt = λ 2 q ,xx . (270)<br />
Przybliżając q ,x i q ,xx centralnymi schematami różnic skończonych otrzymamy<br />
schemat Laxa-Wendroffa (LW)<br />
q n+1<br />
i =<br />
c(1 + c)<br />
qi−1 n + (1 − c 2 )qi n −<br />
2<br />
c(1 − c)<br />
qi+1 n ≡ H(q i−1 , q i , q i+1 ) . (271)<br />
2<br />
Z równania (244) otrzymamy, że schemat ten nie jest monotoniczny pomimo<br />
tego, że jest on drugiego-rzęd dokładny. Schemat ten jest warunkowo stabilny<br />
dla 0 ≤ |c| ≤ 1.<br />
5.12 Wnioski<br />
W podsumowaniu tej części wykładów stwierdzimy, że problem Cauchy’ego<br />
dla równania unoszenia w cienkich rurach posiada trywialne analityczne<br />
rozwiązanie. Jednakże większość schematów numerycznych wykazuje<br />
problemy z adekwatną reprezentacją rozwiązania. Błędy <strong>numeryczne</strong><br />
77
uzewnętrzniają się szczególnie w pobliżu stromych profili. Metody wyższegorzędu<br />
dokładne są natomiast potencjalnie odpowiednie do rozwiązania trudnych<br />
problemów. Metody <strong>numeryczne</strong> możemy wykorzystać do rozwiązania<br />
bardziej zaawansowanych problemów jak np. układu hiperbolicznych równań.<br />
5.13 Zalecane ćwiczenia dla równania unoszenia w cienkich<br />
rurach<br />
Wykonajmy następujące ćwiczenia:<br />
• wykonajmy kilka uruchomień programu rozwiązującego równanie unoszenia<br />
dla różnych warunków początkowych<br />
• wybierzmy warunki początkowe gładkie lub w postaci funkcji schodkowej<br />
• zapoznajmy się z pakietem służącym do wizualizacji danych numerycznych<br />
• porównajmy otrzymane rozwiązania <strong>numeryczne</strong> z rozwiązaniami analitycznymi<br />
• zaobserwujmy błędy <strong>numeryczne</strong>, np. ucinanie szczytów profili<br />
• wykażmy, że schemat Laxa-Friedrichsa jest bardziej dyfuzyjny od schematu<br />
Godunowa<br />
• zauważmy, że schemat Laxa-Wendroffa wykazuje wolno biegnące błędy<br />
fazowe, podczas gdy schemat Beama-Warminga charakteryzuje się szybko<br />
biegnącymi błędami fazowymi<br />
• uruchommy program dla dłuższego czasu końcowego i pokażmy, że<br />
błędy <strong>numeryczne</strong> rosną w czasie<br />
78
• oszacujmy błędy związane z dyfuzją numeryczną poprzez wykonanie<br />
następującego eksperymentu. Ustalmy warunek początkowy q 0 (x) i uruchommy<br />
program do czasu końcowego t = t ∗ , gdzie t ∗ oznacza dowolnie<br />
duży czas. Zapiszmy dane końcowe q(x, t ∗ ). Uruchommy ponownie program<br />
dla warunków początkowych q 0 (x) = q(x, t ∗ ) i ustalmy ujemną<br />
wartość kroków czasowych. Zatrzymajmy program dla czasu t = 0 i<br />
zbierzmy dane q 0∗ (x). Obliczmy błędy dyfuzyjne z<br />
∫ ∣<br />
1 xmax ∣∣∣∣ q 0 − q 0∗ ∣ ∣∣∣∣<br />
dx (272)<br />
x max − x min x min q 0<br />
• zauważmy błędy schodkowania dla schematu Laxa-Friedrichsa<br />
• dla schematów drugiego-rzędu dokładnych prześledźmy błędy nadstrzały<br />
i podstrzały (zaśmiecające oscylacje) w pobliży nieciągłości<br />
• wbierzmy liczbę Couranta 1.1. Zauważmy, że schemat pod-wiatr jest<br />
wtedy niestabilny<br />
• dokonajmy wyboru schematów zbyt dyfuzyjnych i zbyt dspersyjnych<br />
• znajdźmy najlepszy schemat dla gładkiego stanu początkowego i dla<br />
stanu nieciągłego<br />
• zastosujmy schemat pod wiatr (230) dla równania unoszenia (229) z λ ><br />
0 i wybierzmy λ∆t = ∆x. Wtedy schemat redukuje się do q n+1<br />
i<br />
= q n i−1.<br />
Uruchommy program dla takiego przypadku i przeanalizujmy wyniki<br />
79
6 Wykład 10-11: Numeryczne rozwiązania fal<br />
akustycznych o małej amplitudzie<br />
W tej części materiałów rozważymy bardziej złożony przypadek równania<br />
hiperbolicznego niż równanie unoszenia a mianowicie układ równań unoszenia,<br />
które sprowadzić możemy do jednego równania różniczkowego drugiego<br />
rzędu zwanego równaniem falowym. Równanie to wyprowadzimy poniżej dla<br />
przypadku fal akustycznych rozchodzących się w płynie (np. w gazie).<br />
6.1 Wyprowadzenie równania falowego dla fal akustycznych<br />
Rozważmy fale akustyczne poruszające się w jedym kierunku (np. w kierunku<br />
x) w ośrodku płynnym. Zaniedbajmy obecność pola grawitacyjnego.<br />
Fale te opiszemy wtedy równaniami Eulera<br />
ϱ ,t + (ϱv) ,x = 0 , (273)<br />
(ϱv) ,t + (ϱv 2 + p) ,x = 0 , (274)<br />
E ,t + [v(E + p)] ,x = 0 , (275)<br />
gdzie E = p/(γ−1)+ϱv 2 /2 oznacza gęstość energii całkowitej, v jest składową<br />
prędkości wzdłuż kierunku x, ϱ gęstością masy a p odpowiada ciśnieniu płynu.<br />
Zauważmy, że stan równowagi dowolnego układu fizycznego odpowiada<br />
przypadkowi, w którym wielkości nie zależą od czasu. Niech w stanie tym<br />
płyn jest w spoczynku a gęstość masy i ciśnienie będą stałymi, czyli<br />
ϱ = ϱ 0 = const , (276)<br />
v = v 0 = 0 , (277)<br />
p = p 0 = const . (278)<br />
80
Rozpatrzmy zaburzenia stanu równowagi zapisane następująco:<br />
ϱ = ϱ 0 + δϱ , (279)<br />
v = 0 + δv , (280)<br />
p = p 0 + δp , (281)<br />
gdzie δ odpowiada zaburzeniom. Załóżmy, że interesują nas małe zaburzenia,<br />
czyli<br />
δϱ<br />
ϱ 0<br />
6.2 Schemat numeryczny dla równania falowego<br />
Równanie falowe (286) może być rozwiązane numerycznie przy pomocy<br />
skryptu IDLa przedstawionego powyżej. Przedyskutujemy teraz schemat numeryczny<br />
użyty w tym skrypcie. W tym celu przybliżmy drugą pochodną<br />
v ,xx następującym ilorazem różnicowym:<br />
[( v<br />
n<br />
i+1 − v n i<br />
∆x<br />
)<br />
−<br />
v ,xx<br />
n<br />
i<br />
( v<br />
n<br />
i − v n i−1<br />
∆x<br />
= (v,x) n ,xi ≃ vn ,x i+1<br />
− v,x n i<br />
≃<br />
∆x<br />
)] 1<br />
∆x = vn i+1 − 2vi n + vi−1<br />
n . (287)<br />
(∆x) 2<br />
W podobny sposób dokonajmy przybliżenia pochodnej po czasie, tj.<br />
[( v<br />
n+1<br />
i − vi<br />
n<br />
∆t<br />
)<br />
−<br />
n<br />
v ,tt i<br />
( v<br />
n<br />
i − v n−1<br />
i<br />
∆t<br />
n<br />
= (v ,t ) ,t i<br />
≃ v ,t n+1<br />
i<br />
− v,t n i<br />
≃<br />
)] ∆t<br />
1<br />
∆t = vn+1 i<br />
− 2v n i + v n−1<br />
i<br />
(∆t) 2 . (288)<br />
Po podstawieniu równań (287) i (288) do równania falowego (286) otrzymamy<br />
schemat numeryczny<br />
v n+1<br />
i<br />
= 2(1 − r 2 )v n i + r 2 (v n i+1 + v n i−1) − v n−1<br />
i , (289)<br />
gdzie r = c s ∆t/∆x jest liczbą CFL. Schemat ten został zastosowany w strypcie<br />
IDLa, który przedstawiliśmy powyżej.<br />
6.3 Zalecane eksperymenty <strong>numeryczne</strong> dla fal akustycznych<br />
o małej amplitudzie<br />
Wykonajmy następujące eksperymenty <strong>numeryczne</strong>:<br />
• wykonajmy kilka uruchomień stryptu IDLa rozwiązującego równanie<br />
falowe dla różnych warunków początkowych<br />
• wybierzmy warunki początkowe gładkie lub w postaci funkcji typu Heaviside’a<br />
(schodkowej)<br />
82
• zaobserwujmy błędy <strong>numeryczne</strong>, które szczególnie uwidocznią się w<br />
przypadku funkcji schodkowej<br />
• uruchommy program dla dłuższego czasu końcowego i pokażmy, że<br />
błędy <strong>numeryczne</strong> rosną w czasie<br />
• zapoznajmy się szczegółowo z zawartością stryptu IDLa<br />
• ulepszmy skrypt poprzez poprawienie programowania w IDLu<br />
• potraktujmy skrypt jako wzorzec do napisania nowego programu rozwiązującego<br />
równanie falowe metodą typu Godunowa<br />
83
7 Wykład 12-13: Fale akustyczne w grawitacyjnie<br />
uwarstwionej atmosferze – równanie<br />
Kleina-Gordona<br />
Rozważmy grawitacyjnie uwarstwiony płyn i zignorujmy obecność pola<br />
magnetycznego. Dla stałego pola grawitacyjnego równanie zachowania pędu<br />
przyjmuje postać<br />
ϱv ,t + ϱ(v · ∇)v = −∇p + ϱg . (290)<br />
Przyjmując, że pole grawitacyjne skierowane jest przeciwnie do osi z, tj.<br />
g = −gẑ, i dla statycznego stanu równowagi (v = 0) równanie to upraszcza<br />
się do<br />
p 0 ,z = −gϱ 0 . (291)<br />
Widzimy więc, że pole grawitacyjne wprowadza dodatkową siłe i wyróżniony<br />
kierunek. W konsekwencji ośrodek staje się anizotropowym dla fal, które<br />
generowane są poprzez siłę wyporu.<br />
Zauważmy, że pozostałe równania Eulera są tożsamościowo spełnione dla<br />
stanu równowagi i nie wprowadzają one dodatkowych informacji do równania<br />
(291).<br />
Grawitacja wprowadza skalę długości w płynie. Skala ta nazywa się wysokościową<br />
skalą gęstości<br />
H ≡<br />
∣<br />
ϱ 0<br />
∣<br />
ϱ 0 ,z<br />
Podobnie możemy określić wysokościową skalę ciśnienia<br />
Λ ≡<br />
∣<br />
p 0<br />
p 0<br />
∣ = c2 s<br />
,z<br />
∣ . (292)<br />
γg . (293)<br />
Warto zauważyć, że większe wartości H i Λ odpowiadają słabszemu uwarstwieniu<br />
ośrodka. W szczególności stałe profile gęstości masy ϱ 0 (z) i ciśnienia<br />
84
p 0 (z) odpowiadają nieskończonym wartościom H i Λ, czyli H, Λ → ∞. Skale<br />
te wprowadzają skale czasowe zdefiniowane jako czas potrzebny fali do pokonania<br />
dystansu H w obie strony, czyli 2H/c s . Odwrotność tej skali nazywa<br />
się akustyczną częstością odcięcia<br />
ω a ≡ c s<br />
2H . (294)<br />
Częstość ta ma prostą fizyczną interpretację - tylko fale z częstościami ω większymi<br />
od akustycznej częstości odcięcia, tj. ω > ω a , mogą penetrować ośrodek<br />
płynny. Dla częstości mniejszych od ω a amplituda fal zanika z wysokością z<br />
i dlatego fale te nazywamy falami zanikającymi. Dodatkowo możemy zdefiniować<br />
częstość unoszenia ω g , zwaną także częstością Brunta-Väisäli, jako<br />
ω 2 g ≡ g<br />
( 1<br />
γΛ − 1 )<br />
= g2<br />
− g H c 2 s H . (295)<br />
Jeżeli ω 2 g < 0 stan równowagi ośrodka jest niestabilny i w rezultacie powstaje<br />
konwekcja. Warunek ten nazywa się kryterium Schwarzschilda. Z równania<br />
(295) wynika, że warunek ω 2 g < 0 równoważny jest γΛ > H lub c 2 s > gH.<br />
Wnioskujemy stąd, że dla danej wysokościowej skali gęstości masy H płyn jest<br />
konwekcyjnie niestabilny dla odpowiednio małej wysokościowej skali ciśnienia<br />
lub odpowiednio małej wartości prędkości dźwięku lub temperatury.<br />
Znaczenie fizyczne ω 2 g może być wyjaśnione następująco. Rozważmy element<br />
płynu, który jest przesunięty z położenia równowagi w kierunku do<br />
góry. Jeśli ω 2 g<br />
> 0 element ten jest cięższy niż nieprzesunięty płyn, który<br />
znajduje się obok. W konsekwencji siła grawitacji przesuwa ten element w<br />
stronę jego równowagowego położenia powodując jego oscylacje wokół położenia<br />
równowagi. Z drugiej strony, jeśli ω 2 g < 0 element ten jest lżejszy niż<br />
nieprzesunięty płyn i siła wyporu działa w kierunku do góry, przesuwając<br />
element dalej od jego położenia równowagi.<br />
85
Dla atmosfery izotermicznej c s nie zależy od z. Stąd otrzymujemy, że<br />
H = Λ = const i w konsekwencji wyrażenia na częstość odcięcia ω a i Brunta-<br />
Väisäli możemy uprościć do następujących wyrażeń:<br />
ω a = γg<br />
2c s<br />
,<br />
ω 2 g =<br />
(1 − γ)g2<br />
. (296)<br />
c 2 s<br />
Ponieważ γ > 1 mamy ω 2 g < 0 i atmosfera izotermiczna jest konwekcyjnie<br />
stabilna.<br />
Z równań (291) i (293) otrzymamy<br />
dp 0 = −gϱ 0 dz = − γg p<br />
c 2 0 dz = − p 0dz<br />
s<br />
Λ . (297)<br />
Stąd<br />
p 0 (z) = p 0 (0)e − ∫ dz<br />
Λ . (298)<br />
Ponieważ dla atmosfery izotermicznej Λ = const z powyższego równania i<br />
z równania (291) wnioskujemy, że ciśnienie i gęstość masy zmniejszają się<br />
eksponencjalnie z wysokością.<br />
7.1 Wyprowadzenie równania Kleina-Gordona<br />
Przedyskutujemy teraz małe (liniowe) zaburzenia stanu równowagi (291).<br />
Z pomocą definicji<br />
∆ ≡ ∇ · v (299)<br />
dwu-wymiarowe zaburzenia takie, jak<br />
v = (v x , 0, v z )e j(k xx−ωt) , j 2 = −1 (300)<br />
są opisane następującymi równaniami (Lamb 1932):<br />
v z,z + gk2 x<br />
ω v 2 z = (1 − c2 skx<br />
2 )∆ , (301)<br />
ω2 c 2 sω 2 ∆ ,z + g(γω 2 − c 2 skx)∆ 2 = (g 2 kx 2 − ω 4 )v z . (302)<br />
86
Równania te opisują fale akustyczne, fale grawitacyjne i konwektywne niestabilności.<br />
Policzmy v z z równania (302) i podstawmy do (301). Otrzymamy wtedy<br />
[ ω 2 − c 2 sk 2 x<br />
c 2 s<br />
(<br />
∆ ,zz + (log c 2 s) ,z + 1 )<br />
∆ ,z +<br />
Λ<br />
(<br />
)]<br />
− gk2 x<br />
(log c 2 (γ − 1)g<br />
ω<br />
s) 2 ,z − ∆ = 0 . (303)<br />
c 2 s<br />
Możemy wyeliminować pochodne pierwszego rzędu poprzez transformację<br />
u = c 2 s√<br />
ϱ0 ∆ . (304)<br />
Wtedy równanie (303) zapiszemy jako<br />
[ ω 2 − ¯ω 2 ( ) ]<br />
a ω<br />
2<br />
u ,zz + + g<br />
ω − 1 k 2 2 x u = 0 , (305)<br />
c 2 s<br />
gdzie ¯ω a jest jest zmodyfikowaną przez grawitacyjne uwarstwienie częstością<br />
odcięcia<br />
¯ω 2 a ≡ (1 + 2H ,z )ω 2 a . (306)<br />
Uzyskanie rozwiązania równania (305) dla dowolnego profilu temperatury jest<br />
procesem trudnym. Dla przykładu dla liniowego profilu temperatury ∆(z)<br />
wyraża się poprzez hipergeometryczne funkcje (Evans, Roberts 1991). Dlatego<br />
rozważmy teraz prosty przypadek atmosfery izotermicznej, dla której<br />
H = const. Z równania (306) znajdziemy, że<br />
¯ω 2 a = ω 2 a . (307)<br />
Wnioskujemy stąd, że rozwiązaniem równania (305) jest<br />
z następującym związkiem dyspersyjnym:<br />
u(z) = u 0 e jk zz , j 2 = −1 , (308)<br />
k 2 z = ω2 − ω 2 a<br />
c 2 s<br />
+<br />
87<br />
( ω<br />
2<br />
g<br />
ω 2 − 1 )<br />
k 2 x . (309)
W konsekwencji fale akustyczne mogą poruszać się w kierunku pionowym,<br />
jeśli kz 2 > 0 i amplituda fal zanika w tym samym kierunku, jeśli kz 2 < 0.<br />
Równanie dyspersyjne (309) możemy rozwiązać następująco:<br />
ω 4 − (ωa 2 + c 2 sk 2 )ω 2 + c 2 sωg 2 sin 2 α k 2 = 0 , (310)<br />
gdzie α oznacza kąt między wektorem falowym k = (k x , 0, k z ) a osią z i<br />
k 2<br />
= k 2 x + k 2 z. Dwa pierwiastki tego równania oznaczają fale akustyczne i<br />
wewnętrzne fale grawitacyjne. Na ogół fale te są sprzężone. Jednakże dla<br />
słabego uwarstwienia są one w zasadzie rozsprzężone i<br />
ω acoustic ≃ c s k, ω gravity ≃ ω g sin α . (311)<br />
Fale akustyczne są w zasadzie izotropowe. Wewnętrzne fale grawitacyjne nie<br />
mogą natomiast poruszać się wzdłuż kierunku z, ponieważ dla α = 0 mamy<br />
ω gravity = 0. W konsekwencji, wewnętrzne fale grawitacyjne są anizotropowe.<br />
Ze zlinearyzowanych równań (składowej z równania zachowania pędu i<br />
równania na ewolucję ciśnienia) Eulera znajdziemy<br />
v z,tt − c 2 s(z)v z,zz = −γgv z,z . (312)<br />
Z wykorzystaniem transformacji<br />
Q(z, t) = √ ϱ(z)c 2 s(z)<br />
ϱ(z = z r )c 2 s(z = z r ) v z(z, t) (313)<br />
równanie (312) sprowadzimy do równania Kleina-Gordona<br />
Q ,tt − c 2 s(z)Q ,zz = −Ω 2 (z)Q , (314)<br />
gdzie z = z r oznacza dowolnie wybrany poziom referencyjny i<br />
Ω 2 (z) =<br />
c2 s(z)<br />
4Λ 2 (z) (1 + 2Λ ,z) . (315)<br />
88
Równanie to opisuje poruszające się wzdłuż kierunku działania grawitacji,<br />
tj. wzdłuż kierunku z, fale akustyczne<br />
Równanie Kleina-Gordona rozwiążemy przy pomocy skryptu napisanego<br />
w języku IDL. Skrypt ten przedstawimy w następnej części materiałów.<br />
7.2 Program numeryczny dla równania Kleina-Gordona<br />
Schemat numeryczny wykorzystajmy w skrypcie IDLa:<br />
; -----------------------------------------------<br />
; numerical solution of the Klein-Gordon equation<br />
; -----------------------------------------------<br />
;<br />
PRO klein_gordon<br />
a = -11.0 ; min(x)<br />
b = 20.0 ; max(x)<br />
N = 2000 ; number of spatial grid points<br />
dx = (b-a)/N ; grid size<br />
dt = dx ; !!! time step must satisfy this condition !!!<br />
dt2 = dt*dt<br />
tend = 20.0<br />
; max time<br />
nt = tend/dt ; number of time steps<br />
;print,’ nt = ’, nt<br />
u1 = fltarr(N) ; temporary matrix<br />
u2 = fltarr(N) ; temporary matrix<br />
89
u3 = fltarr(N) ; solution matrix<br />
x = a + dx*indgen(N) ; x-coordinate<br />
; initial conditions<br />
for j=0,N-1 do begin<br />
u1[j] = gauss(x[j])<br />
u2[j] = u1[j]<br />
u3[j] = u1[j]<br />
endfor<br />
; --------------<br />
; main loop<br />
; --------------<br />
for nn=1,nt do begin<br />
; the numerical scheme of Eq.(3.31) from<br />
; http://webphysics.davidson.edu/Faculty/wc/waveHTML/node14.html<br />
for j=1,N-2 do begin<br />
u3[j] = -u1[j] + u2[j+1] + u2[j-1] + dt2*F(0.5*(u2[j+1]+u2[j-1]))<br />
endfor<br />
; open boundary conditions<br />
u2[0] = u2[1]<br />
u2[N-1] = u2[N-2]<br />
u3[0] = u3[1]<br />
90
u3[N-1] = u3[N-2]<br />
for j=0,N-1 do begin<br />
u1[j] = u2[j]<br />
u2[j] = u3[j]<br />
endfor<br />
plot, x, u3, xrange=[-5,b], yrange=[min(u3),max(u3)]<br />
wait,0.0125<br />
endfor<br />
END<br />
; Initial condition<br />
FUNCTION gauss, x<br />
x0 = 0.0<br />
S = 0.05<br />
RETURN, exp( -(x-x0)^2/S^2 )<br />
END<br />
; time-derivative<br />
;FUNCTION gauss_1, x<br />
;RETURN, 0.0<br />
;END<br />
; free-term<br />
91
FUNCTION F, x<br />
;RETURN, sin(x)<br />
RETURN, -1.0*x<br />
END<br />
7.3 Zalecane ćwiczenia<br />
Wykonajmy następujące ćwiczenia:<br />
• wykonajmy kilka uruchomień stryptu IDLa rozwiązującego równanie<br />
Kleina-Gordona dla różnych warunków początkowych<br />
• wybierzmy warunki początkowe zadane zlokalizowaną funkcją, np. funkcją<br />
Gaussa<br />
• prześledźmy okresowo pojawiające się zaburzenia w pobliżu zadanego<br />
warunku początkowego<br />
• zapoznajmy się szczegółowo z zawartością stryptu IDLa rozwiązującego<br />
problem początkowy dla równania Kleina-Gordona<br />
• ulepszmy skrypt np. poprzez dostosowanie prędkości dźwięku do konkretnego<br />
stanu atmosfery ziemskiej<br />
• ponieważ obecenie zadane otwarte warunki brzegowe powodują odbicia<br />
fal od brzegów obszaru symulacji, poprawmy sposób zadawania otwartych<br />
warunków brzegowych używając tzw. warunków Sommerfelda (np.<br />
Murawski 2002)<br />
92
8 Wykład 14-15: Słabo nieliniowe szybkie fale<br />
magnetoakustyczne w plazmie zimnej - równania<br />
Burgersa<br />
W poprzednich częściach niniejszych materiałów dyskutowaliśmy równanie<br />
unoszenia, równanie falowe i równanie Kleina-Gordona. Równania te są<br />
liniowe. W tej części wykładów wyprowadzimy najprostsze równania nieliniowe,<br />
którymi są równania Burgersa. W tym celu rozważmy równania (590)-<br />
(595) dla przypadku plazmy zimnej, dla której z definicji ciśnienie gazu<br />
p = 0. Dodatkowo załóżmy, że ruch plazmy odbywa się w dwóch wymiarach<br />
z ∂/∂y = 0 a prędkość<br />
v = [v x , 0, v z ] (316)<br />
i pole magnetyczne<br />
B = [B x , 0, B z ] . (317)<br />
Przyjmijmy, że w stanie równowagi plazma jest statyczna (v = 0) i charakteryzuje<br />
się jednorodną gęstością ϱ 0 . Stan ten możemy opisać następująco:<br />
ϱ = ϱ 0 = const, v = 0, B = B 0 ẑ , (318)<br />
gdzie ẑ jest wersorem wzdłuż osi z a B 0 jest wartością pola magnetycznego.<br />
W rezultacie, prędkość Alfvéna,<br />
c A = B 0<br />
√ µϱ0<br />
, (319)<br />
jest stała w całym obszarze plazmy.<br />
Dla plazmy zimnej w dyskutowanym przez nas przypadku dwu-wymiarowym,<br />
równania (590)-(595) opisują jedynie szybkie fale magnetoakustyczne.<br />
93
Powolna fala magnetoakustyczna wyeliminowana jest z układu poprzez założenie<br />
zimnej plazmy (p = 0). Fala Alfvéna jest natomiast nieobecna wskutek<br />
zaniedbania oscylacji w kierunku y, tj. v y = B y = 0. W przypadku (liniowym)<br />
małych zaburzeń szybka fala magnetoakustyczna spełnia następujący<br />
związek dyspersyjny:<br />
ω 2 = c 2 Ak 2 . (320)<br />
Poniżej rozważymy słabo nieliniowe fale, które oznaczają się małą ale<br />
skończoną amplitudą. W tym celu rozwińmy wszystkie wielkości plazmowe<br />
wokół stanu równowagi opisanej równaniem (318), tj.<br />
ϱ = ϱ 0 + δϱ , (321)<br />
v x = δv x , v z = δv z , (322)<br />
B x = δB x , B z = B 0 + δB z , (323)<br />
gdzie δ odpowiada zaburzonej wielkości. Po podstawieniu powyższych wyrażeń<br />
do równań MHD i opuszczeniu δ otrzymamy<br />
ϱ ,t + ϱ 0 v z,z = −(ϱv z ) ,z , (324)<br />
ϱ 0 v x,t − B 0<br />
µ B x,z = −ϱv x,t − (ϱ 0 + ϱ)v z v x,z , (325)<br />
ϱ 0 v z,t = −ϱv z,t − (ϱ 0 + ϱ)v z v z,z − 1 µ B xB x,z , (326)<br />
B x,t − B 0 v x,z = −(v z B x ) ,z , (327)<br />
B z = 0. (328)<br />
Zauważmy, że wszystkie człony liniowe znajdują się po lewej stronie powyższych<br />
równań, podczas gdy prawe strony zawierają człony nieliniowe.<br />
W celu uzyskania jakościowego obrazu różnego rodzaju oddziaływania,<br />
które opisane jest równaniami (324)–(328), korzystnie jest wykonać następujący<br />
eksperyment myślowy. Rozpocznijmy nasze rozważania od układu, który<br />
94
znajduje się w statycznej równowadze w czasie t = 0 i wygenerujmy zaburzenie<br />
w prędkości v x . Liniowe oddziaływania między v x i B x , równania (325)<br />
i (327), prowadzą do niezerowej wartości B x i do ewolucji tych wielkości w<br />
przestrzeni od miejsca generacji zaburzenia. Prowadzi to do zaburzeń v x i<br />
B x zmieniających się z z. W reżimie liniowym nic więcej nie dzieje się, a<br />
więc składowa z prędkości i gęstość masy mogą powstać wskutek efektów<br />
nieliniowych. Oddziaływanie nieliniowe opisywane jest ostatnim członem w<br />
równaniu (326), wskutek którego powstaje zaburzenie w v z . Zaburzenie to<br />
automatycznie prowadzi do zmiany ϱ poprzez liniowe oddziaływanie z v z .<br />
Widzimy, że po pewnym czasie wszystkie wielkości plazmowe (oprócz B z ,<br />
które pozostaje niezaburzone) osiągają niezerowe wielkości.<br />
Pozostałą informację o ewolucji parametrów plazmy możemy otrzymać<br />
poprzez analizę rzędu wielkości członów nieliniowych. Dla przykładu człon<br />
powodujący generację v z , czyli<br />
1<br />
µ B xB x,z , jest kwadratowy w liniowo zaburzonej<br />
wielkości B x . Składowa prędkości v z oddziaływuje wtedy z gęstością<br />
masy prowadząc do samo-oddziaływania v z . To samo-oddziaływanie, opisane<br />
przez dwa pierwsze człony stojące po prawej stronie równania (326), stanowi<br />
zatem efekt czwartego rzędu. Proces ten możemy kontynuować pokazując, że<br />
nieliniowe człony w równaniach dla ϱ i v z są rzędu parzystego.<br />
Kiedy prędkość równoległa do niezaburzonego pola magnetycznego staje<br />
się różna od zera, prawe strony równań (325) i (327) zawierają człony trzeciego,<br />
piątego i wyższych rzędów nieparzystych. Oznacza to, że składowe normalne<br />
prędkości i pola magnetycznego są wygenerowane w sposób nieliniowy<br />
przez nieparzystego rzędu człony nieliniowe. Nieobecność członów kwadratowych<br />
w równaniu na v x jest konsekwencją braku samo-odziaływania szybkiej<br />
fali magnetoakustycznej w opisie do drugiego rzędu dokładności.<br />
95
8.1 Wyprowadzenie zmodyfikowanego równania Burgersa<br />
Ponieważ równania (324)-(328) są nadal zbyt trudne do ilościowej analizy,<br />
wyprowadzimy równanie modelowe, które opisuje ewolucję fal w granicy<br />
długich fal. W tym celu wprowadzimy układ współrzędnych poruszający się<br />
z liniową prędkością fali, c A , wzdłuż kierunku z. Założymy, że w układzie tym<br />
wielkości plazmowe zależą od z. Oznacza to, że fale nieliniowe nie są dokładnie<br />
stacjonarne w tym układzie. Dokonamy tzw. rozciągnięcia współrzędnych<br />
(np. Infeld, Rowlands 1990, Murawski, Oliver, Ballester 2001):<br />
∫ ( )<br />
dz<br />
τ = ε − sdt , ξ = ε 2 z , (329)<br />
c A<br />
gdzie ε jest małym stałym parametrem, który mierzy słabość nieliniowości a<br />
s = 1 (s = −1) odpowiada fali biegnącej w kierunku zgodnym (przeciwnym)<br />
ze zwrotem osi z. Dalsze rozważania przeprowadzimy dla dowolnego znaku s,<br />
chociaż w ich końcowej fazie położymy s = 1, co odpowiada falom biegnącym<br />
zgodnie ze zwrotem osi z. Rozwińmy zaburzone wielkości plazmowe w potęgi<br />
ε 1/2 tak, że<br />
f(ξ, τ) = f 0 + ε 1/2 f 1 (ξ, τ) + εf 2 (ξ, τ) + ε 3/2 f 3 (ξ, τ) + · · · . (330)<br />
Ponieważ później pozostawimy tylko człony najniższych rzędów, powyższe<br />
wyrażenie oznacza, że rozważamy fale słabo nieliniowe. Dlatego nasze podejście<br />
polega na wprowadzeniu pierwszego rzędu poprawek do teorii liniowej i<br />
powinno być poprawione dla fal o dużych amplitudach.<br />
Po podstawieniu wyrażeń (329) i (330) do równań (91)-(94) i porównując<br />
człony przy ε 3/2 i ε 2 , po przekształceniach otrzymamy<br />
ϱ i = s ϱ 0<br />
c A<br />
v zi , B xi = −s B 0<br />
c A<br />
v xi , (331)<br />
B zi = 0 , (332)<br />
96
dla i = 1, 2. Dodatkowo znajdziemy, że<br />
ϱ 1 = v z1 = 0 , (333)<br />
v z2 =<br />
s 2<br />
v x<br />
2c 1 .<br />
A<br />
(334)<br />
Równanie (331) potwierdza, że z jednej strony ϱ i v z oraz z drugiej strony v x<br />
i B x są tego samego rzędu nieliniowe. Równanie (333) wskazuje na różną parzystość<br />
członów nieliniowych wpływających na te zmienne. Równanie (332),<br />
prawdziwe dla i = 1, 2, · · ·, prowadzi do równania (328).<br />
Warunek zgodności dla składowych x równań gęstości pędu i indukcji magnetycznej,<br />
otrzymanych dla ε 5/2 , prowadzi do zmodyfikowanego nielepkiego<br />
równania Burgersa zawierającego nieliniowy człon trzeciego rzędu, tj.<br />
v x1,ξ + 3 2<br />
v<br />
4c 3 x1 v x1,τ = 0 . (335)<br />
A<br />
Transformując to równanie do współrzędnych wyjściowych z, t i stosując<br />
v x ∼ ε 1/2 v x1 (336)<br />
otrzymamy<br />
v x,z + s (<br />
1 − 3 )<br />
v 2<br />
c A 4c 2 x v x,t = 0 . (337)<br />
A<br />
Wygodnie jest teraz wprowadzić następujące bezwymiarowe zmienne:<br />
z ′ = z L ,<br />
t′ = t c A<br />
L ,<br />
v′ x = v x<br />
c A<br />
, (338)<br />
gdzie L oznacza skalę długości. W tych zmiennych równanie (337) może być<br />
zapisane jako<br />
(<br />
v x,z ′ + s 1 − 3 )<br />
′<br />
4 v′2 x v x,t ′ = 0 . (339)<br />
′<br />
Stąd możemy znaleźć wyrażenie na bezwymiarową prędkość fali<br />
v ′ w =<br />
(<br />
1 − 3 4 v′2 x<br />
) −1<br />
. (340)<br />
97
że v ′2<br />
x<br />
W powyższej analizie ograniczyliśmy się do słabo nieliniowych fal, takich<br />
≪ 1. Równanie (340) pokazuje, że dla takich wartości v ′ x bezwymiarowa<br />
wartość prędkości fali jest zawsze większa niż jeden i rośnie z amplitudą<br />
fali v ′ x. W konsekwencji wnioskujemy, że nieliniowość przyśpiesza zarówno<br />
dodatnie (v ′ x > 0) jak i ujemne (v ′ x < 0) wychylenia.<br />
8.2 Wyprowadzenie równania Burgersa<br />
Z równania (326) wynika, że przepływ równoległy do osi z (v z ) jest wymuszany<br />
członem kwadratowym związanym z szybką falą magnetoakustyczną,<br />
v x . Wprowadzając<br />
v z ∼ εv z2 (341)<br />
otrzymamy<br />
v ′ z = s 2 v′2 x . (342)<br />
Natychmiastową konsekwencją tej zależności jest to, że wartość v ′ z jest mniejsza<br />
niż v ′ x. Równanie (339) możemy zapisać z pomocą v ′ z w postaci nielepkiego<br />
równania Burgersa, tj.<br />
v ′ z,z ′ +<br />
(<br />
s − 3 )<br />
2 v′ z v z,t ′ = 0 . (343)<br />
′<br />
Warto podkreślenia jest, że podczas gdy równanie (339) zawiera sześcienny<br />
nieliniowy człon, równanie (343) oznacza się kwadratową nieliniowością.<br />
Fakt ten zauważyliśmy już w czasie inspekcji równań (324)-(328).<br />
Ma on bezpośrednie znaczenie dla zależności prędkości fali od jej amplitudy.<br />
Z równania (340) lub (343) wynika, że prędkość fali dana jest następującym<br />
wyrażeniem:<br />
v ′ w =<br />
(<br />
s − 3 2 v′ z) −1<br />
. (344)<br />
98
Wnioskujemy stąd, że dodatnie i ujemne wychylenia fali doznają odpowiednio<br />
przyspieszenia i opóźnienia wskutek działania kwadratowej nieliniowości w<br />
równaniu (343).<br />
99
9 Wykład 15-16: Nieliniowe równania hiperboliczne<br />
dla układów fizyki technicznej<br />
W tej części materiałów do wykładu rozważymy postać całkową równań<br />
hiperbolicznych opisujących układy fizyki technicznej, wyprowadzimy warunek<br />
Rankine’a-Hugoniota dla fal szokowych (zwanych też uderzeniowymi lub<br />
po prostu szokami), przeprowadzimy dyskusję nieliniowych skalarnych równań,<br />
zdefiniujemy wypukłe i niewypukłe strumienie, przedstawimy proste fale<br />
i charakterystyki związane z tym falami, wprowadzimy warunek entropii dla<br />
fal szokowych, rozwiążemy problem Riemanna dla równań Eulera i wprowadzimy<br />
niezmienniki Riemanna.<br />
Rozpocznijmy nasze rozważania od jedno-wymiarowych równań hiperbolicznych<br />
zapisanych w postaci różniczkowej następująco:<br />
q ,t + f(q) ,x = 0 . (345)<br />
Tutaj q oznacza wektor stanu a f jest strumieniem o składowych takich, że<br />
q = [q 1 , . . . , q m ] T , f = [f 1 , . . . , f m ] T . (346)<br />
9.1 Postać całkowa równań hiperbolicznych<br />
Postać różniczkowa wektorowego prawa zachowania danego równaniem (345)<br />
nie jest poprawna w obecności nieciągłości takich jak szoki i fale kontaktowe<br />
(falę kontaktową zdefiniujemy poniżej)s. Problemów takich nie doznajemy w<br />
przypadku zapisania prawa zachowania w postaci całkowej<br />
∫<br />
d xr<br />
q(x, t) dx = f(q(x l , t)) − f(q(x r , t)) . (347)<br />
dt x l<br />
Tutaj x l i x r wybraliśmy dowolnie. Postać całkowa jest poprawna zarówno dla<br />
rozwiązań ciągłych jak i nieciągłych. Dla gładkiego q(x, t) z równania (347)<br />
100
otrzymamy<br />
∫<br />
d xr<br />
∫<br />
q(x, t) dx = f(q, t)| x xr<br />
l<br />
x<br />
dt<br />
r<br />
= − f ,x dx . (348)<br />
x l<br />
x l<br />
Stąd przenosząc wyrazy na lewą stronę otrzymamy<br />
∫ xr<br />
(q ,t + f ,x ) dx = 0 . (349)<br />
x l<br />
Ponieważ x l i x r są dowolne wnioskujemy stąd, że wyrażenie pod całką wynosi<br />
zero, co prowadzi do równania<br />
q ,t + f ,x = 0 . (350)<br />
Rozważmy komórkę kontrolną (ang. control-volume) [x l , x r ] × [t 1 , t 2 ]. Dokonajmy<br />
całkowania w przedziale czasu [t 1 , t 2 ] równania (347). Otrzymamy<br />
wtedy<br />
∫ t2<br />
t 1<br />
( d<br />
dt<br />
∫ xr<br />
x l<br />
q(x, t) dx<br />
)<br />
dt =<br />
∫ t2<br />
t 1<br />
[f(q(x l , t)) − f(q(x r , t))] dt . (351)<br />
Stąd po obliczeniu całki po czasie po lewej stronie równania znajdziemy, że<br />
∫ xr<br />
x l<br />
q(x, t 2 ) dx =<br />
∫ xr<br />
x l<br />
∫ t2<br />
∫ t2<br />
q(x, t 1 ) dx+ f(q(x l , t)) dt− f(q(x r , t)) dt . (352)<br />
t 1<br />
t 1<br />
Powyższa postać jest używana do konstrukcji schematów objętości skończonych<br />
(ang. finite-volume), które dyskutujemy w rozdz. 10.6.<br />
9.2 Warunek Rankine’a-Hugoniota dla nieciągłości<br />
Rozważmy falę nieciągłą (szokową lub kontaktową) poruszającą się z<br />
prędkością λ s i komórkę kontrolną [x l , x r ] × [t 1 , t 2 ]. Dostosowując równanie<br />
(352) do tej komórki kontrolnej, otrzymamy<br />
∆x q l = ∆x q r + ∆t f(q l ) − ∆t f(q r ) , (353)<br />
∆x = x r − x l , ∆t = t 2 − t 1 . (354)<br />
101
Stąd znajdziemy warunek Rankine’a-Hugoniota<br />
gdzie:<br />
∆f = λ s ∆q , (355)<br />
∆f = f(q r ) − f(q l ), ∆q = q r − q l , λ s = ∆x<br />
∆t . (356)<br />
Ponieważ λ s jest skalarem, wnioskujemy, że ∆q odpowiada fali szokowej tylko<br />
wtedy, jeśli różnica strumienia ∆f jest proporcjonalna do ∆q. W przeciwnym<br />
wypadku nieciągłość ∆q rozpada się na fale. Dla układu liniowego mamy<br />
f = Aq. Wtedy fala szokowa może powstać z uskoku ∆q takiego, że ∆q jest<br />
wektorem własnym macierzy A i λ s jest wartością własną.<br />
9.3 Nieliniowe równania skalarne<br />
W przypadku skalara m = 1, q = q 1 . Mamy wtedy<br />
q ,t + f(q) ,x = 0 . (357)<br />
Z postaci całkowej powyższego równania (patrz równanie (347) dla przypadku<br />
kiedy x l → −∞ i x r → ∞) wnioskujemy, że pole powierzchni ograniczonego<br />
krzywą q(x) i osią x jest stałe w czasie. Dla różniczkowalnego<br />
strumienia f(q) zapiszemy powyższe równanie w postaci quasi-liniowej<br />
q ,t + λ(q)q ,x = 0 , λ(q) = f ,q . (358)<br />
Wnioskujemy stąd, że charakterystyczna prędkość λ zależy od q, tzn. dla<br />
równania Burgersa<br />
λ(q) = q . (359)<br />
Wobec tego prędkość λ rośnie z q. W konsekwencji krzywe charakterystyczne<br />
nie są już równoległe i mogą się one przecinać. Fale mogą się wystramiać prowadząc<br />
do powstawania szoków. Dodatkowo charakterystyczna dla równań<br />
102
nieliniowych fala rozrzedzeniowa może mieć miejsce. Fala ta reprezentuje<br />
proces odwrotny w czasie do procesu powstawania szoku, czyli zaburzenie<br />
nieciągłe ulega wygładzeniu w czasie w fali rozrzedzeniowej a po przejściu<br />
tej fali ośrodek ulega rozrzedzeniu - stąd nazwa fali.<br />
9.4 Równanie ruchu drogowego<br />
Rozważmy ruch pojazdów na jednym pasie autostrady. Niech q(x, t) oznacza<br />
gęstość pojazdów w punkcie x i w czasie t. Gęstość tą znormalizujemy<br />
w ten sposób, że pusta autostarda odpowiada q = 0, natomiast całkowicie<br />
zapełniona autostrada charakteryzuje się q = 1. W ogólności więc 0 ≤ q ≤ 1.<br />
Model ten stanowi dobry wstęp do badania efektów nieliniowych, jako że wyniki<br />
dostarczane przez ruch uliczny (ang. traffic flow) spełniają często nasze<br />
oczekiwania i są intuicyjnie wyczuwalne.<br />
Ponieważ strumień pojazdów jest dany przez uq, gdzie u jest prędkością<br />
pojazdu, równanie ruchu drogowego zapiszemy następująco:<br />
q ,t + (uq) ,x = 0 . (360)<br />
Oczywiste jest, że prędkość pojazdu zależy od gęstości pojazdów. Prosty<br />
model polega na założeniu, że<br />
u(q) = u max (1 − q), 0 ≤ q ≤ 1 . (361)<br />
Stąd wnioskujemy, że dla zerowej gęstości (pustej autostrady) prędkość wynosi<br />
u max . Prędkość ta spada do zera dla całkowicie zapełnionej drogi, dla<br />
której q → 1.<br />
103
9.5 Wypukłe i niewypukłe strumienie<br />
Dla wypukłego strumienia, np. dla równania Burgersa, prędkość charakterystyczna<br />
rośnie monotonicznie z q, tzn.<br />
λ ,q = f ,qq > 0 . (362)<br />
Dla strumienia wklęsłego, np. dla równania ruchu drogowego (ang. traffic<br />
flow equation), prędkość charakterystyczna maleje monotonicznie z q, tzn.<br />
λ ,q = f ,qq < 0 . (363)<br />
Dla niewypukłego i niewklęsłego strumienia, np. dla równania Buckley’a-<br />
Leveretta, prędkość charakterystyczna osiąga lokalne ekstrema. Równanie<br />
Buckley’a-Leveretta stosuje się w przemyśle naftowym. Równanie to będziemy<br />
dyskutować poniżej.<br />
9.6 Krzywe charakterystyczne<br />
Rozważmy problem początkowy<br />
q ,t + λ(q)q ,x = 0 , (364)<br />
q(x, t = 0) = q 0 (x) . (365)<br />
Wzdłuż krzywej charakterystycznej, dx/dt = λ, znajdziemy, że<br />
dq<br />
dt = q ,t + λ(q)q ,x = 0 , (366)<br />
q(x, t = 0) = q 0 (x) . (367)<br />
Wnioskujemy stąd, że q jest stałe, tj.<br />
q(x, t) = q 0 (x 0 ) , (368)<br />
104
wzdłuż charakterystyk,<br />
x = x 0 + λ(q 0 )t , (369)<br />
które są liniami prostymi. Wnioskujemy stąd, że rozwiązanie jest dane niejawnie<br />
w postaci<br />
Zauważmy, że charakterystyki mogą się przecinać. Rzeczywiście z równania<br />
q(x, t) = q 0 (x − λ(q 0 )t) . (370)<br />
otrzymamy:<br />
q(x, t) = q 0 (x − λ(q 0 )t) (371)<br />
q ,t =<br />
q ,x =<br />
λq 0 ,x<br />
1 + tq 0 ,xλ ,q<br />
, (372)<br />
q 0 ,x<br />
1 + tq 0 ,xλ ,q<br />
. (373)<br />
Stąd, kiedy mianownik się zeruje, fala opisana q(x, t) “przewraca się” i powstaje<br />
fala szokowa.<br />
9.7 Problem Riemanna dla równania Burgersa<br />
Określimy problem Riemanna dla równania Burgersa w standardowy sposób,<br />
czyli<br />
q ,t + f(q) ,x = 0 , f(q) = 1 2 q2 , (374)<br />
{ ql , x < 0 ,<br />
q(x, 0) =<br />
(375)<br />
q r , x ≥ 0 .<br />
W przypadku kiedy q l > q r , znajdziemy rozwiązanie problemu Riemanna w<br />
postaci fali szokowej danej następującym wyrażeniem:<br />
⎧<br />
⎨ q l , x/t < s ,<br />
q(x, t) =<br />
(376)<br />
⎩<br />
q r , x/t ≥ s .<br />
105
Z warunku Rankine’a-Hugoniota otrzymamy prędkość fali szokowej<br />
λ s = f(q r) − f(q l )<br />
q r − q l<br />
= 1 2 (q l + q r ) . (377)<br />
9.8 Słabe rozwiązania równania Burgersa<br />
Rozważmy problem Riemanna dla równania Burgersa (374). W przypadku,<br />
gdy q l < q r , mamy dwa rozwiązania: a) szok i b) rozwiązanie ciągłe.<br />
Dla rozwiązania ciągłego q(x, t) możemy zapisać równanie Burgersa następująco:<br />
q ,t + f(q) ,x = q ,t + f(q) ,q q ,x = q ,t + λ(q)q ,x = 0 . (378)<br />
Poszukajmy rozwiązania w postaci funkcji u(x/t) takiej, że<br />
q(x, t) = u(x/t) , q ,t = − x t 2 u′ , q ,x = 1 t u′ . (379)<br />
Wtedy z równania (378) otrzymamy<br />
λ(u) = u = x/t . (380)<br />
W konsekwencji znaleźliśmy rozwiązanie dla fali rozrzedzeniowej (ang. rarefaction<br />
wave), tj.<br />
⎧<br />
q l , x/t < q l ,<br />
⎪⎨<br />
q(x, t) = x/t , q l < x/t < q r ,<br />
(381)<br />
⎪⎩<br />
q r , x/t > q r .<br />
Wnioskujemy stąd, że q zmniejsza swoją wartość (ośrodek staje się rozrzedzony)<br />
po przejściu fali.<br />
Dokonamy dyskusji rozwiązania w postaci fali szokowej po zaprezentowaniu<br />
warunku entropii dla fali szokowej.<br />
9.9 Warunek entropii dla fali szokowej<br />
Warunek entropii jest bardzo pomocny do wyboru fizycznego szoku, poruszającego<br />
się z prędkością λ s . Warunek entropii według Laxa (np. LeVeque<br />
106
2002), zapiszemy następująco:<br />
λ(q l ) > λ s > λ(q r ) . (382)<br />
Wnioskujemy stąd, że charakterystyki z lewej i prawej stron nacierają na<br />
szok. Zauważmy, że nieciągłe rozwiązanie dla przypadku, kiedy q l < q r , nie<br />
spełnia warunku entropii Laxa i dlatego rozwiązanie to jest niefizyczne.<br />
9.10 Problem Riemanna dla równania Burgersa - pełne<br />
rozwiązanie<br />
Dla równania Burgersa mamy następujące fizyczne rozwiązania:<br />
1. szok, jeśli q l > q r<br />
⎧<br />
⎨ q l , x/t < s ,<br />
q(x, t) =<br />
⎩<br />
q r , x/t ≥ s ,<br />
s = 1 2 (q l + q r ) . (383)<br />
Tutaj s jest prędkością szoku;<br />
2. falę rozrzedzeniową, jeśli q l ≤ q r<br />
⎧<br />
q l , x/t < q l ,<br />
⎪⎨<br />
q(x, t) = x/t , q l < x/t < q r ,<br />
⎪⎩<br />
q r , x/t > q r .<br />
(384)<br />
9.11 Problem Riemanna dla zmodyfikowanego równania<br />
Burgersa<br />
Rozpatrzmy następujące zmodyfikowane równanie Burgersa<br />
q ,t + f(q) ,x = 0 , f(q) = q 3 . (385)<br />
Zauważmy, że strumień f(q) = q 3 nie jest wypukły, ponieważ f ,qq = 6q<br />
zmienia znak w pobliżu q = 0. Wtedy dla przypadku 0 < q l < q r znajdziemy<br />
107
ozwiązanie problemu Riemanna w postaci fali rozrzedzeniowej<br />
⎧<br />
q l , x < 3ql 2 t ,<br />
⎪⎨ √<br />
q(x, t) = q(x/t) = x , 3t 3q2 l t < x < 3qr 2 t ,<br />
⎪⎩<br />
q r , x > 3qr 2 t .<br />
(386)<br />
Natomiast dla przypadku kiedy 0 < q r < q l , znajdziemy rozwiązanie w<br />
postaci fali szokowej poruszającej się z prędkością<br />
λ s = q 2 l + q l q r + q 2 r . (387)<br />
Dla ujemnych wartości q znajdziemy rozwiązanie w postaci fal mieszanych<br />
(ang. compound waves). W przypadku kiedy q l > 0 > q r , otrzymamy stan<br />
pośredni q m < 0, który łączy stan q l poprzez falę szokową poruszającą się z<br />
prędkością<br />
λ s = q 2 l + q l q m + q 2 m . (388)<br />
Jednocześnie stan q m < 0 i q r połączone są falą rozrzedzeniową. Rozważmy<br />
przypadek q m = −q l /2, dla którego fale związane pojawiają się tylko wtedy,<br />
kiedy q l > 0 > −q l /2 > q r . Rozwiązanie w postaci fal mieszanych możemy<br />
wtedy zapisać następująco:<br />
⎧<br />
⎨ q l , x < λ s t = (ql 2 + q l q m + qm)t 2 = 3qmt 2 ,<br />
q(x, t) = q(x/t) =<br />
⎩ − √ x<br />
, 3t 3q2 mt < x < 3qr 2 t , q r , x > 3qr 2 t .<br />
Rozwiązanie w postaci fal mieszanych przedstawia rys. 6.<br />
(389)<br />
Zalecane eksperymenty<br />
Proponujemy wykonanie następujących ćwiczeń:<br />
• zapoznajmy się z programem rozwiązującym równanie Burgersa<br />
• uruchommy program dla przypadku fali szokowej. Obserwujmy rozwój<br />
szoku z zaburzenia początkowego<br />
108
Rysunek 6: Problem Riemanna dla zmodyfikowanego równania Burgersa. Dla t = 0<br />
s nieciągłość znajdowała się w x = 0. Panele przedstawiają rozwiązanie dla t = 0.27<br />
s. Pionowe linie odpowiadają (analitycznie obliczonym) położeniom fal szokowych<br />
lub fal rozrzedzeniowych. W lewym panelu linia przerywana przedstawia dokładne<br />
rozwiązanie fal mieszanych.<br />
• eksperymentujmy z zaburzeniem początkowym odpowiadającym fali<br />
rozrzedzeniowej, która jest charakterystyczną cechą równań nieliniowych<br />
• wybierzmy różne metody <strong>numeryczne</strong>, które wbudowane są w programie,<br />
i doświadczmy jak wpływają one na otrzymane rozwiązania<br />
• zaobserwujmy usterkę w entropii w tzw. punkcie dźwiękowym w przypadku<br />
fali rozrzedzeniowej i metody Godunowa. Zauważmy, że usterka<br />
w entropii znika dla schematu Laxa-Friedrichsa. Ponieważ schemat ten<br />
jest bardziej dyfuzyjny niż metoda Godunowa, wnioskujemy, że nad-<br />
109
miar dyfuzji prowadzi do schematów, które zachowują entropię<br />
• polepszmy naszą wiedzę o wybranych pakietach wizualizacji danych<br />
numerycznych<br />
• przemyślmy i wybierzmy nasz własny projekt <strong>numeryczne</strong>go rozwiązania<br />
równania skalarnego. Przykładowymi równaniami są: wyższego<br />
rzędu równanie Burgersa q ,t + f(q) ,x = 0 , f(q) = q 3 , równanie ruchu<br />
drogowego, równanie Buckley’a-Leveretta. Inne przykładowe projekty<br />
mogą być znalezione na stronie<br />
http://www.amath.washington.edu/~claw/<br />
110
10 Wykład 17-18: <strong>Modelowanie</strong> <strong>zjawisk</strong> fizyki<br />
technicznej z wykorzystaniem równań Eulera<br />
Równania Eulera opisują <strong>zjawisk</strong>a w płynach takich jak gazy (np. powietrze)<br />
i ciecze (np. woda). W szczególności równania te zastosujemy do<br />
wykonania symulacji numerycznych zanieczyszczeń powietrza w Rozdz. 12.9.<br />
Wersja okrojona tych równań stanowić będzie równania płytkiej wody (patrz<br />
Rozdz. 15). Natomiast wersja rozszerzona o równania Maxwella stanowić będzie<br />
magnetohydrodynamiczny model plazmy (Rozdz. 13). Części składowe<br />
tych równań (równanie zachowania masy i równanie zachowania pędu) bedą<br />
wykorzystane do wyprowadzania równań opisujących dynamika ropy naftowej,<br />
wody i polimeru w zastosowaniu w przemyśle naftowym (Rozdz. 14.1)<br />
oraz modelu odkształceń sprężystych w układach mechanicznych (Rozdz. 14.2).<br />
Dlatego zrozumienie numerycznych metod rozwiązywania równań Eulera jest<br />
dla nas niezwykle ważne i poświęcimy tym metodom niniejszy wykład.<br />
10.1 Jedno-wymiarowe równania Eulera<br />
Zapiszmy jedno-wymiarowe równania Eulera w formie zachowawczej jako<br />
q ,t + f(q) ,x = 0 . (390)<br />
Tutaj wektor zachowawczego stanu q i strumień f dane są następująco:<br />
⎡<br />
q(x, t) =<br />
⎢<br />
⎣<br />
⎤ ⎡ ⎤<br />
q 1<br />
ϱ(x, t)<br />
q 2<br />
=<br />
⎥ ⎢ ϱu(x, t)<br />
, (391)<br />
⎥<br />
⎦ ⎣ ⎦<br />
q 3 E(x, t)<br />
111
⎡<br />
⎤ ⎡<br />
ϱu<br />
f(q) =<br />
⎢ ϱu 2 + p<br />
=<br />
⎥ ⎢<br />
⎣<br />
⎦ ⎣<br />
u(E + p)<br />
q 2<br />
1<br />
2 (3 − γ) q2 2<br />
q1<br />
+ (γ − 1)q 3<br />
q 2<br />
q 1<br />
(γq 3 − γ−1<br />
2<br />
q 2 2<br />
q1<br />
)<br />
Przepiszmy teraz powyższe równania w postaci quasi-liniowej<br />
⎤<br />
. (392)<br />
⎥<br />
⎦<br />
q ,t + A c q ,x = 0 , (393)<br />
z macierzą Jacobiego<br />
⎡<br />
A c = f ,q =<br />
⎢<br />
⎣<br />
⎡<br />
=<br />
⎢<br />
⎣<br />
−γ q 2q 3<br />
q 2 1<br />
0 1 0<br />
1<br />
2 (γ − 3) q2 2<br />
q 2 1<br />
+ (γ − 1) q3 2<br />
q 3 1<br />
(3 − γ) q 2<br />
q 1<br />
γ − 1<br />
γ q 3<br />
q 1<br />
− 3 2 (γ − 1) q2 2<br />
q 2 1<br />
0 1 0<br />
1<br />
(γ − 2 3)u2 (3 − γ)u γ − 1<br />
u[(γ − 1) u2<br />
2 − H] H − (γ − 1)u2 γu<br />
γ q 2<br />
q 1<br />
⎤<br />
⎤<br />
⎥<br />
⎦<br />
. (394)<br />
⎥<br />
⎦<br />
Zdefiniowaliśmy tutaj gęstość całkowitej entalpii<br />
Zauważmy, że f(q) = A c q.<br />
H = E + p<br />
ϱ<br />
Mamy następujące równanie diagonalizacyjne:<br />
. (395)<br />
R −1<br />
c A c R c = Λ (396)<br />
z macierzą wektorów własnych R c . Kolumny tej macierzy stanowią prawe<br />
wektory własne, tj.<br />
⎡<br />
R c = [ ] r (1)<br />
c , r (2)<br />
c , r (3)<br />
c = ⎢<br />
⎣<br />
⎤<br />
1 1 1<br />
u − c s u u + c s<br />
. (397)<br />
⎥<br />
⎦<br />
u<br />
H − uc 2<br />
s H + uc<br />
2 s<br />
112
√<br />
Wykorzystaliśmy tutaj wyrażenie na prędkość dźwięku c s = γp/ϱ i wprowadziliśmy<br />
macierz Λ jako<br />
⎡<br />
⎤ ⎡<br />
⎤<br />
λ (1) 0 0<br />
u − c s 0 0<br />
Λ =<br />
⎢ 0 λ (2) 0<br />
=<br />
⎥ ⎢ 0 u 0<br />
. (398)<br />
⎥<br />
⎣<br />
⎦ ⎣<br />
⎦<br />
0 0 λ (3) 0 0 u + c s<br />
Równania Eulera mogą być również zapisane w postaci niezachowawczej.<br />
Aby tego dokonać, wprowdźmy niezachowawczy wektor stanu, w, taki, że<br />
⎡ ⎤ ⎡ ⎤<br />
w 1<br />
ϱ<br />
w =<br />
⎢ w 2<br />
=<br />
⎥ ⎢ u<br />
. (399)<br />
⎥<br />
⎣ ⎦ ⎣ ⎦<br />
w 3 p<br />
Z wykorzystaniem w przepiszemy równania Eulera w postaci quasi-liniowej<br />
Wprowadziliśmy tutaj niezachowawczą macierz<br />
⎡<br />
⎤<br />
u ϱ 0<br />
A n =<br />
1<br />
⎢ 0 u .<br />
ϱ ⎥<br />
⎣<br />
⎦<br />
0 ϱc 2 s u<br />
w ,t + A n w ,x = 0 . (400)<br />
10.2 Problem własny dla macierzy A c i A n<br />
Problem własny dla macierzy A c i A n określa równanie<br />
A m r (i)<br />
m = λ (i) r (i)<br />
m , m = c, n , i = 1, 2, 3 , (401)<br />
gdzie r (i)<br />
m jest prawym wektorem własnym a λ (i) oznacza odpowiednią wartość<br />
własną.<br />
Prawymi wektorami własnymi macierzy A n są<br />
⎡<br />
⎤<br />
R n = [ 1 1 1<br />
] r (1)<br />
n , r (2)<br />
n , r (3)<br />
n = ⎢ − c s<br />
ϱ<br />
0 c s<br />
ϱ<br />
. (402)<br />
⎥<br />
⎣<br />
⎦<br />
c 2 s 0 c 2 s<br />
113
Zauważmy, że prawe wektory własne macierzy A c i A n różnią się od<br />
siebie, podczas gdy im odpowiadające wartości własne są identyczne i dane<br />
są następująco:<br />
λ (1) = q 2<br />
q 1<br />
− c s , λ (2) = q 2<br />
q 1<br />
, λ (3) = q 2<br />
q 1<br />
+ c s . (403)<br />
Ponieważ wartości te są rzeczywiste i odpowiadają one liniowo niezależnym<br />
wektorom własnym r (1)<br />
m , r (2)<br />
m , r (3)<br />
m , m = c, n, wnioskujemy stąd, że równania<br />
Eulera są hiperboliczne.<br />
Wartości własne zadane równaniem (403) są związane z faktem, że informacja<br />
z dowolnego punktu płynu przepływa zgodnie z następującymi równaniami<br />
charakterystycznymi:<br />
dx<br />
dt<br />
dx<br />
dt<br />
= λ (2) = u , (404)<br />
= λ (1),(3) = u ± c s . (405)<br />
10.3 Uogólnione niezmienniki Riemanna<br />
Zdefiniujemy uogólnione niezmienniki Riemanna jako zależności, które są<br />
spełnione dla danej fali, czyli<br />
d˜q 1<br />
r (i)<br />
m1<br />
= d˜q 2<br />
r (i)<br />
m2<br />
= d˜q 3<br />
, ˜q = q, w , i = 1, 2, 3 , m = c, n . (406)<br />
r (i)<br />
m3<br />
Tutaj ˜q jest albo zachowawczym (q) lub niezachowawczym (w) wektorem<br />
stanu, r (i)<br />
mj, j = 1, 2, 3, jest j-tą składową i-tego prawego wektora własnego<br />
macierzy A c<br />
lub A n . Zauważmy, że niezmienniki Riemanna, dane równaniem<br />
(406), mogą być użyte zarówno do zachowawczej i niezachowawczej<br />
postaci układu hiperbolicznych równań różniczkowych.<br />
Zastosujemy teraz uogólnione niezmienniki Riemanna do fali kontaktowej,<br />
która jest tzw. prostą falą poruszającą się z prędkością λ (2)<br />
114<br />
= u. Po
wykorzystaniu wyrażeń na wektory własne (397) dla układu zachowawczego,<br />
otrzymamy z uogólnionych niezmienników Riemanna następujące wyrażenie<br />
dϱ<br />
1 = d(ϱu)<br />
u<br />
= dE<br />
1<br />
2<br />
u2<br />
. (407)<br />
Stąd znajdziemy, ze ciśnienie i prędkość są stałe po obu stronach fali kontaktowej,<br />
czyli<br />
p = const , u = const . (408)<br />
Powyższe wyrażenie możemy otrzymać natychmiast z postaci niezachowawczej<br />
równań Eulera. Wykorzystując równania (399) i (402) zapiszemy uogólnione<br />
niezmienniki Riemanna jako<br />
Stąd otrzymamy równanie (408).<br />
dϱ<br />
1 = du 0 = dp<br />
0 . (409)<br />
W podobny sposób znajdziemy, że uogólnione niezmienniki Riemanna,<br />
które związane są z wartościami własnymi λ (1) and λ (3) , dane są następująco:<br />
∫ γdp<br />
R ± = u ± . (410)<br />
ϱc s<br />
Oczywiście, R ± są stałymi wzdłuż charakterystyk x = x(t) określonych równaniem<br />
(405). Charakterystyki te związane są z falami akustycznymi, które<br />
biegną w lewą i prawą stronę w układzie poruszającym się z prędkością<br />
dźwięku.<br />
Określimy teraz charakterystyczne pole, które jest stowarzyszone z charakterystyczną<br />
prędkością λ (i) i prawym wektorem własnym r (i) . Pole to jest<br />
liniowo zdegenerowane, jeżeli<br />
∇λ (i) (q) · r (i) = 0 . (411)<br />
W przeciwnym wypadku pole to jest prawdziwie nieliniowe. Zauważmy, że dla<br />
równań liniowych λ (i) = const. Stąd ∇λ (i) = 0. Otrzymaliśmy stąd oczywisty<br />
wniosek, że równania liniowe są liniowo zdegenerowane.<br />
115
Po wykorzystaniu równania (404) znajdziemy, że<br />
∂λ (2)<br />
(<br />
∂q = λ(2) ,q = − q 2<br />
, 1 )<br />
, 0<br />
q1<br />
2 q 1<br />
. (412)<br />
Ponieważ<br />
λ (2) ,q · r (2)<br />
c = 0 , (413)<br />
wnioskujemy stąd, że pole związane z r (2)<br />
c<br />
jest liniowo zdegenerowane. W<br />
konsekwencji z r (2)<br />
c (r (1)<br />
c i r (3)<br />
c ) związana jest fala kontaktowa (szoki lub fale<br />
rozrzedzeniowe).<br />
10.4 Klasyczny problem Riemanna dla równań Eulera<br />
Przypomnijmy, że klasycznym problemem Riemanna jest problem Cauchy’ego<br />
z zaburzeniem początkowym zadanym funkcją kawałkami stałą, czyli<br />
⎧<br />
⎪⎨ q l , dla x < 0 ,<br />
q(x, t = 0) =<br />
⎪⎩ q r , dla x > 0 .<br />
(414)<br />
Tutaj q l i q r oznaczają odpowiednio lewy stan i prawy stan. Dla prostoty<br />
przyjmiemy, że q l i q r są stałymi. Rozwiązanie problemu Riemanna polega<br />
na znalezieniu układu fal ewoluujących ze stanów q l i q r w lewą i prawą<br />
stronę. Fale te składają się z szoków, fal rozrzedzeniowych i fali kontaktowej.<br />
Problem Riemanna przypomina więc scenariusz związany z wyimaginowaną<br />
membraną, która oddziela dwa różne stany q l i q r . Kiedy membrana ta zostanie<br />
usunięta, pojawią się fale.<br />
Dla równań Eulera rozwiązanie składa się z fal biegnących ze skończonymi<br />
prędkościami. Fale te mogą być szokami lub falami rozrzedzeniowymi<br />
i falą kontaktową leżącą między nimi. Procedura polegająca na rozwiązaniu<br />
problemu Riemanna nazywa się rozwiązaniem Riemanna (ang. Riemann solver).<br />
Najbardziej popularną metodą rozwiązania problemu Riemanna jest<br />
116
ozwiązanie Roe’a (1981). Poniżej rozpatrzymy kilka przypadków rozwiązania<br />
Riemanna.<br />
Do opisu fali szokowej poruszającej się z prędkością λ s możemy zastosować:<br />
a) warunek Rankinea-Hugoniota<br />
f(q r ) − f(q l ) = λ s (q r − q l ) ; (415)<br />
b) warunek entropii<br />
λ (i) (q l ) > λ s > λ (i) (q r ) ; (416)<br />
c) uogólnione niezmienniki Riemanna.<br />
Falę kontaktową poruszającą się z prędkością λ c opiszemy natomiast z pomocą:<br />
a) warunku Rankine’a-Hugoniota<br />
f(q r ) − f(q l ) = λ c (q r − q l ) ; (417)<br />
b) warunku równoległych charakterystyk<br />
λ (i) (q l ) = λ (i) (q r ) = λ c ; (418)<br />
c) uogólnionych niezmienników Riemanna.<br />
Do opisu fali rozrzedzeniowej zastosujemy:<br />
1. uogólnione niezmienniki Riemanna;<br />
2. rozbieżność charakterystyk (rys. 7)<br />
λ (i) (q l ) < λ (i) (q r ) . (419)<br />
117
Rysunek 7: Charakterystyki dla fali rozrzedzeniowej.<br />
Ponieważ fala rozrzedzeniowa odpowiada gładkiemu przepływowi, wygodnie<br />
jest zapisać równania Eulera z wykorzystaniem wektora stanu, który zawiera<br />
entropię, czyli<br />
w = [ϱ, u, s] T . (420)<br />
Tutaj entropia s(x, t) jest zdefiniowana jako<br />
( ) p<br />
s = c v ln + s<br />
ϱ γ 0 (421)<br />
z s 0 będącym stałą i c v oznaczającym ciepło właściwe dla stałej objętości. W<br />
konsekwencji ewolucja entropii odbywa się zgodnie z równaniem unoszenia<br />
s ,t + us ,x = 0 . (422)<br />
Wnioskujemy stąd, że dla gładkiego (bez szoków i fal kontaktowych) przepływu<br />
entropia s jest stała wzdłuż charakterystycznej krzywej, dx/dt = u.<br />
Dla fali rozrzedzeniowej możemy zapisać równania Eulera w następującej<br />
postaci:<br />
w ,t + A(w)w ,x = 0 , (423)<br />
gdzie<br />
⎡<br />
A(w) =<br />
⎢<br />
⎣<br />
u ϱ 0<br />
c 2 s<br />
ϱ<br />
u p ,s<br />
ϱ<br />
0 0 u<br />
⎤<br />
. (424)<br />
⎥<br />
⎦<br />
118
Wartość własna λ (i) i wektor własny r (i) , i = 1, 2, 3, macierzy A(w) zapiszemy<br />
jako<br />
λ (1) = u − c s , λ (2) = u , λ (3) = u + c s ,<br />
⎡<br />
⎤<br />
(425)<br />
1 −p ,s 1<br />
[r (1) , r (2) , r (3) ] =<br />
⎢ − c s<br />
c<br />
ϱ<br />
0 s<br />
ϱ<br />
.<br />
⎥<br />
⎣<br />
⎦<br />
0 c 2 s 0<br />
(426)<br />
Równanie (423) może być wykorzystane do opisu fali rozrzedzeniowej.<br />
Rzeczywiście uogólnione niezmienniki Riemanna dla tej fali, która porusza<br />
się w lewo ze swoją prędkością λ (1) , prowadzą do zależności<br />
Wnioskujemy stąd, że<br />
∫<br />
s = const , u +<br />
dϱ<br />
1 = du<br />
−c s /ϱ = ds<br />
0 . (427)<br />
dϱ<br />
c s<br />
ϱ = u + 2c s<br />
γ − 1<br />
= const . (428)<br />
Po wykonaniu podobnych rachunków ale dla fali rozrzedzeniowej poruszającej<br />
się w prawą stronę z prędkością λ (3) otrzymamy<br />
s = const. ,<br />
∫<br />
u −<br />
Rozważmy następujące przypadki:<br />
dϱ<br />
c s<br />
ϱ = u − 2c s<br />
γ − 1<br />
1. falę biegnącą w lewą stronę. Falą tą może być:<br />
= const . (429)<br />
(a) szok, który opiszemy warunkami Rankine-Hugoniota. Wygodnie<br />
warunki te zapisać w układzie poruszającym się z prędkością fali<br />
szokowej λ l . Wtedy warunki te prowadzą do następujących równań:<br />
ϱ l û l = ϱ ∗l û ∗l , (430)<br />
ϱ l û 2 l + p l = ϱ ∗l û 2 ∗l + p ∗ , (431)<br />
û l (Êl + p l ) = û ∗ (Ê∗l + p ∗ ) , (432)<br />
119
gdzie:<br />
û l = u l − λ l , û ∗ = u ∗ − λ l ; (433)<br />
(b) fala rozrzedzeniowa, którą opiszemy równaniem stanu odpowiadającym<br />
stałej entropii<br />
p = Cϱ γ , C = const. (434)<br />
i uogólnionym niezmiennikiem Riemanna danym równaniem (428),<br />
tj.<br />
u l + 2c sl<br />
γ − 1 = u ∗ + 2c s∗<br />
γ − 1 ; (435)<br />
2. falę biegnącą w prawą stronę. Falą tą może być szok lub fala rozrzedzeniowa.<br />
Fale te opiszemy analogicznymi warunkami jak dla fali poruszającej<br />
się w lewą stronę.<br />
Problem Riemanna prowadzi do równania przestępnego dla ciśnienia gazu<br />
p ∗ . Szczegóły można znaleźć w równaniu (4.5) znajdującym się w monografii<br />
Toro (2009). Równanie to możemy rozwiązać numerycznie za pomocą metody<br />
iteracyjnej.<br />
10.5 Skoki związane z prostymi falami<br />
Rozważmy równania Eulera, które zapiszemy w postaci niezachowaczej<br />
jako<br />
w ,t + Aw ,x = 0 . (436)<br />
Tutaj wektor stanu<br />
w = [ϱ, u, p] T . (437)<br />
Wygodnie jest zastosować charakterystyczne równania<br />
l (i) · dw = 0 dla<br />
dx<br />
dt = λ(i) , (438)<br />
120
gdzie l (i) jest lewym wektorem własnym macierzy A takim, że l (i) A = λ (i) l (i) .<br />
Dla równań Eulera mamy<br />
l (1) =<br />
[<br />
0, 1, − 1<br />
ϱc s<br />
]<br />
, l (2) =<br />
Wartości własne dane są następująco:<br />
[<br />
1, 0, − 1 c 2 s<br />
]<br />
, l (3) =<br />
[<br />
0, 1,<br />
]<br />
1<br />
. (439)<br />
ϱc s<br />
λ (1) = u − c s , λ (2) = u , λ (3) = u + c s . (440)<br />
Z równania (438) otrzymamy<br />
dp = ϱc s du dla dx<br />
dt = λ(1) = u − c s , (441)<br />
dp = ϱc 2 sdϱ dla dx<br />
dt = λ(2) = u , (442)<br />
dp = −ϱc s du dla dx<br />
dt = λ(1) = u + c s . (443)<br />
Powyższe równania możemy wykorzystać do rozwiązania problemu Riemanna.<br />
Jak już wiemy, struktura fal w problemie Riemanna dla równań Eulera składa<br />
się z szoków, fal rozrzedzeniowych i fali kontaktowej. W wiatraku Riemanna<br />
środkową falą jest fala kontaktowa, natomiast po jej obu stronach znajdują<br />
się fale rozrzedzeniowe lub szoki (rys. 8).<br />
Zauważmy, że dla równania unoszenia<br />
w = q , A = λ , l = 1 . (444)<br />
Wtedy z równania (438) otrzymamy, że dq = 0 wzdłuż charakterystyki<br />
dx/dt = λ, co pokazaliśmy powyżej.<br />
Więcej szczegółów dotyczących rozwiązania problemu Riemanna dla równań<br />
Eulera znajdziemy w monografii Toro (2009).<br />
121
Rysunek 8: Wiatrak Riemanna i skoki związane z prostymi falami dla równań<br />
Eulera.<br />
10.6 Metody <strong>numeryczne</strong> dla układu hiperbolicznych<br />
równań fizyki technicznej<br />
W tej części wykładów dokonamy dyskusji metod objętości skończonych<br />
dla układu hiperbolicznych równań fizyki technicznej. W szczególności rozpatrzymy<br />
metodę fal biegnących, zaprezentujemy schemat Laxa-Friedrichsa<br />
i warunki stabilności schematów numerycznych.<br />
10.6.1 Zachowawcze metody <strong>numeryczne</strong><br />
Możemy dokonać dyskretyzacji równania zachowania<br />
w następującej postaci:<br />
q n+1<br />
i<br />
q ,t + f(q) ,x = 0 (445)<br />
= q n i + ∆t<br />
∆x (f i−1/2 − f i+1/2 ) . (446)<br />
Tutaj indeksy x ± 1/2 odpowiadają brzegom komórek numerycznych, którym<br />
przypisano indeksy całkowite i (oznaczające środki komórek), a f i±1/2<br />
122
oznacza strumienie liczone na lewym (i − 1/2) i prawym (i + 1/2) brzegach i-<br />
tej komórki. Powyższy sposób dyskretyzacji równania z uwzględnieniem jego<br />
właściwości zachowania nazywamy zachowawczą metodą numeryczną.<br />
10.7 Metody objętości skończonych<br />
Dokonajmy teraz dyskretyzacji układu równań hiperbolicznych<br />
q ,t + f(q) ,x = ˜s(q) , (447)<br />
z wykorzystaniem metody objętości skończonych, którą zapiszemy następująco:<br />
q n+1<br />
i<br />
Zastosowaliśmy tutaj<br />
= q n i + ∆t<br />
∆x (f i−1/2 − f i+1/2 ) + ∆t˜s i . (448)<br />
q n i = 1<br />
∆x<br />
fi+1/2 n = 1 ∆t t<br />
1<br />
˜s i =<br />
∆x∆t<br />
∫ xi+1/2<br />
x i−1/2<br />
q(x, t n ) dx , (449)<br />
∫ t+∆t<br />
f(q(x i+1/2 , t)) dt , (450)<br />
∫ xi+1/2<br />
∫ t+∆t<br />
x i−1/2<br />
t<br />
˜s(q(x, t)) dx dt . (451)<br />
Niezwykle ważne jest odpowiednie obliczenie strumienia <strong>numeryczne</strong>go f n i+1/2 .<br />
Jeden ze sposobów polega na wykorzystaniu uśrednienia<br />
f n i±1/2 = 1 2 (f n i + f n i±1) . (452)<br />
Jednakże sposob ten nie jest skuteczny, ponieważ może on prowadzić do<br />
niestabilnego schematu <strong>numeryczne</strong>go. Lepsze sposoby znalezienia strumienia<br />
<strong>numeryczne</strong>go fi+1/2 n przedstawimy poniżej. Zanim to jednak zrobimy zauważmy,<br />
że metoda objętości skończonych naśladuje zachowawcze własności<br />
równania. Cecha ta jest bardzo ważna ze względu na adekwatną reprezentację<br />
rozwiązań układu równań hiperbolicznych. Wyjaśnimy to na przykładzie<br />
123
ównania Burgersa, które zapiszemy teraz w postaci niezachowawczej<br />
q ,t + qq ,x = 0 . (453)<br />
Rozważmy przypadek q > 0 i zaadoptujmy schemat pierwszego-rzędu dokładny<br />
taki, że<br />
q n+1<br />
i<br />
= q n i + ∆t<br />
∆x qn i (q n i−1 − q n i ) . (454)<br />
Zauważmy, że dane początkowe [1, 1, 1, 0, 0, 0] są rozwiązaniem powyższego<br />
schematu <strong>numeryczne</strong>go, chociaż reprezentowany przez te dane szok powinien<br />
poruszać się z prędkością λ s = 0.5. To zdecydowanie błędne zachowanie<br />
danych początkowych wynika z faktu, że schemat numeryczny dany równaniem<br />
(454) nie jest schematem zachowawczym.<br />
10.8 Metoda fal biegnących<br />
Przedstawimy tutaj metodę fal biegnących według metodologii wprowadzonej<br />
przez LeVeque (2002) dla układu hiperbolicznych równań różniczkowych.<br />
Metoda ta zastosowana jest w pakiecie CLAWPACK (LeVeque 2002).<br />
W metodzie tej różnicę ∆q i , obliczonę w punkcie x i , możemy zapisać jako<br />
∆q i ≡ q i − q i−1 =<br />
m∑<br />
j=1<br />
α (j)<br />
i r (j)<br />
i ≡<br />
m∑<br />
W j i . (455)<br />
j=1<br />
Tutaj W j i<br />
oznacza j-tą falę, λ (j)<br />
i<br />
jest jej prędkością i α (j)<br />
i<br />
współczynnikiem mierzącym amplitudę tej fali, czyli<br />
jest skalarnym<br />
α i = R −1 ∆q i . (456)<br />
Tutaj<br />
α i = [α (1)<br />
i , α (2)<br />
i , . . . , α (m)<br />
i ] (457)<br />
124
i R oznacza wektor, którego kolumny są prawymi wektorami własnymi macierzy<br />
A charakteryzującej następujący układ hiperbolicznych równań różniczkowych:<br />
Niech q 0 i<br />
q ,t + Aq ,x = 0 . (458)<br />
będzie wartością q obliczoną między komórkami o wartościach<br />
w nich q i−1 i q i . Wtedy z wykorzystaniem równania (455) możemy napisać<br />
q 0 i − q i−1 = ∑<br />
λ (j)<br />
i 0<br />
W (j)<br />
i , (459)<br />
W (j)<br />
i . (460)<br />
Strumień na granicy między komórkami możemy wyrazić na dwa sposoby<br />
(LeVeque 2002):<br />
f(q 0 i ) = Aq 0 i = Aq i−1 + ∑<br />
f(q 0 i ) = Aq 0 i = Aq i − ∑<br />
λ (j)<br />
i 0<br />
λ (j)<br />
i W j i ≡ f(q i−1 ) + A − ∆q i , (461)<br />
λ (j)<br />
i W j i ≡ f(q i ) − A + ∆q i . (462)<br />
W powyższych wyrażeniach rozdzieliliśmy macierz A w zależności od znaku<br />
jej wartości własnej λ (j) , tj.<br />
A = A + + A − , A ± = RΛ ± R −1 . (463)<br />
Tutaj Λ + (Λ − ) składa się z zer i dodatnich (ujemnych) składników λ (j) , tj.<br />
Λ ± = diag(λ ± ) ,<br />
λ + = max(λ (j) , 0) , (464)<br />
λ − = min(λ (j) , 0) . (465)<br />
125
Biorąc pod uwagę powyższe rozważania możemy dokonać dyskretyzacji<br />
równania hiperbolicznego w następujący sposób:<br />
gdzie strumień<br />
q n+1<br />
i<br />
= q n i − ∆t<br />
∆x (f i+1 − f i ) , (466)<br />
f i = f(q 0 i ) = Aq 0 i . (467)<br />
Wykorzystajmy teraz równania (461) i (462) do oszacowania odpowiednio<br />
f i+1 i f i . Otrzymamy wtedy<br />
f i = f(q i ) − A + ∆q i , (468)<br />
f i+1 = f(q i ) + A − ∆q i+1 . (469)<br />
Równanie (466) możemy zapisać jako schemat<br />
q n+1<br />
i<br />
= q n i − ∆t<br />
∆x (A− ∆q i+1 + A + ∆q i ) ≡ q n i + ∆ upw<br />
i . (470)<br />
Schemat ten jest pierwszego-rzędu dokładny w przestrzeni i nazywa się schematem<br />
Godunowa dla układu równań hiperbolicznych.<br />
Rysunek 9: Metoda fal biegnących. Przypadek trzech fal.<br />
Możemy otrzymać poprawkę drugiego-rzędu do schematu Godunowa danego<br />
równaniem (470) poprzez zamianę jego prawej strony na (LeVeque 2002)<br />
q n+1<br />
i<br />
= q n i + ∆ upw<br />
i<br />
126<br />
− ∆t<br />
∆x (¯f i+1 − ¯f i ) , (471)
gdzie poprawiający strumień ¯f i określimy jako<br />
¯fi = 1 2<br />
m∑<br />
j=1<br />
(<br />
|λ (j)<br />
i | 1 − ∆t<br />
∆x |λ(j) i |)<br />
¯W j i . (472)<br />
Tutaj ¯W j i jest wyfiltrowaną falą W j i , którą otrzymamy poprzez porównanie<br />
pod-wiatr W j i z W j i−1, jeśli λ (j)<br />
i<br />
> 0 lub z W j i+1, jeśli λ (j)<br />
i<br />
< 0. Szczegółowe<br />
rozważania dotyczące metody fal możemy znaleźć w monografii LeVeque’a<br />
(2002). Metody filtracji danych przedstawimy w dalszych rozdziałach tych<br />
materiałów dydaktycznych.<br />
10.9 Kilka istotnych schematów numerycznych dla równań<br />
fizyki technicznej<br />
Podstawmy równanie (452) do równania (448) z s i<br />
wtedy schemat FTCS<br />
= 0. Otrzymamy<br />
q n+1<br />
i<br />
= q n i + ∆t<br />
2∆x (f n i−1 − f n i+1) . (473)<br />
Przykład: Dla równania skalarnego z wyrażenia (473) otrzymamy<br />
q n+1<br />
i<br />
= q n i + ∆t<br />
2∆x (f n i−1 − f n i+1) . (474)<br />
Schemat FTCS określony równaniem (473) jest bezwarunkowo niestabilny.<br />
Aby dokonać stabilizacji tego schematu zamieńmy q n i przez (q n i−1 +<br />
q n i+1)/2. Procedura zamiany równoważna jest wprowadzeniu strumienia <strong>numeryczne</strong>go<br />
f LF<br />
i+1/2 = 1 2 (f n i<br />
+ f n i+1) + ∆x<br />
2∆t (qn i − q n i+1) . (475)<br />
Wybór taki prowadzi do schematu Laxa-Friedrichsa (LF)<br />
q n+1<br />
i = qn i−1 + q n i+1<br />
+ ∆t<br />
2 ∆x (f i−1/2 n − fi+1/2) n . (476)<br />
127
Zalecane ćwiczenie: Pokażmy, że dla równania unoszenia schemat LF<br />
dany jest następująco:<br />
q n+1<br />
i = 1 2 [(1 + c)qn i−1 + (1 − c)q n i+1] . (477)<br />
Wycentrowany schemat Godunowa (Toro 2009) otrzymamy wybierając<br />
strumień<br />
fi+1/2 n = f(q GODC<br />
i+1/2 ) , (478)<br />
q GODC<br />
i+1/2 = 1 2 (qn i + q n i+1) + ∆t<br />
∆x [f(qn i ) − f(q n i+1)] . (479)<br />
Dwu-stopniowy schemat Laxa-Wendroffa (LW2) otrzymamy natomiast z<br />
równania (448) z s = 0 i strumieniem f określonym jako (Toro 2009)<br />
gdzie<br />
f LW 2<br />
i+1/2 = f(q LW 2<br />
i+1/2) , (480)<br />
q LW 2<br />
i+1/2 = 1 2 (qn i + q n i+1) + ∆t<br />
2∆x [f(qn i ) − f(q n i+1)] . (481)<br />
Schemat FORCE otrzymamy z kolei dla (Toro 2009)<br />
f F ORCE<br />
i+1/2 = 1 4 [f(qn i ) + 2f(q LW 2<br />
i+1/2) + f(q n i+1) + ∆t<br />
∆x (qn i − q n i+1)] (482)<br />
lub równowżnie dla<br />
fi+1/2 F ORCE = 1 LW 2<br />
(fi+1/2 + f LF<br />
2<br />
i+1/2) . (483)<br />
10.10 Metoda Godunowa dla układu hiperbolicznych<br />
równań fizyki technicznej<br />
Określmy problem Riemanna jako<br />
q ,t + f(q) ,x = 0 , (484)<br />
{ ql , x < 0 ,<br />
q(x, 0) =<br />
(485)<br />
q r , x ≥ 0 .<br />
128
Problem ten rozwiążemy poprzez znalezienie następującego wektora stanu:<br />
q i+1/2 (x/t) . (486)<br />
Wektor ten określa numeryczny strumień Godunowa<br />
f n i+1/2 = 1 ∆t<br />
∫ t+∆t<br />
t<br />
f(q(0/t)) dt = f(q(0/t)) . (487)<br />
Strumień numeryczny obliczymy z kolei klasycznego problemu Riemanna, w<br />
którym, przypomnijmy, dane składają się z kawałkami stałych stanów.<br />
Dla układu liniowych równań hiperbolicznych określimy strumień f(q)<br />
jako<br />
q ,t + f(q) ,x = 0 , f(q) = Aq . (488)<br />
Strumień Godunowa znajdziemy natomiast z<br />
f i+1/2 = Aq i+1/2 (0/t) . (489)<br />
10.11 Jedno-wymiarowe równania Eulera<br />
10.11.1 Równania Eulera w zmiennych zachowawczych<br />
Równania Eulera dla jednego wymiaru (m = 3) we współrzędnych kartezjańskich<br />
możemy zapisać w postaci zachowawczej jako<br />
⎡ ⎤ ⎡<br />
⎤<br />
ϱ<br />
ϱu<br />
⎢ ϱu<br />
+<br />
⎥ ⎢ ϱu 2 + p<br />
= 0 , (490)<br />
⎥<br />
⎣ ⎦ ⎣<br />
⎦<br />
E u(E + p)<br />
,t<br />
,x<br />
gdzie E oznacza gęstość energii całkowitej, czyli<br />
E = 1 2 ϱu2 +<br />
p<br />
γ − 1 . (491)<br />
129
10.11.2 Równania Eulera w zmiennych prymitywnych<br />
Równania Eulera możemy zapisać też w zmiennych prymitywnych jako<br />
w ,t + Aw ,x = 0 , (492)<br />
gdzie wektor stanu w i macierz A określone są następująco:<br />
⎡ ⎤<br />
⎡<br />
⎤<br />
ϱ<br />
u ϱ 0<br />
w =<br />
⎢ u<br />
, A =<br />
⎥<br />
⎢ 0 u 1/ϱ<br />
. (493)<br />
⎥<br />
⎣ ⎦<br />
⎣<br />
⎦<br />
p<br />
0 γp u<br />
Wartościami własnymi macierzy A są:<br />
λ (1) = u − c s , λ (2) = u , λ (3) = u + c s (494)<br />
a jej odpowiednie prawe wektory własne to<br />
⎡ ⎤<br />
⎡ ⎤<br />
⎡<br />
1<br />
1<br />
r (1) =<br />
⎢ −c s /ϱ<br />
, r (2) =<br />
⎥<br />
⎢ 0<br />
, r (3) =<br />
⎥<br />
⎢<br />
⎣ ⎦<br />
⎣ ⎦<br />
⎣<br />
0<br />
10.12 Warunek stabilności<br />
c 2 s<br />
1<br />
c s /ϱ<br />
c 2 s<br />
⎤<br />
. (495)<br />
⎥<br />
⎦<br />
Przypomnijmy, że dla równania unoszenia zanieczyszczeń (118) stabilność<br />
schematu określona jest poprzez warunek<br />
∆t = c cfl<br />
∆x<br />
λ , 0 < c cfl ≤ 1 . (496)<br />
Dla układu liniowych równań liniowych warunek stabilności zapiszemy podobnie<br />
jako powyżej, czyli<br />
∆x<br />
∆t = c cfl , s n<br />
s n max = max(|λ (i) |) , i = 1, . . . , m . (497)<br />
max<br />
Dla metody Godunowa możemy znaleźć warunek stabilności w postaci<br />
|c| ≤ 1 ,<br />
c = sn max∆t<br />
∆x<br />
. (498)<br />
130
Krok czasowy ∆t obliczymy wtedy z następującego wyrażenia:<br />
∆x<br />
∆t = c cfl , 0 < c<br />
s n cfl ≤ 1 . (499)<br />
max<br />
Problemem wtedy staje się znalezienie niezawodnego przybliżenia dla s n max.<br />
Ze względów praktycznych polecamy wykorzystanie wartości własnych<br />
s n max = max i (c n si + |u n i |) . (500)<br />
10.13 Wnioski<br />
Podsumujemy tą część wykładów następującymi wnioskami:<br />
1. problem Cauchy’ego dla układu równań hiperbolicznych możemy rozwiązać<br />
analitycznie lub numerycznie;<br />
2. metod Godunowa możemy używać zarówno do liniowych jak i nieliniowych<br />
równań;<br />
3. dla układu liniowych równań hiperbolicznych ze stałą macierzą A charakterystyczne<br />
prędkości są określone przez wartości własne macierzy<br />
A i są one identyczne do prędkości fal w problemie Riemanna;<br />
4. dla układu nieliniowych równań hiperbolicznych charakterystyczne prędkości<br />
różnią się od prędkości fal w problemie Riemanna i dlatego wymagane<br />
jest staranne wybranie maksymalnych prędkości dla warunku<br />
stabilności (CFL).<br />
131
11 Wykład 19: Metody Godunowa i przybliżone<br />
sposoby rozwiązania problemu Riemanna<br />
dla równań hiperbolicznych<br />
Przegląd tej części wykładu<br />
W tej części wykładu przedstawimy:<br />
• przybliżone metody rozwiązania problemu Riemanna dla hiperbolicznych<br />
równań różniczkowych;<br />
• ograniczymy swoje rozważania do najbardziej popularnej metody Roe’a.<br />
Inne znane metody (HLL i HLLC) rozważymy w Dodatkach.<br />
11.1 Metoda Godunowa<br />
Rozważmy następujące równania hiperboliczne:<br />
q ,t + f(q) ,x = 0 . (501)<br />
Możemy dokonać dyskretyzacji tego równania w postaci<br />
q n+1<br />
i<br />
Tutaj strumień Godunowa zapiszemy jako<br />
= q n i + ∆t<br />
∆x (f n i−1/2 − f n i+1/2) . (502)<br />
f n i+1/2 = f(q i+1/2 (0)) . (503)<br />
Strumień ten otrzymujemy w wyniku rozwiązania problemu Riemanna, które<br />
prowadzi do q i+1/2 (x/t).<br />
132
11.2 Przybliżone metody rozwiązywania problemu Riemanna<br />
Zauważmy, że dla równań Eulera możemy rozwiązać problem Riemanna.<br />
Rozwiązanie prowadzi jednak do równania przestępnego (Toro 2009). Do rozwiązania<br />
tego równania musimy wobec tego stosować metody <strong>numeryczne</strong>,<br />
które ze względu na iteracje rozwiązań mogą być czasochłonne. Z tego powodu<br />
często korzystniej jest zastosować przybliżone metody rozwiązywania<br />
problemu Riemanna. Metody te prowadzą wielokrotnie do lepszych wyników<br />
niż metoda dokładna.<br />
Poniżej przestawimy trzy przybliżone metody rozwiązywania problemu<br />
Riemanna. Metody te oparte są na przybliżeniu strumienia, który może być<br />
skonstruowany według następujących zasad:<br />
1. znalezieniu przybliżonego stanu strumienia<br />
f n i+1/2 = f(q i+1/2 (0)) , (504)<br />
gdzie q i+1/2 (x/t) jest przybliżonym rozwiązaniem problemu Riemanna;<br />
2. znalezieniu przybliżonego strumienia, dla którego f n i+1/2<br />
bezpośredniego przybliżenia strumienia.<br />
składa się z<br />
11.3 Metoda Roe rozwiązania problemu Riemanna<br />
Rozważmy ponownie jedno-wymiarowy problem Riemanna na brzegu komórki<br />
<strong>numeryczne</strong>j dla układu praw zachowania. Z lewej strony tego brzegu<br />
istnieje stan q l . Natomiast z prawej strony mamy stan q r . Zauważmy, że<br />
dokładne rozwiązanie problemu Riemanna dla układu nieliniowych równań,<br />
takich jak równań Eulera, wymaga zwykle zastosowania metod iteracyjnych,<br />
133
które nie są zbyt wydajne. Dla małych uskoków w problemie Riemanna wystarczające<br />
jest zastosowanie przybliżonych metod, które polegają na lokalnym<br />
zastąpieniu nieliniowych równań liniowym układem równań, takich że<br />
q ,t + A(ū)q ,x = q ,t + Āq ,x = 0 ,<br />
ū = q l + q r<br />
2<br />
. (505)<br />
Idea ta została wprowadzona przez Roe’a (1981), ktory zastosował uśredniony<br />
Jakobian Ā, zastępując w ten sposób Jakobian, A = f ,q , opisujący<br />
jedno-wymiarowy układ równań hiperbolicznych. Uśredniony Jakobian, nazywany<br />
także macierzą Roe’a, określamy tak, że dla dowolnej pary lewego i<br />
prawego stanu (q l , q r ) tzw. Własność U jest spełniona, czyli:<br />
a) Ā liniowo rzutuje przestrzeń wektorową q na przestrzeń wektorową f;<br />
b) Ā(q l , q r ) → f ,q , kiedy q l → q i q r → q;<br />
c) Ā(q l , q r ) posiada rzeczywiste wartości własne i zupełny układ liniowo<br />
niezależnych wektorów własnych;<br />
d) Ā(q r − q l ) = f r − f l dla dowolnego q l i q r .<br />
Uśredniony stan ¯q wybierzemy tak, aby własność d) była spełniona. W<br />
przypadku równań Eulera lub równań MHD wybierzemy uśrednioną gęstość<br />
masy jako<br />
¯ϱ = √ ϱ l ϱ r . (506)<br />
Pozostałe zmienne, takie jak V, E, oznaczone tutaj przez φ, uśrednimy następująco:<br />
¯φ =<br />
√<br />
ϱl φ l + √ ϱ r φ r<br />
√<br />
ϱl + √ ϱ r<br />
. (507)<br />
Kiedy dokonamy uśrednienia wszystkich zmiennych, rozważymy zlinearyzowany<br />
problem Riemanna dla równania (505). Problem ten musimy rozwiązać<br />
na brzegach każdej komórki <strong>numeryczne</strong>j. Dokładne rozwiązanie tego<br />
134
przybliżonego problemu Riemanna możemy wyrazić z wykorzystaniem prawych<br />
wektorów własnych r (i) macierzy Ā jako<br />
m∑<br />
∆q ≡ q r − q l = α (i) r (i) . (508)<br />
i=1<br />
Tutaj m odpowiada liczbie wektorów własnych. Współczynnik α (i) możemy<br />
określić poprzez pomnożenie powyższego równania przez lewy wektor własny<br />
l (j) . Wykorzystując ortonormalność lewych i prawych wektorów własnych,<br />
l (j) r (i) = δ ji , (509)<br />
otrzymamy wyrażenie<br />
α (i) = l (i) ∆q. (510)<br />
Zauważmy, że w powyższych równaniach wartości własne macierzy Ā są prędkościami<br />
fal prostych, prawe wektory własne wyznaczają ścieżki tych fal w<br />
przestrzeni fazowej a lewe wektory własne definiują charakterystyczne równania.<br />
Z własności d), z wykorzystaniem równania (508), otrzymamy przyrost<br />
strumienia ∆f wyrażony jako iloczyn ∆q i odpowiedniej wartości własnej<br />
λ (j) , tj.<br />
m∑<br />
∆f = f r − f l = α (j) λ (j) r (j) . (511)<br />
j=1<br />
Strumień między komórkami numerycznymi możemy wyrazić na trzy sposoby:<br />
f i+1/2 = f l + ∑<br />
α (j) λ (j) r (j) , (512)<br />
f i+1/2 = 1 2<br />
λ (j) ≤0<br />
f i+1/2 = f r − ∑<br />
α (j) λ (j) r (j) , (513)<br />
[<br />
f l + f r −<br />
λ (j) ≥0<br />
m∑<br />
i=1<br />
α (j) |λ (j) |r (j) ]<br />
. (514)<br />
Zauważmy, że otrzymaliśmy równanie (514) poprzez dodanie do siebie<br />
równań (512) i (513).<br />
135
11.4 Zalecane eksperymenty <strong>numeryczne</strong><br />
Polecamy wykonanie następujących eksperymentów numerycznych:<br />
1. porównajmy rozwiązania <strong>numeryczne</strong> otrzymane z wykorzystaniem schematu<br />
Godunowa i schematu Laxa-Friedrichsa z rozwiązaniem analitycznym<br />
(linia ciągła) problemu Riemanna dla równań dla płytkiej wody<br />
2. zwróćmy uwagę na błąd w entropii pojawiający się w przypadku schematu<br />
Godunowa i błędne parowanie punktów dla schematu Laxa-Friedrichsa<br />
11.5 Wnioski<br />
Podsumujemy tą część wykładów tym, że schematy wysokiego-rzędu dokładne<br />
powinny:<br />
1. być conajmniej drugiego rzędu dokładne w obszarach, gdzie rozwiązanie<br />
jest gładkie;<br />
2. nie zawierać zaśmiecających oscylacji;<br />
3. odwzorowywać dokładnie nieciągłości.<br />
Z tego powodu musimy poprawić twierdzenie Godunowa z rozdz. 5.8 i dokonać<br />
konstrukcji schematów nieliniowych. Schematy takie będziemy dyskutować<br />
w następnej części wykładów.<br />
136
12 Wykład 20: Schematy <strong>numeryczne</strong> wyższego<br />
rzędu dokładne dla równań hiperbolicznych<br />
fizyki technicznej<br />
Plan wykładu<br />
W tej części wykładu:<br />
• przedstawimy metody MUSCL i MUSCL-Hancock;<br />
• dokonamy dyskusji dokładności schematu <strong>numeryczne</strong>go;<br />
• przedstawimy metodę (Colella) kawałkami liniowej reprezentacji rozwiązania;<br />
• dokonamy uogólnienia problemu Riemanna, który zastosowany jest w<br />
schemacie ADER (Toro 2009) w Dodatkach.<br />
12.1 Rekonstrukcja danych<br />
Zamiast kawałkami stałych danych możemy użyć kawałkami liniowych<br />
danych, tak jak przedstawiono na rys. 10.<br />
Kawałkami stała dystrybucja danych wynika z<br />
qi n = 1 ∫ xi+ 1<br />
2<br />
ˆq(x, t n )dx . (515)<br />
∆x x i− 1<br />
2<br />
Poprzez rekonstrukcję danych próbujemy uzyskać prawdziwą dystrybucję<br />
ˆq(x, t n ) w każdej komórce <strong>numeryczne</strong>j określonej tak, że x i−<br />
1<br />
2<br />
≤ x ≤ x i+<br />
1 .<br />
2<br />
Użyjmy liniowej rekonstrukcji tak, że q i (x) w komórce <strong>numeryczne</strong>j dana jest<br />
następująco:<br />
q i (x) = q n i + (x − x i)<br />
∆x ∆ i , 0 ≤ x ≤ ∆x i . (516)<br />
137
Rysunek 10: Liniowa reprezentacja (rekonstrukcja) danych w komórce <strong>numeryczne</strong>j<br />
o numerze i.<br />
Tutaj<br />
∆ i = 1 2 (1 + ω)∆ i− 1 2<br />
+ 1 2 (1 − ω)∆ i+ 1 , (517)<br />
2<br />
∆ i−<br />
1<br />
2<br />
∆ i+<br />
1<br />
2<br />
= q n i − q n i−1 , (518)<br />
= q n i+1 − q n i , (519)<br />
gdzie ω jest wolnym parametrem, pełniącym rolę wagi, takim że<br />
a ∆ i<br />
∆x<br />
nazywamy nachyleniem.<br />
|ω| ≤ 1 (520)<br />
Zauważmy, że otrzymamy uśrednioną w komórce wartość rozwiązania<br />
q i (x i ) = q n i . (521)<br />
Wartości rozwiązania na brzegach i-tej komórki (10) znajdziemy natomiast<br />
z następujących wyrażeń:<br />
q L i = q i (0) = q n i − 1 2 ∆ i , (522)<br />
q R i = q i (∆x) = q n i + 1 2 ∆ i . (523)<br />
138
Strumień numeryczny możemy obliczyć wtedy poprzez następujące uśrednienie:<br />
f i+1/2 = 1 [<br />
f(q<br />
R<br />
2 i ) + f(qi+1) ] L , (524)<br />
które prowadzi do schematu drugiego rzędu dokładnego w dyskretyzacji zmiennej<br />
przestrzennej.<br />
W praktyce jednak musimy wyfiltrować nachylenia ∆ i usuwając numerycznie<br />
wygenerowane oscylacje. Podczas porównywania nachyleń dla sąsiednich<br />
(w jednym wymiarze) lewych i prawych komórek siatki <strong>numeryczne</strong>j<br />
zwykle wybieramy nachylenie o najmniejszej wartości, jeśli nachylenia są tego<br />
samego znaku. W przypadku nachyleń o różnych znakach, filtracja polega na<br />
ustaleniu nachylenia zerowym, co odpowiada stałej reprezentacji rozwiązania<br />
w danej komórce <strong>numeryczne</strong>j. Popularnym filtratorem jest opisany równaniem<br />
(531) minmod.<br />
12.2 Metoda MUSCL<br />
Mała dokładność metody Godunowa (1959) wpłynęła natomiast na rozwój<br />
innych metod. Taki wysiłek podjęty został już przez Kolgana (1972),<br />
który zaproponował metodę wygaszania numerycznie wyindukowanych oscylacji<br />
i zaprojektował w ten sposób nie-oscylacyjny schemat typu-Godunowa.<br />
Schemat ten był drugiego-rzędu dokładny.<br />
Bardziej popularnego podejścia dokonał van Leer (1979), który rozszerzył<br />
metodę Godunowa na drugiego-rzędu dokładny schemat zwany MUSCL<br />
(skrót od ang. Monotonic Upstream Scheme for Conservation Laws). Przypomnijmy,<br />
że w metodzie Godunowa (1959) rozwiązanie reprezentowane było<br />
przez stałą w każdej komórce <strong>numeryczne</strong>j (dla danego czasu) funkcję. Rozwiązanie<br />
mogło być jednak nieciągłe na brzegach komórek. Ewolucja układu<br />
do następnej chwili czasu wynikała z oddziaływania prostych fal poruszają-<br />
139
cych się od brzegów sąsiednich komórek siatki <strong>numeryczne</strong>j. Oddziaływanie<br />
to prowadziło do rozwiązania problemu Riemanna. Schemat MUSCL jest<br />
drugiego rzędu dokładny i składa się z dwóch istotnych etapów:<br />
a) interpolacji (rzutowania lub rekonstrukcji) w każdej komórce <strong>numeryczne</strong>j.<br />
Proces ten polegał na aproksymacji rozwiązania w każdej komórce<br />
<strong>numeryczne</strong>j przez liniowe funkcje (rys. 10);<br />
b) dyskretyzacji pod-wiatr, w którym na brzegach komórek obliczamy<br />
strumienie uwzględniając kierunek wiatru.<br />
W przeszłości dokonano wiele wysiłku, aby zwiększyć dokładność na etapie<br />
interpolacyjnym i proprawić wydajność i odporność (ang. robustness) metody<br />
pod-wiatr. Warte podkreślenia jest, że dokładność interpolacji możemy<br />
uzyskać dla przypadku gładkich danych. Jednakże w obecności fal szokowych<br />
techniki interpolacyjne prowadzą do numerycznie wygenerowanych oscylacji,<br />
140
które możemy konktrolować poprzez wprowadzenie ograniczenia na monotoniczność<br />
schematu <strong>numeryczne</strong>go (van Leer 1979). W schemacie MUSCL<br />
zwiększono dokładność metody poprzez konstrukcję na początku każdego<br />
kroku czasowego kawałkami liniowych reprezentacji rozwiązania q(x, t), tj.<br />
¯q(x, t) = q i + s i (x − ¯x i ), x i−1/2 < x < x i+1/2 . (525)<br />
Tutaj s i jest nachyleniem a ¯x i = (x i + x i+1 )/2 = x i + ∆x/2 oznacza środek<br />
komorki <strong>numeryczne</strong>j o numerze i. Zauważmy, że<br />
¯q(¯x i , t) = q i . (526)<br />
Zażądajmy, aby wartość średnia (liczona w komórce <strong>numeryczne</strong>j) ¯q(x, t)<br />
wynosiła q i . Nachylenie s i możemy wybrać w dowolnie logiczny sposób. W<br />
szczególności wybór s i pod-wiatr, z wiatrem i centralnie prowadzi odpowiednio<br />
do:<br />
s i = q i − q i−1<br />
∆x<br />
s i = q i+1 − q i<br />
∆x<br />
s i = q i+1 − q i−1<br />
2∆x<br />
, (527)<br />
, (528)<br />
. (529)<br />
Te pod-wiatr, z wiatrem i centralne nachylenia prowadzą odpowiednio do<br />
schematów numerycznych: Beama-Warminga, Laxa-Wendroffa i Fromma (Le-<br />
Veque 2002). Inną możliwością jest zastosowanie<br />
s i = minmod( q i − q i−1<br />
∆x<br />
, q i+1 − q i<br />
) , (530)<br />
∆x<br />
gdzie funkcję minmod zdefiniujemy następująco:<br />
⎧<br />
a, dla |a| < |b| i ab > 0 ,<br />
⎪⎨<br />
minmod(a, b) = b, dla |a| > |b| i ab > 0 ,<br />
⎪⎩<br />
0, dla ab ≤ 0 ,<br />
(531)<br />
141
Wnioskujmy stąd, że funkcja minmod zwraca argument o najmniejszej wielkości,<br />
jeśli argumenty funkcji są tego samego znaku. W przeciwnym wypadku<br />
minmod zwraca zero. Możemy zapisać funkcję minmod w równoważny sposób<br />
minmod(a, b) = 1 [sgn(a) + sgn(b)]min(|a|, |b|) . (532)<br />
2<br />
Inny wybór nachylenia s i został przedstawiony przez LeVeque’a (2002) i<br />
Toro (2009). Trywialny wybór s i = 0 w powyższych wyrażeniach prowadzi<br />
do metody Godunowa.<br />
12.3 Schemat MUSCL-Hancocka<br />
Metoda MUSCL (van Leer 1979) była ulepszona w 1980 roku przez studenta<br />
(mechaniki płynów) Uniwersytetu w Berkeley, Steve’a Hancocka. Z<br />
tego powodu metoda nosi nazwę metody MUSCL-Hancocka (MHM). Metoda<br />
MHM składa się z następujących kroków:<br />
1. Rekonstrukcji danych i ekstrapolacji warunków brzegowych. Na tym<br />
etapie dokonamy rekonstrukcji liniowej dystrybucji wektora stanu opisywanego<br />
układem zachowawczym (q i ) lub niezachowawczym (w i ). Wartości<br />
na brzegach komórek określimy następująco:<br />
q il = q i − 1 2 ∆x s i , (533)<br />
q ir = q i + 1 2 ∆x s i . (534)<br />
Tutaj q il (q ir ) oznacza rozwiązanie q na lewym (prawym) brzegu komórki<br />
o numerze i-tym, s i jest wyfiltrowanym nachyleniem, które wprowadziliśmy<br />
w równaniu (525);<br />
2. Ewolucja wartości brzegowych. Wartości brzegowe otrzymane poprzez<br />
ekstrapolację danych ewoluują w czasie 1 ∆t zgodnie z<br />
2<br />
¯q il = q il + ∆t<br />
2∆x [f(q il) − f(q ir )] , (535)<br />
142
¯q ir = q ir + ∆t<br />
2∆x [f(q il) − f(q ir )] . (536)<br />
3. Rozwiązanie problemu Riemanna dla danych<br />
q l∗<br />
i = ¯q ir , (537)<br />
q r∗<br />
i = ¯q (i+1)l . (538)<br />
Występujący tutaj strumień f i+1/2 (q l∗<br />
i , q r∗<br />
i ) obliczymy z wykorzystaniem<br />
rozwiązania podobieństwa (ang. similarity solution) q i+1/2 (x/t)<br />
tak, że<br />
f i+1/2 = f(w i+1/2 (0/t)) . (539)<br />
Problem Riemanna możemy rozwiązać dokładnie lub technikami przybliżonymi.<br />
12.3.1 Metoda MUSCL-Hancocka dla równania unoszenia<br />
Zastosujemy teraz metodę MHM dla równania unoszenia zanieczyszczeń<br />
q ,t + λq ,x = 0 . (540)<br />
Metoda ta składa się z następujących kroków:<br />
1. Rekonstrukcji, w czasie której obliczymy wartości na brzegach komórek,<br />
tj.<br />
q il = q n i − 1 2 ∆ i , q ir = q n i + 1 2 ∆ i ; (541)<br />
2. Ewolucji w czasie wartości brzegowych. Obliczmy strumienie:<br />
(<br />
f(q il ) = λq il = λ qi n − 1 )<br />
2 ∆ i<br />
(<br />
f(q ir ) = λq ir = λ qi n + 1 )<br />
2 ∆ i<br />
, (542)<br />
(543)<br />
143
a następnie różnicę tych strumieni wymnożoną przez czynnik, tj.<br />
∆F = 1 ∆t<br />
2 ∆x [f(q ir) − f(q il )] = 1 2 c∆ i . (544)<br />
W rezultacie z wykorzystaniem równań (535) i (536) znajdziemy<br />
¯q il = q il − ∆F = q il − 1 2 c∆ i = q n i − 1 2 (1 + c)∆ i , (545)<br />
¯q ir = q il − ∆F = q ir − 1 2 c∆ i = q n i + 1 2 (1 − c)∆ i . (546)<br />
3. Problem Riemanna dla danych (¯q ir , ¯q (i+1)l )<br />
⎧<br />
( ) x<br />
⎪⎨<br />
q i+<br />
1 =<br />
2 t ⎪⎩<br />
Stąd dla x = 0 otrzymamy<br />
⎧<br />
⎪⎨<br />
q i+<br />
1 (0/t) =<br />
2 ⎪⎩<br />
¯q ir ,<br />
¯q (i+1)l ,<br />
x<br />
< λ t<br />
¯q ir , λ > 0<br />
¯q (i+1)l , λ < 0<br />
⎫<br />
⎪⎬<br />
. (547)<br />
x<br />
> λ ⎪ ⎭<br />
t<br />
4. Strumień Godunowa możemy wtedy obliczyć następująco:<br />
f i+<br />
1<br />
2<br />
= f(q i+<br />
1 (0/t)) =<br />
2<br />
⎫<br />
⎪⎬<br />
⎪⎭ ; (548)<br />
⎧<br />
⎨ λ¯q ir , λ > 0<br />
⎩ λ¯q (i+1)l , λ < 0 . (549)<br />
W przypadku dodatniej prędkości unoszenia, tj. λ > 0, znajdziemy<br />
gdzie:<br />
f i+<br />
1<br />
2<br />
f i−<br />
1<br />
2<br />
(<br />
= λ qi n + 1 )<br />
2 (1 − c)∆ i , (550)<br />
(<br />
= λ qi−1 n + 1 )<br />
2 (1 − c)∆ i−1 , (551)<br />
∆ i = 1 ( )<br />
q<br />
n<br />
2 i+1 − qi−1<br />
n , (552)<br />
∆ i−1 = 1 ( )<br />
q<br />
n<br />
2 i − qi−2<br />
n . (553)<br />
144
Po podstawieniu równań (550) i (551) do dyskretnej postaci równanie unoszenia,<br />
tj.<br />
q n+1<br />
i<br />
= qi n − ∆t (<br />
fi+ 1<br />
∆x 2<br />
− f i−<br />
1<br />
2<br />
)<br />
, (554)<br />
otrzymamy<br />
(<br />
qi n+1 = qi n − c qi n − qi−1 n + 1 4 [1 − c) ( qi+1 n − qi−1 n − qi n + qi−2) ] n ,<br />
= qi n − c ( )<br />
qi n − qi−1<br />
n 1 −<br />
4 (1 − c) c ( )<br />
qi+1 n − qi n − qi−1 n + qi−2<br />
n .(555)<br />
Powyższe wyrażenie możemy zapisać w ogólnej postaci jako<br />
1∑<br />
qi n+1 = b k qi+k n , (556)<br />
k=−2<br />
gdzie współczynniki b k określimy następująco:<br />
b −2 = − 1 (1 − c) c ,<br />
4<br />
b −1 = 1 (5 − c) c ,<br />
4<br />
(557)<br />
b 1 = − 1 (1 − c) c . 4<br />
b 0 = 1 (1 − c) (4 + c) ,<br />
4<br />
Otrzymaliśmy w ten sposób schemat Fromma.<br />
Wnioskujemy stąd, że metoda MHM składa się ze schematu pod-wiatr<br />
i poprawki. W ogólności musimy wyfiltrować niefizyczne oscylacje z członu<br />
zawierającego poprawkę. Filtracja ta odbywa się w ten sposób, że poprawkę<br />
modyfikujemy tak, aby była ona bliska zeru (jeden) w pobliżu nieciągłości<br />
(gładkich rozwiązań). W ten sposób usuwamy oscylacje, które są najbardziej<br />
wyakacentowane przy stromych profilach.<br />
12.4 Eksperymenty z pakietem NUMERICA<br />
12.4.1 Zalecane ćwiczenia<br />
Dla równania unoszenia zanieczyszczeń<br />
q ,t + λq ,x = 0, λ > 0 (558)<br />
145
wykonajmy następujące ćwiczenia:<br />
1. napiszmy schemat PLM dla przypadku ω = 0 w postaci<br />
q n+1<br />
i<br />
= ∑ k<br />
b k q n i+k ; (559)<br />
2. wykorzystajmy twierdzenie o dokładności schematu, aby pokazać, że<br />
schemat PLM jest drugiego rzędu dokładny w przestrzeni i w czasie;<br />
3. zastosujmy uogólniony strumień WAF i regułę środkowego punktu (ang.<br />
mid-point-rule) w przestrzeni w celu obliczenia strumienia dla następujących<br />
przypadków:<br />
0 ≤ c ≤ 1 ; (560)<br />
1 ≤ c ≤ 2 . (561)<br />
Tutaj c jest liczbą CFL.<br />
12.4.2 Odpowiedzi<br />
Dla 0 ≤ c ≤ 1 strumień f i+<br />
1 = λqi n odpowiada schematowi Godunowa.<br />
2<br />
W przypadku, gdy 1 ≤ c ≤ 2, otrzymamy<br />
f i+<br />
1<br />
2<br />
= c − 1 λqi−1 n + 1 c c λqn i ; (562)<br />
4. załóżmy liniową rekonstrukcję i rozwiążmy problem Riemanna z wykorzystaniem<br />
wielkości brzegowych<br />
q R i , q L i+1 (563)<br />
jako danych początkowych. Następnie obliczmy strumień Godunowa i<br />
odpowiedni schemat numeryczny. Przeanalizujmy jego stabilność.<br />
146
12.5 Zaśmiecające oscylacje<br />
Schemat numeryczny o wysokiej dokładności powinien:<br />
1. być conajmniej drugiego rzędu dokładny w obszarach, gdzie rozwiązanie<br />
jest gładkie,<br />
2. nie zawierać zaśmiecających oscylacji<br />
3. dokładnie odwzorowywać nieciągłości, tzn. prowadzić do wąskiego obszaru<br />
przejściowego zawierającego nieciągłość (Harten).<br />
12.6 Kompatybilność danych numerycznych i metoda<br />
TVD<br />
Definicja: Schemat dla równania unoszenia zanieczyszczeń (118) jest kompatybilny<br />
z układem danych {qi n }, jeśli rozwiązanie {qi<br />
n+1 } w każdym punkcie<br />
o numerze i, zadane poprzez schemat numeryczny, jest ograniczone przez następującą<br />
parę obliczoną pod-wiatr:<br />
(q n i−s, q n i ) , s = sign(λ) . (564)<br />
Powyższą definicję możemy zapisać w równoważny sposób jako<br />
min{q n i−s, q n i } ≤ q n i ≤ max{q n i−s, q n i } . (565)<br />
Twierdzenie: Warunek kompatybilności sprowadza się do tego, aby zachodziły<br />
następujące nierówności:<br />
0 ≤ qn+1 i − qi<br />
n<br />
qi−s n − qi<br />
n<br />
≤ 1 . (566)<br />
Dowód tego twierdzenia możemy znaleźć w monografii Toro (2009).<br />
147
Przykład: Jako przykład rozważmy schemat Godunowa<br />
q n+1<br />
i − q n i = c(q n i−1 − q n i ) . (567)<br />
Znajdziemy stąd, że<br />
qi<br />
n+1 − qi<br />
n = c ≤ 1 . (568)<br />
qi−s n − qi<br />
n<br />
Z równania (566) wnioskujemy, że schemat Godunowa jest kompatybilny z<br />
układem danych.<br />
12.7 Całkowita wariacja<br />
Zdefiniujemy teraz całkowitą wariację (ang. total variation) (TV) funkcji<br />
q(x) jako<br />
Dla gładkiej funkcji q(x) mamy<br />
∫<br />
1 +∞<br />
T V (q) = lim |q(x + δ) − q(x)| dx . (569)<br />
δ→0 δ −∞<br />
T V (q) =<br />
∫ +∞<br />
−∞<br />
|q ,x | dx . (570)<br />
Dla q = q(x, t) określimy TV w ustalonych momentach czasu. Jeśli q n = {q n i }<br />
oznacza funkcję siatkową (ang. mesh function), wtedy<br />
T V (q n ) =<br />
+∞ ∑<br />
i=−∞<br />
|q n i+1 − q n i | , q n i = 0 . (571)<br />
Podstawowe własności skalarnych, nieliniowych praw zachowania z warunkiem<br />
początkowym, który ma ograniczoną TV to:<br />
1. nowe lokalne ekstremum funkcji q(x, t) nie może być wygenerowane;<br />
2. lokalne minimum (maximum) nie zmniejsza się (rośnie) w czasie;<br />
3. całkowita wariacja T V (q(t)) jest nie-rosnącą funkcją czasu, tj.<br />
T V (q(t 2 )) ≤ T V (q(t 1 )) , t 2 ≥ t 1 . (572)<br />
148
Definicja: Schemat H(q n i−l, . . . , q n i+r) nazywamy TVD (ang. Total Variation<br />
Diminishing), jeśli dla wszystkich n mamy<br />
T V (q n+1 ) ≤ T V (q n ) . (573)<br />
12.8 Twierdzenie Hartena<br />
Twierdzenie Hartena: Rozważmy schemat, który zapisany jest w postaci<br />
przyrostowej jako<br />
q n+1<br />
i = q n i − C i−1/2 (q n i − q n i−1) + D i+1/2 (q n i+1 − q n i ) . (574)<br />
Tutaj C i−1/2 i D i+1/2 zależą od danych. Wtedy wystarczające warunki do<br />
tego, aby schemat był TVD to:<br />
C i+1/2 ≥ 0 , D i+1/2 ≥ 0 , 0 ≤ C i+1/2 + D i+1/2 ≤ 1 . (575)<br />
Dowód twierdzenia możemy znaleźć w monografii Toro (2009) lub w oryginalnym<br />
artykule Hartena i innych (1983).<br />
W podsumowaniu zauważmy, że współczynniki C i−1/2 , D i+1/2 w ogólności<br />
zależą od danych {q n i }. Oznacza to, że schemat numeryczny jest nieliniowy,<br />
nawet jeśli jest zastosowany do równania liniowego. Twierdzenie Godunowa<br />
stosuje się do schematów liniowych, podczas gdy twierdzenie Hartena oferuje<br />
sprytny sposób ominięcia twierdzenie Godunowa i konstrukcji schematów o<br />
większej dokładności.<br />
12.9 Symulacje <strong>numeryczne</strong> zanieczyszczeń powietrza<br />
Dynamikę zanieczyszczeń powietrza (ang. air-pollutions) możemy opisać<br />
następującym układem równań hydrodynamiki:<br />
ϱ ,t + ∇ · (ϱv) = S ϱ + S D , (576)<br />
149
(ϱv) ,t + (ϱv · ∇)v = −∇p − ϱgŷ + S v , (577)<br />
p ,t + ∇ · (pv) = (1 − γ)p∇ · v + S p . (578)<br />
Tutaj ϱ jest gęstością masy, v jest prędkością, p jest ciśnieniem gazu, g jest<br />
wartością przyspieszenia grawitacyjnego, ŷ jest wersorem skierowanym pionowo<br />
do góry wzdłuż osi y, t oznacza czas a γ jest stałą adiabatyczną wyznaczoną<br />
przez iloraz ciepeł właściwych przy stałym ciśnieniu i stałej objętości,<br />
czyli c p /c v . Oś x jest skierowana poziomo.<br />
Od tego miejsca ograniczymy nasze rozważania do przypadku dwu-wymiarowego<br />
z inwariantnym kierunkiem y, czyli ∂/∂y = 0.<br />
W równaniu (576), S D jest dyfuzyjnością daną następująco:<br />
S D ≡ ϱ(x, y, t) ,t = −∇ · D(x, y, t, ϱ)∇ϱ(x, y, t). (579)<br />
Zakładając, że współczynnik dyfuzyjności jest stały D = 0.333 · 10 −4 m 2 /s<br />
ostatnie równanie możemy zapisać jako<br />
S D = −D∇ 2 ϱ. (580)<br />
Pozostałe człony źródłowe S ϱ , S v i S p związane są z emisją zanieczyszczeń.<br />
Człony te wyprowadzimy następująco. Równanie zachowania masy zapiszemy<br />
jako<br />
ϱ ,t + ∇ · (ϱv) = −∇(ϱ e v e ) ≡ S ϱ , (581)<br />
gdzie ϱ e i v e oznaczają odpowiednio gęstość masy i prędkość emitowanych zanieczyszczeń.<br />
W przypadku emisji w kierunku pionowym mamy v e = (0, ṽ ey ),<br />
człon źródłowy w równaniu zachowania masy wyrazimy jako<br />
S ϱ = −(ϱ e ṽ ey ) ,y . (582)<br />
Jeśli emitor charakteryzuje się szerokością x 0 i jest umieszczony na wysokości<br />
y = y 0 , parametry emisji, która ma miejsce dla y > y 0 , opiszemy poniższymi<br />
150
wyrażeniami<br />
ϱ e = ˆϱ e e − y−y 0<br />
x 0 , (583)<br />
ṽ ey = const . (584)<br />
W rezultacie człon źródłowy S ϱ opiszemy następującym równaniem:<br />
S ϱ =<br />
ϱ e<br />
ṽ ey e − y−y 0<br />
x 0 ,<br />
x 0<br />
(585)<br />
S v = S ϱ ṽ ey ŷ , (586)<br />
S p =<br />
p e<br />
γ − 1ṽey . (587)<br />
Tutaj ϱ e i ṽ ey oznaczają odpowiednio gęstość masy i składową pionową (yową)<br />
prędkości emitowanych zanieczyszczeń. Wielkość x 0 oznacza połowę szerokości<br />
emitora, który umieścimy na wysokości y = y 0 = 10 x 0 i dla |x| ≤ x 0 .<br />
12.9.1 Model numeryczny<br />
Rozwiążemy równania (576)–(578) z wykorzystaniem kodu CLAWPACK,<br />
który jest oparty na metodzie fal biegnących (ang. wave propagation method)<br />
(LeVeque 1997). Kod CLAWPACK stanowi kolekcję procedur napisanych w<br />
języku Fortran 77 w celu rozwiązania układów hiperbolicznych równań zachowania.<br />
Ogólna struktura programu jest opisana w szczegółach w notatkach<br />
dla użytkownika (ang. user guide), napisanych przez LeVeque (1997).<br />
Z powodów numerycznych równania Eulera zapiszemy w następującej postaci<br />
zachowawczej:<br />
⎛ ⎞ ⎛<br />
⎞ ⎛<br />
⎞<br />
ϱ<br />
ϱv x<br />
ϱv y<br />
ϱv x<br />
ϱv 2 x + p<br />
ϱv x v y<br />
+<br />
+<br />
= S, (588)<br />
⎜ ϱv y ⎟ ⎜ ϱv x v y ⎟ ⎜ ϱvy 2 + p<br />
⎟<br />
⎝ ⎠ ⎝<br />
⎠ ⎝<br />
⎠<br />
E<br />
,t<br />
v x (E + p)<br />
,x<br />
v y (E + p)<br />
,y<br />
151
gdzie S oznacza wektor źródłowy a gęstość całkowitej energii jest<br />
E = 1 2 ϱ(v2 x + v 2 y) +<br />
p<br />
γ − 1 . (589)<br />
W kodzie CLAWPACK zastosowana jest metoda objętości skończonych na<br />
jednorodnej, prostokątnej siatce <strong>numeryczne</strong>j. Brzegi obszaru symulacji ustalimy<br />
w x = ±10 x 0 , y = 0 i y = 20 x 0 . W kodzie CLAWPACK dwie komórki<br />
duchy (ang. ghost cells) wybierzemy na każdym brzegu. Obszar numeryczny<br />
dla problemu zanieczyszczeń powietrza podzielimy siatką o liczbie komórek<br />
133 × 133 w kierunku x i y. Z lewej i prawej strony oraz na górze wybierzemy<br />
tzw. otwarte warunki brzegowe, które umożliwiają falom docierającym do<br />
tych brzegów opuszczenie obszaru oscylacji bez numerycznie wyindukowanych<br />
odbić. Na dole obszaru symulacji ustalimy natomiast warunki brzegowe<br />
odpowiadające sztywnej ścianie. W rezultacie, kiedy sygnał dotrze do takiego<br />
brzegu jest on od niego odbity.<br />
Początkowo, dla t = 0, gęstość masy i ciśnienie odpowiadają stanowi<br />
równowagi dla izotermicznej atmosfery, dla której, z definicji, temperatura<br />
jest stała. Wybraliśmy tą temperaturę równą T 0 = 293 K. Profile pionowe<br />
gęstości masy i ciśnienia przedstawia schematycznie rys. 11. Ciśnienie na<br />
poziomie ziemi przyjmiemy równym p 0 (y = 0) = 101325 Pa a gęstość masy<br />
ϱ 0 (y = 0) = 1.29 kg/m 3 . Wielkości te odpowiadają prędkości dźwięku c s =<br />
333 m/s.<br />
Zanieczyszczenia powietrza są emitowane z prędkością ṽ ey<br />
= 15 m/s.<br />
Przyjmiemy też, że zanieczyszczenia są pięcio-krotnie cieplejsze niż otaczające<br />
je powietrze. Emisja zanieczyszczeń jest zdeterminowana obecnością<br />
członów źródłowych w równaniach (576) - (578).<br />
152
Rysunek 11: Równowagowe profile gęstości masy, ciśnienia i temperatury dla izotermicznej<br />
atmosfery.<br />
12.9.2 Wyniki <strong>numeryczne</strong> i ich dyskusja<br />
Rozpatrzmy na początku przypadek zanieczyszczeń, które mają taką samą<br />
gęstość masy jak otaczające je statyczne powietrze, tj. ϱ e = ϱ 0 (y = 10x 0 ).<br />
Zanieczyszczenie ulega expansji w kierunku horyzontalnym w początkowym<br />
stadium ich ewolucji w czasie (lewy panel rys. 12). Ekspansja ta prowadzi do<br />
rozrzedzenia gazu, a w konsekwencji pojawienia się siły wyporu, która działa<br />
do góry i pokonuje grawitację powodując podniesienie zanieczyszczeń.<br />
W rezultacie niestabilności Kelvina-Helmholtz’a powstają wiry, takie jakie<br />
przedstawione są w prawym panelu rys. 12. Wiry te osłabiają proces<br />
rozprzestrzeniania zanieczyszczeń.<br />
Warte zauważenia jest, że scenariusz rozprzestrzeniania gęstszych zanieczyszczeń,<br />
tzn. ϱ e > ϱ 0 , jest w zasadzie podobny do powyżej dyskutowanego<br />
przypadku równych gęstości. Jedyną różnicą jest to, że czasem grawitacja<br />
przewyższa siłę wyporu i ciągnie zanieczyszczenia do ziemi (Murawski, Michalczyk<br />
2001).<br />
Mniejsza gęstość emitowanych zanieczyszczeń, np. ϱ e = 0.75 ϱ 0 (y = 10x 0 ),<br />
powoduje uformowanie się chmur, które w czasie t = 3 s znajdują się w<br />
punktach x ≃ ±5 x 0 i y ≃ 10 x 0 . Chmurom tym towarzyszy smuga, którą<br />
153
w czasie t = 3 s możemy znaleźć w okolicy x = 0 i y ≃ 18 x 0 (lewy panel<br />
rys. 13).<br />
Rysunek 12: Dystrybucja zanieczyszczeń dla przypadku, kiedy emitowana gęstość<br />
masy ϱ e jest równa równowagowej gęstości powietrza ϱ 0 na wysokości y = 10 x 0 ,<br />
tj. ϱ e = ϱ 0 (y = 10x 0 ). Wykres konturowy gęstości masy zanieczyszczeń w czasie<br />
t = 1.5 s (lewy panel) i wektory prędkości (prawy panel).<br />
Rysunek 13 pokazuje, że obecna jest kaskada energii od większych do<br />
mniejszych wirów, które dla t = 9 s są dobrze widoczne w pobliżu punktów<br />
y ≈ 15 x 0 i x ≃ ±7 x 0 . Taka kaskada jest typowa dla ośrodka turbulentnego.<br />
Wektory prędkości w pobliżu osi pionowej x = 0 są skierowane do góry,<br />
ponieważ ruch zanieczyszczeń nie jest tutaj zakłócony.<br />
Dokonamy teraz dyskusji przypadku wiatru, który wieje horyzontalnie<br />
z lewej do prawej strony. Źródło wiatru znajduje się na lewym brzegu w<br />
x = x min . Rozważymy dwa przypadki: a) prędkość wiatru nie zależy od<br />
wysokości y, v w ≠ v w (y); b) prędkość wiatru rośnie liniowo z wysokością y.<br />
Rysunek 14 (lewy panel) ilustruje przestrzenne profile gęstości masy dla<br />
przypadku stałej prędkości wiatru v w = 2.5 m/s i dyfuzji D = 0.2 cm 2 /s.<br />
Pomimo małej wartości prędkości wiatru v w przestrzenna dystrybucja zanieczyszczeń<br />
jest znacznie zmieniona. Wiatr modyfikuje początkowo pionową<br />
154
Rysunek 13: Dystrybucja zanieczyszczeń dla przypadku, kiedy emitowana gęstość<br />
masy ϱ e jest mniejsza niż równowagowa gęstości powietrza ϱ 0 na wysokości y = 10<br />
x 0 , tj. ϱ e = 0.75 ϱ 0 (y = 10x 0 ). Gęstość masy zanieczyszczeń w czasie t = 3 s (lewy<br />
panel) i wektory prędkości w czasie t = 9 s (prawy panel).<br />
emisję zanieczyszczeń. Gęstość masy jest największa w pobliżu ujścia z emitora,<br />
tj. x = 20 x 0 , y = 25 x 0 (panel lewy rys. 14). Liczba chmur o różnych<br />
skalach przestrzennych jest charakterystyczna dla słabego wiatru. Wiry, które<br />
występują na granicy między smugą a otaczającym ją ośrodkiem, penetrują<br />
obszar z dala od emitora. Gęstość masy, która związana jest z tymi wirami,<br />
nie ulega widocznym zmianom, ponieważ rotacja redukuje rozprzestrzenianie<br />
zanieczyszczeń. Wewnątrz chmury w punkcie x ≃ 55 x 0 , y ≃ 50 x 0 rotacja<br />
nie występuje i w czasie t = 15 s gęstość masy osiąga wielkość bliską gęstości<br />
powietrza.<br />
Przypadek liniowej prędkości wiatru przedstawiamy na rys. 14 (panel<br />
prawy). Przyjmiemy, że prędkość wiatru na wysokości y = 100 x 0 powyżej<br />
ziemi, v w (y = 100 x 0 ), jest o 50% większa niż prędkość przy gruncie,<br />
v w (y = 0). W szczególności rozważymy przypadek v w (y = 0) = 10 m/s.<br />
Wtedy v w (y = 100 x 0 ) = 15 m/s. Widzimy tutaj ogólną strukturę smugi.<br />
Zmarszczki mają miejsce dla x > 90 x 0 . W konsekwencji rosnącej z wyso-<br />
155
Rysunek 14: Przestrzenne profile gęstości masy dla przypadku dyfuzyjnej atmosfery<br />
i stałej prędkości wiatru v w = 2.5 m/s (panel górny) i liniowo rosnącej prędkości<br />
wiatru v w (y = 0) = 10 m/s (panel dolny).<br />
kością prędkości wiatru zmarszczki na górze są większe w porównaniu ze<br />
zmarszczkami na dole. Smuga jest podniesiona do góry jako wynik wzmocnionej<br />
(wskutek liniowo rosnącej prędkości wiatru) siły wyporu.<br />
156
13 Wykład 21-22: <strong>Modelowanie</strong> <strong>numeryczne</strong> <strong>zjawisk</strong><br />
fizyki technicznej opisywanych równaniami<br />
magnetohydrodynamiki<br />
13.1 Równania magnetohydrodynamiki<br />
Równania magnetohydrodynamiki (MHD) możemy zapisać następująco:<br />
∂ϱ<br />
+ ∇ · (ϱV) = 0 ,<br />
∂t<br />
(590)<br />
ϱ ∂V<br />
∂t + ϱ (V · ∇) V = −∇p + 1 (∇ × B) × B + ϱg ,<br />
µ<br />
(591)<br />
∂B<br />
= ∇ × (V × B) ,<br />
∂t<br />
(592)<br />
∇ · B = 0 , (593)<br />
∂p<br />
+ ∇ · (pV) = (1 − γ)p∇ · V ,<br />
∂t<br />
(594)<br />
p = k B<br />
ϱT . (595)<br />
m<br />
Tutaj ϱ jest gęstością masy, V oznacza prędkość plazmy, B jest indukcją<br />
pola magnetycznego (w skrócie - polem magnetycznym), p jest ciśnieniem<br />
gazu, γ jest indeksem adiabaty, g oznacza przyspieszenie grawitacyjne, T<br />
jest temperaturą, m jest masą cząsteczkową i k B jest stałą Boltzmanna.<br />
Zauważmy, że równania (590)-(595) składają sie z 10 skalarnych równań,<br />
które zawierają 9 niewiadomych. Równanie (593) stanowi warunek braku<br />
monopoli magnetycznych w układzie. Wyrażenie (595) jest równaniem stanu<br />
gazu doskonałego wiążącego ϱ, p i T . Dlatego znając dwie wielkości możemy<br />
określić trzecią, np. T = T (ϱ, p). Równanie to więc możmy pokraktować jako<br />
definicję temperatury.<br />
157
13.1.1 Postać zachowawcza równań magnetohydrodynamiki<br />
Równania MHD (590)-(594) możemy zapisać w postaci zachowawczej<br />
q ,t + ∇ · F = 0 (596)<br />
z warunkiem<br />
Tutaj wektor stanu określimy jako<br />
∇ · B = 0 . (597)<br />
q = (ϱ, ϱv, B, E) T . (598)<br />
W przypadku braku grawitacji, g = 0, strumień<br />
F = (ϱv, ϱvv + I(p + B2<br />
) − BB, vB − Bv,<br />
2<br />
gdzie gęstość energii całkowitej<br />
E =<br />
(E + p + B2<br />
2 )v − B(v · B))T , (599)<br />
p<br />
γ − 1 + ϱv2 2 + B2<br />
2 , (600)<br />
symbol I oznacza jednostkową macierzą o wymiarze 3 × 3, vv jest 3 × 3<br />
wymiarowym tenzorem v i v j . Dodatkowo dla wygody B zastąpiliśmy przez<br />
B √ µ.<br />
Równanie pędu (596) możemy zapisać jako<br />
(ϱv) ,t + ∇ · (ϱvv) + ∇(p + B2<br />
) − (B · ∇)B = B(∇ · B) . (601)<br />
2<br />
Oczywiście człon stojący po prawej stronie powinien być równy zero. Ewentualne<br />
błedy <strong>numeryczne</strong> prowadzące do ∇ · B ≠ 0 spowodują pojawienie<br />
się niefizycznej siły o składowej równoległej do B. Siła ta wywiera destabilizujący<br />
efekt na algorytmy <strong>numeryczne</strong> (Brackbill, Barnes 1980). Brackbill<br />
158
i Barnes (1980) zauważyli, że zaradzić temu możemy poprzez dodanie do<br />
prawej strony równania (601) członu −B(∇ · B). W rezultacie otrzymamy<br />
równania MHD zapisane w postaci niezachowawczej.<br />
Przypomnijmy, że w metodach objętości skończonych dla równania (598)<br />
obliczamy strumienie na granicy między sąsiednimi komórkami numerycznymi.<br />
Strumienie te muszą zawierać trochę dyfuzji, którą wprowadzimy do<br />
układu np. poprzez filtrator strumienia (ang. flux-limiter). Filtrator ten minimalizuje<br />
numerycznie wygenerowane oscylacje (np. LeVeque 2002, Murawski<br />
2002, Toro 2009). Do eliminacji tych oscylacji możemy wykorzystać uśredniony<br />
po przestrzeni prymitywny wektor stanu,<br />
˜q = (¯ϱ, ¯v, ¯B, Ē)T . (602)<br />
Wektor ten obliczymy na granicy między sąsiednimi komórkami numerycznymi<br />
(np. Brio, Wu 1988, Rossmanith 2006, Ziegler 2008, Stone i inni 2009).<br />
13.1.2 Postać niezachowawcza równań MHD<br />
Równania MHD mogą być zapisane w postaci niezachowawczej (np. Powell<br />
1994)<br />
q ,t + ∇ · F = −∇ · B(0, B, v, v · B) T , ∇ · B = 0. (603)<br />
Równanie indukcji możemy teraz zapisać jako<br />
B ,t + v(∇ · B) + B(∇ · v) − (B · ∇)v = 0. (604)<br />
Podziałajmy na powyższe równanie operatorem dywergencji. Po wykorzystaniu<br />
równania zachowania masy otrzymamy<br />
( ) ∇ · B<br />
ϱ<br />
,t<br />
( ) ∇ · B<br />
+ v · ∇ = 0. (605)<br />
ϱ<br />
159
Ponieważ równanie to opisuje adwekcję wielkości ∇ · B/ϱ, wnioskujemy stąd,<br />
że nowa fala dywergencji porusza się z prędkością v. W rezutacie wielowymiarowe<br />
równania MHD, zapisane w częściowo zachowawczej postaci poprzez<br />
dodanie członu ∇·B, charakteryzują się tym, że pojawia się ósma fala,<br />
która dokonuje unoszenia ∇ · B.<br />
Wyjściowe równania MHD możemy zapisać też w postaci quasi-liniowej<br />
¯q ,t + A¯q ,x = 0 (606)<br />
z wektorem stanu<br />
¯q = (ϱ, ϱv, B, p) T (607)<br />
i macierzą<br />
⎛<br />
A =<br />
⎜<br />
⎝<br />
⎞<br />
v x ϱ 0 0 0 0 0 0<br />
0 v x 0 0 − B x B y B z 1<br />
ϱ<br />
ϱ ϱ ϱ<br />
0 0 v x 0 − B y<br />
− B x<br />
ϱ<br />
ϱ<br />
0 0<br />
0 0 0 v x − B z<br />
ϱ<br />
0 − B x<br />
ϱ<br />
0<br />
. (608)<br />
0 0 0 0 0 0 0 0<br />
0 B y −B x 0 −v y v x 0 0<br />
0 B z 0 −B x −v z 0 v x 0<br />
⎟<br />
⎠<br />
0 γp 0 0 (γ − 1)v · B 0 0 v x<br />
Zauważmy, że konsekwencją (∇ · B) ,t = 0 jest pojawienie się zerowego<br />
5-tego rzędu od góry w macierzy A. Wnioskujemy stąd, że ósma wartość<br />
własna macierzy A wynosi zero tak, że<br />
w 8 ,t + 0w 8 ,x = 0 (609)<br />
z w 8 = B x .<br />
160
Równanie (603) dla q = ¯q możemy zapisać w równoważny sposób<br />
⎛<br />
⎞<br />
0 0 0 0 0 0 0 0<br />
B<br />
0 0 0 0 x<br />
ϱ<br />
0 0 0<br />
B 0 0 0 0<br />
y<br />
0 0 0<br />
ϱ B 0 0 0 0 z<br />
¯q ,t + A¯q ,x = −<br />
ϱ<br />
0 0 0<br />
¯q ,x . (610)<br />
0 0 0 0 v x 0 0 0<br />
0 0 0 0 v y 0 0 0<br />
⎜ 0 0 0 0 v z 0 0 0<br />
⎟<br />
⎝<br />
⎠<br />
0 0 0 0 (γ − 1)v · B 0 0 0<br />
Tutaj A jest macierzą określoną równaniem (608). Powyższe równanie możemy<br />
zapisać w następującej postaci quasi-liniowej:<br />
¯q ,t + Ā¯q ,x = 0 (611)<br />
z macierzą<br />
⎛<br />
Ā =<br />
⎜<br />
⎝<br />
⎞<br />
v x ϱ 0 0 0 0 0 0<br />
B<br />
0 v x 0 0 0 y B z 1<br />
ϱ ϱ ϱ<br />
0 0 v x 0 0 − B x<br />
ϱ<br />
0 0<br />
0 0 0 v x 0 0 − Bx 0<br />
ϱ . (612)<br />
0 0 0 0 v x 0 0 0<br />
0 B y −B x 0 0 v x 0 0<br />
0 B z 0 −B x 0 0 v x 0<br />
⎟<br />
⎠<br />
0 γp 0 0 0 0 0 v x<br />
Widzimy, że zerowy rząd zniknął a ósma fala spełnia teraz równanie unoszenia<br />
w 8 ,t + v x w 8 ,x = 0 . (613)<br />
Ponieważ fala ta niesie ze sobą niezerową wartość dywergencji, nazywamy ją<br />
falą dywergencji.<br />
161
13.2 Problemy z numerycznymi rozwiązaniami równań<br />
MHD<br />
Ważnym problemem w wyprowadzeniu schematu <strong>numeryczne</strong>go dla równań<br />
MHD jest fakt, że równania te nie są ani ściśle hiperboliczne ani ściśle<br />
wypukłe (np. Brio, Wu 1988, Helzel i inni 2010). W praktyce oznacza to,<br />
że prędkości fal conajmniej dwóch różnych fal stają się jednakowe. Przypomnijmy,<br />
że układ równań nazywamy hiperbolicznym, jeśli wszystkie wartości<br />
własne macierzy Jacobiego są rzeczywiste i różnią się od siebie oraz odpowiadający<br />
im układ wektorów własnych jest zupełny (Jeffrey, Taniuti 1964).<br />
Równania MHD nie stanowią dokładnie układu hiperbolicznego, ponieważ<br />
przy spełnieniu odpowiednich warunków niektóre wartości własne mogą być<br />
jednakowe. Wtedy mogą tworzyć się złożone struktury falowe (ang. compound<br />
wave structures) zawierające zarówno szoki i fale rozrzedzeniowe (ang.<br />
rarefaction waves). Takie złożone struktury obserwowaliśmy już dla zmodyfikowanego<br />
równania Burgersa. Ma to np. miejsce wtedy, kiedy znikają<br />
składowe pola magnetycznego. Wtedy wektory własne stają się osobliwe. Jak<br />
pokazaliśmy powyżej (w rozdz. 23.1), osobliwości te możemy usunąć poprzez<br />
odpowiednią normalizację wektorów własnych.<br />
W przeciwieństwie do przypadku hydrodynamiki (np. Toro 2009), problem<br />
Riemanna dla równań MHD nie jest całkowicie spójny i jednoznaczny.<br />
Wynika to z faktu, że jedna z wartości własnych macierzy Jacobiego staje<br />
się równa zeru. Patrz równanie (609). Ta zerowa wartość własna nie jest fizyczna,<br />
jako że wartości własne powinny pojawiać się albo pojedyńczo, v x ,<br />
albo parami symetrycznie wokół v x . Akceptowalne fizycznie wartości i wektory<br />
własne odpowiadają: jednej fali entropii poruszającej się z prędkością<br />
v x , dwum falom Alfvéna biegnącym z prędkościami v x ± c A , czterem falom<br />
magnetoakustycznym (dwum szybkim i dwum powolnym) poruszającym się<br />
162
z prędkościami v x ± c f i v x ± c s . Wartości i wektory własne dane są równaniami<br />
(805)-(816).<br />
Zerowa wartość własna prowadzi do problemów numerycznych związanych<br />
z niezerową wartością dywergencji pola magnetycznego. W rezultacie<br />
tego w zależności od orientacji pola magnetycznego charakterystyki mogą<br />
stać się zdegenerowane. Problem ten możemy rozwiązać poprzez rozważenie<br />
równań MHD zapisanych w postaci niezachowawczej (Powell 1994). Patrz<br />
równanie (603). Rozwiązanie to oparte jest na zauważeniu, że poprzez dodanie<br />
członów źródłowych proporcjonalnych do ∇·B do równań MHD możemy<br />
zmodyfikować problem Riemanna tak, że ∇ · B = 0 jest spełniony z dokładnością<br />
do maszynowych błędów zaokrąglenia (ang. machine round-off error).<br />
13.2.1 Metody usuwania dywergencji B<br />
Istnieje kilka problemów związanych z napisaniem nowego programu rozwiązującego<br />
problem Cauchy’ego dla równań MHD. Jednym z nich jest zapewnienie,<br />
że ∇ · B = 0. Błędy związane z dyskretyzacją równań MHD<br />
prowadzą do zachwiania warunku seleoidalności. Fizycznie oznacza to, że<br />
strumień magnetyczny w prawie Gaussa nie jest zachowany. Błędy te zwykle<br />
rosną w czasie powodując powstanie niefizycznej siły wzdłuż linii pola<br />
magnetycznego, a wobec tego zachwianie praw zachowania pędu i energii<br />
(Brackbill, Barnes 1980). Jak dotąd w literaturze zaproponowano kilka sposobów<br />
minimalizowania tego problemu. Dla przykładu, Brackbill i Barnes<br />
(1980) pokazali, że celem eliminacji siły równoległej do pola magnetycznego<br />
równanie zachowania pędu powinno być zapisane w formie niezachowawczej.<br />
Dedner i inni (2002) zaproponowali metodę dodania członu dyfuzyjnego do<br />
równania unoszenia, w tej sposób rozmywając monopole magnetyczne, ale<br />
nie eliminując ich całkowicie. Ewans, Hawley (1988), Stone, Norman (1992),<br />
163
Rossmanith (2006), Stone i inni (2009), Lee i Deane (2009) oraz inni wykorzystali<br />
metodę numeryczną nazwaną transportem z więzami (ang. constraint<br />
transport) do przekształcenia równania indukcji w ten sposób, że zachowuje<br />
ono zanikającą w czasie dywergencję pola magnetycznego do błędów zaokrągleń<br />
charakerystycznych dla danej platformy obliczeniowej. Metoda ta polega<br />
na umieszczeniu składowych pola magnetycznego w odpowiednie miejsca komórek<br />
numerycznych.<br />
Poniżej przedstawimy kilka tradycyjnych metod wymuszania warunku ∇·<br />
B = 0:<br />
a) bezpośrednie wykorzystanie funkcji strumienia magnetycznego A takiej,<br />
że B = ∇ × A. Oczywiście, warunek zerowania się dywergencji jest<br />
spełniony automatycznie. Problemem staje się jednak fakt, że siła Lorentza<br />
wymaga drugich pochodnych A, co zmusza do zastosowania schematów numerycznych<br />
wyższego rzędu dokładnych. Wtedy jednak możemy też natkąć<br />
się na poważne problemy spowodowane obecnością anomalnej siły Lorentza,<br />
która najwyraźniej ujawnia się w pobliżu stromych profili w rozwiązaniach<br />
równań MHD;<br />
b) metoda rzutowania, która wymusza warunek zerowania się dywergencji<br />
poprzez rozwiązanie równania Poissona. W metodzie tej odejmujemy tą część<br />
pola magnetycznego, która prowadzi do niezerowej dywergencji (np. Tanaka<br />
1993). Esencję tej metody możemy przedstawić następująco. Przypuśćmy, że<br />
pole magnetyczne ma niezerową dywergencję, tj.<br />
∇ · B ≠ 0 . (614)<br />
Możemy poprawić pole magnetyczne B poprzez dodanie członu korekcyjnego<br />
B c tak, że<br />
∇ · (B + B c ) = 0 . (615)<br />
164
Aby siła Lorentza była równa zero, B c nie może generować prądu elektrycznego.<br />
Musi być więc spełniony warunek<br />
j c = 1 µ (∇ × B c) = 0 . (616)<br />
Mamy stąd<br />
∇ × B c = 0 . (617)<br />
Warunek ten jest automatycznie spełniony po wprowadzeniu potencjału skalarnego<br />
φ tak, że<br />
B c = ∇φ . (618)<br />
Po podstawieniu równania (618) do (615) otrzymamy równanie Poissona<br />
∇ 2 φ = −∇ · B . (619)<br />
Równanie to musimy rozwiązać w całej domenie <strong>numeryczne</strong>j. Otrzymane<br />
rozwiązanie φ powinno być użyte do obliczenia B c zgodnie z równaniem (618).<br />
Znalezionego w ten sposób pola B c użyjemy do usunięcia dywergencji z pola<br />
B.<br />
Metoda ta ma jednak swoje wady. Jej główną ujemną stroną jest to, że wymaga<br />
ona globalnego rozwiązania eliptycznego równania (619). Otrzymanie<br />
rozwiązania tego równania jest drogie numerycznie. Dodaktowo, globalna natura<br />
procedury oczyszczania pola magnetycznego pogwałca hiperboliczność<br />
równań MHD w obszarach, gdzie przepływ jest ponad dźwiękowy i ponad<br />
alfvénowski oraz dla plazmy o małej wartości współczynnika plazmowego<br />
β = p B 2<br />
2µ<br />
(620)<br />
może pojawić się ujemne ciśnienie gazu;<br />
c) podejście podwójnej siatki <strong>numeryczne</strong>j (ang. staggered grid), dla której<br />
warunek zerowania się dywergencji jest spełniony poprzez umieszczenie<br />
165
Rysunek 15: Podwójna siatka numeryczna.<br />
składowych pola magnetycznego w środkach odpowiednich płaszczyzn bocznych<br />
komórek siatki <strong>numeryczne</strong>j (rys. 15). Pozostałe wielkości, takie jak<br />
gęstość masy, pędu i energii są natomiast przechowywane w środkach komórek<br />
siatki <strong>numeryczne</strong>j. Na takiej siatce <strong>numeryczne</strong>j równania MHD mogą<br />
być przybliżone w sposób, który zachowuje zerową dywergencję pola magnetycznego.<br />
Podejście to ma swoje korzenie w mechanice nieściśliwych cieczy,<br />
gdzie wektor prędkości V musi spełniać równanie<br />
∇ · V = 0 . (621)<br />
Jednakże podwójna siatka numeryczna jest kłopotliwa do przechowywania w<br />
pamięci i wykorzystania w niestrukturalnych siatkach numerycznych;<br />
d) metoda błędu ucięcia (ang. the truncation-level error method) wymyślona<br />
przez Powella (1994). W metodzie tej do układu równań MHD dodano<br />
człon źródłowy proporcjonalny do ∇·B. Patrz równanie (603). W ten sposób<br />
166
lokalna niezerowa wartość ∇·B, wygenerowana numerycznie, ulega konwekcji<br />
zgodnie z równaniem (605). Zauważmy, że Brackbill i Barnes (1980) pokazali,<br />
że zapisując równania MHD w postaci niezachowawczej unikniemy niestabilności<br />
związanej z niezerową wartością ∇ · B. Równania MHD z członem<br />
źródłowym dodanym przez Powella (1994) prowadzi do problemu Riemanna,<br />
który charakteryzuje osiem fal. Siedem z nich jest obecna w problemie Riemanna<br />
dla równań MHD bez członu źródłowego (np. Huynh 1995) a fala<br />
ósma jest związana z dywergencją pola magnetycznego. Janhunen (2000)<br />
wykazał, że kiedy wkład energii wewnętrznej do energii całkowitej jest mały<br />
w porównaniu do wkładu od energii magnetycznej, w metodzie tej może pojawić<br />
się niefizyczny przejściowy stan z ujemnym ciśnieniem. W konsekwencji<br />
tego algorytm obarczony jest poważnymi błedami numerycznymi. Janhunen<br />
(2000) pokazał, że problem ten można rozwiązać poprzez zaniedbanie członu<br />
źródłowego w równaniu na energię i pęd. Wtedy równanie (603) staje się<br />
q ,t + ∇ · F = −∇ · B(0, 0, v, 0) T , ∇ · B = 0 ; (622)<br />
e) metoda paraboliczna usuwania dywergencji (ang. a parabolic divergence<br />
cleaning method). Rozpatrzmy równanie indukcji z członem dyfuzyjnym<br />
stającym po prawej stronie równania, tj.<br />
B ,t + ∇ × E = η∇(∇ · B) , (623)<br />
gdzie E jest polem elektrycznym a η współczynnikiem dyfuzji. Podziałajmy<br />
operatorem ∇· na obie strony powyższego równania. Otrzymamy wtedy równanie<br />
dyfuzji<br />
∇ · B ,t = η∇ 2 (∇ · B) . (624)<br />
Z równania tego wynika, że niezerowa wartość ∇ · B ulega procesowi dyfuzji<br />
i jest usuwana z układu.<br />
167
Wprowadźmy skalar ψ, dodatkowe równanie ewolucji na ψ i zmodyfikujmy<br />
równanie indukcji do<br />
B ,t + ∇ × E = ∇ψ , (625)<br />
ψ ,t + ∇ · B = −kψ . (626)<br />
Stąd otrzymamy równanie telegrafu, tj.<br />
∇ · B ,tt + k∇ · B ,t − ∇ 2 ∇ · B = 0 . (627)<br />
Z równania tego wynika, że niezerowa wartość ∇ · B ulega procesowi dyfuzji<br />
i jest usuwana z układu.<br />
Podsumowując, w metodzie tej zmodyfikowany układ równań, w kórych<br />
warunek zachowania zerowej dywergencji jest sprzężony z równaniami MHD<br />
(zapisanymi w formie zachowawczej) poprzez wykorzystanie uogólnionego<br />
czynnika Lagrange’a. Formalizm taki prowadzi do tego, że błedy <strong>numeryczne</strong><br />
związane z niezerową dywergencją są transportowane do brzegów obszaru<br />
symulacji z maksymalnie dozwoloną prędkością. Jednocześnie zmniejsza się<br />
amplituda tych błędów. Szczegóły dotyczące tej metody mogą być znalezione<br />
w pracy Dednera i innych (2002);<br />
(e) metoda niepodwójnej siatki <strong>numeryczne</strong>j narzucająca warunek zerowania<br />
dywergencji (ang. the unstaggered constraint transport method) rozwinięta<br />
została w pracy Rossmanitha (2006). W metodzie tej wszystkie wartości<br />
plazmowe włączając wszystkie składowe pola magnetycznego B i magnetycznej<br />
funkcji strumienia A,<br />
B = ∇ × A , (628)<br />
są umieszczone w środkach komórek numerycznych. Jednocześnie metoda fal<br />
biegnących (LeVeque 2002) jest użyta do ewolucji A. W ostatnio uwolnionej<br />
wersji metody dla przypadku trój-wymiarowego schemat numeryczny prowadzi<br />
do słabo hiperbolicznego równania transportu dla A (Helzel i inni 2010).<br />
168
Inny istotny problem związany jest z zadaniem absorbujących warunków<br />
brzegowych. Niewłaściwie zadane warunki brzegowe prowadzą do błędnych<br />
odbić sygnału, który dotarł do brzegu obszaru symulacji. Powszechnie stosowaną<br />
metodą jest warunek promieniowania Sommerfelda (Orlanski 1976).<br />
Zauważmy, że warunki brzegowe mogą być trudnymi do zadania dla metody<br />
niejawnej dyskretyzującej równania z przewodnictwem cieplnym. Metoda<br />
charakterystyk nie może być wtedy dokładnie zastosowana (Suess 1982).<br />
Ten techniczny problem możemy próbować rozwiązać na kilka sposobów (Suess<br />
1982).<br />
13.3 Zalecane ćwiczenia<br />
Z wykorzystaniem programu <strong>numeryczne</strong>go rozwiązującego problem początkowy<br />
dla równań MHD wykonajmy następujące ćwiczenia:<br />
1. zapoznajmy się z programem w conajmniej w takim stopniu, aby możliwe<br />
było uruchamianie go, zadawanie warunków początkowych i brzegowych<br />
oraz odczytywanie i wizualizacja danych numerycznych<br />
2. dokonajmy symulacji numerycznych dla przypadku jednorodnego stanu<br />
równowagi z prostym polem magnetycznym. Wygenerujmy różne zaburzenia<br />
odpowiadające poszczególnym falom (szybkiej i powolnej falom<br />
magnetoakustycznym oraz fali Alfvéna)<br />
3. rozważmy przypadki małej i dużej wartości współczynnika β, który<br />
równa się ilorazowi ciśnienia termicznego do ciśnienia magnetycznego.<br />
Zauważmy różnicę między szybką a powolną falami magnetoakustycznymi<br />
dla obu przypadków<br />
4. zadajmy zaburzenie w ciśnieniu termicznym. Zwróćmy uwagę, że gęstość<br />
masy pozostaje permamentnie zaburzona w miejscu, w którym<br />
169
ył zadany impuls początkowy, co odpowiada tzw. modowi entropii<br />
5. zmniejszajmy wartość pola magnetycznego w układzie. Które fale znikają<br />
a która z nich przekształca się w falę akustyczną<br />
14 Wykład 23-24: Model polimeru, ropy naftowej<br />
i wody. Odkształcenia sprężyste w belkach<br />
i innych układach mechanicznych<br />
W poprzednich wykładach dyskutowaliśmy przykłady nieliniowych praw<br />
zachowania dla układów fizyki technicznej. W szczególności przedstawiliśmy<br />
układ równań Eulera dla fal w płynach, równania magnetohydrodynamki modelujące<br />
<strong>zjawisk</strong>a w plazmie, równanie ruchu drogowego i równanie Buckley’a-<br />
Leverett’a. W czasie tego wykładu przedstwimy równanie przemysłu naftowego<br />
z polimerem i dokonamy analizy odkształceń sprężystych w belkach i<br />
innych układach mechanicznych.<br />
14.1 Dynamika ropy naftowej, wody i polimeru - zastosowanie<br />
w przemyśle naftowym<br />
W Rozdz. 3.6 przedstawiliśmy równanie opisujące proces pozyskiwania<br />
ropy naftowej ze złoż, z których ropa wydobyta już była w klasyczny sposób.<br />
Pozyskiwanie ropy w sposób nieklasyczny polega na wpompowaniu wody do<br />
złoża i wypchaniu ropy poprzez studnie produkcyjne. Ponieważ woda oznacza<br />
się mniejszą lepkością niż ropa naftowa, na granicy woda-ropa tworzą się lepkie<br />
niestabilności, które oznaczają się obecnością tzw. palców (ang. fingers).<br />
W niektórych przypadkach niestabilności te można zredukować poprzez do-<br />
170
danie polimeru do wody. Polimer ten powoduje wzrost lepkości wody prowadząc<br />
w ten sposób do redukcji niestabilności. Przypomnijmy, że polimerem<br />
nazywamy wielkocząsteczkowy związek chemiczny powstały z połączenia prostych<br />
cząsteczek o niskim ciężarze cząsteczkowym. Cechą charakterystyczną<br />
polimerów jest występowanie powtarzających się fragmentów cząsteczki tzw.<br />
segmentów.<br />
Podobnie jak dla równania Buckley’a–Leverett’a, założymy, że ropa naftowa<br />
i woda są ośrodkami nieściśliwymi i porowatość (ang. porosity) skał jest<br />
stała. W rezultacie masa całkowita ropy naftowej przypadająca na jednostkę<br />
objętości wynosi ϱ 0 s 0 a masa całkowita wody jest ϱ w s w , gdzie s 0 i s w oznaczają<br />
nasycenia (ang. saturations) odpowiednio ropy i wody. Przypomnijmy,<br />
że nasycenie definiujemy jako objętość fazy do objętości całkowitej płynu.<br />
Wobec tego mamy<br />
s 0 + s w = 1 . (629)<br />
W rozważanym modelu polimer nie miesza się z ropą ale czyni to z wodą.<br />
Określmy koncentrację polimeru c jako masę polimeru przypadającą na jednostkę<br />
objętości wody i na jednostki masy całkowitej. Wtedy masa polimeru<br />
na jednostkę objętości płynu jest cϱ w s w . Prawo zachowania masy dla trzech<br />
składników (ropy naftowej, polimeru i wody) możemy zapisać następująco:<br />
d<br />
dt<br />
Ω<br />
∫<br />
d<br />
(1 − c)s w ϱ w φdx +<br />
dt Ω<br />
∫<br />
∫<br />
d<br />
s 0 ϱ 0 φdx + n · v 0 ϱ 0 ds = 0 , (630)<br />
dt Ω<br />
∂Ω<br />
∫<br />
∫<br />
cs w ϱ w φdx + n · v w cϱ w ds = 0 , (631)<br />
∫<br />
∂Ω<br />
∂Ω<br />
n · v w (1 − c)ϱ w ds = 0 . (632)<br />
Tutaj v 0 i v w są prędkościami Darcy’ego odpowiednio ropy naftowej i wody.<br />
Ponieważ gęstości wszystkich trzech faz są stałe, możemy podzielić powyższe<br />
równania przez odpowiednie gęstości fal. Po dodaniu w ten sposób otrzyma-<br />
171
nych równań otrzymamy<br />
∫<br />
∂Ω<br />
n · (v 0 + v w ) ds = 0 . (633)<br />
Z równania tego wnioskujemy, że prędkość całkowita<br />
v T ≡ v 0 + v w (634)<br />
spełnia równanie<br />
∇ · v T = 0 . (635)<br />
Prawo Darcy’ego zapiszemy jako<br />
v 0 = K(gϱ 0 − ∇p)λ 0 (1 − s w ) , (636)<br />
v w = K(gϱ w − ∇p)λ w (s w , c) . (637)<br />
Macierz K reprezentuje przenikalność (ang. permeability) skał a g jest wektorem<br />
przyśpieszenia grawitacyjnego. Użyliśmy tutaj mobilności faz jako ilorazu<br />
względnej przenikalności i lepkości µ, czyli<br />
λ 0 (1 − s w ) = κ ro(1 − s w )<br />
µ 0<br />
, (638)<br />
λ w (s w , c) = κ rw(s w )<br />
µ w (c) . (639)<br />
W wyrażeniach tych zaniedbaliśmy dyfuzję, np. związaną z ciśnieniem kapilarnym,<br />
mieszanie konwekcyjne i dyfuzję molekularną.<br />
Więcej szczegółów opisujących powyższy model można znaleźć w monografii<br />
Trangensteina (2009).<br />
14.1.1 Zalecane ćwiczenia<br />
Wykorzystajmy program numeryczny buckley-leverett.f napisany przez<br />
Trangensteina (2009). Z pomocą tego programu wykonajmy następujące ćwiczenia:<br />
172
1. zapoznajmy się z programem buckley-leverett.f (Trangenstein 2009)<br />
2. dokonajmy symulacji numerycznych dla dwóch przypadków: a) braku<br />
polimeru i b) jego obecności w układzie<br />
3. porównajmy otrzymane wyniki<br />
14.2 Odkształcenia sprężyste w układach mechanicznych<br />
Mechanika ciała stałego jest o wiele bardziej skomplikowana niż dynamika<br />
płynów. Układ praw zachowania jest liczniejszy i modele ciała stałego są o<br />
wiele bardziej skomplikowane niż w przypadku dynamiki płynów. Tradycyjnie<br />
problemy z mechaniką ciała stałego rozwiązywane są z wykorzystaniem<br />
metod elementów skończonych, które nie są dyskutowane w czasie tych wykładów.<br />
Nowoczesne metody rozpodabniania fal szokowych są stosowane od<br />
niedawna do mechaniki ciała stałego i wymagają one jeszcze pewnej uwagi.<br />
Rozpoczniemy opis zaburzeń w ciele stałym w wykorzystaniem prawa<br />
zachowania masy (Trangenstein 2009), tj.<br />
ϱ ,t + ∇ · (Vϱ) = 0 , (640)<br />
gdzie ϱ jest gęstością masy a V prędkością elementu ciała stałego. Do opisu<br />
odkształceń potrzebujemy także prawa zachowania pędu, czyli<br />
(n · Vϱ) ,t + ∇ · (Vϱn · V − Sn) = ϱn · g . (641)<br />
Tutaj n jest wektorem jednostkowym wyznaczającym dowolnie ustalony kierunek,<br />
g jest przyśpieszeniem takim jak grawitacyjne a S jest tensorem naprężeń<br />
Cauchy’ego. W niektórych przypadkach g może zawierać człony lepkościowe.<br />
Tensor naprężeń Cauchy’ego jest symetryczny dla większości praktycznych<br />
problemów.<br />
173
Powyższy układ równań uzupełniamy pierwszym prawem termodynamiki<br />
[ϱ(e + 1 2 V 2 )] ,t + ∇ · [Vϱ(e + 1 2 V 2 ) − SV] = ϱ(ω + g · V) , (642)<br />
gdzie e jest energią wewnętrzną na jednostkę masy i ω oznacza promienisty<br />
transport ciepła na na jednostkę masy. W niektórych przypadkach ω może<br />
zawierać dyfuzję ciepła.<br />
W celu zamknięcia powyższych równań ruchu potrzebujemy odpowiedniego<br />
prawa określającego naprężenia. Dla modelu hiperelastycznego mamy<br />
S L = 2(ϱ L Ψ) ,C , (643)<br />
gdzie C = J T J jest tensorem deformacji Greena a Ψ(C) oznacza swobodną<br />
energię Helmholtza przypadającą na jednostkę masy. Szczególnie proste wyrażenie<br />
na energię swobodną Helmholtza otrzymamy dla modelu Mooney’a–Rivlina<br />
ϱ L Ψ(C) = λ 8 [ln det(C)]2 + µ [tr(C) − ln det(C)] . (644)<br />
2<br />
Tutaj stałymi są moduł naprężeń stycznych µ i stała Lama<br />
λ = κ − 2 3 µ , (645)<br />
gdzie µ jest modułem naprężeń normalnych.<br />
14.2.1 Zalecane ćwiczenia<br />
Ponieważ równania opisujące dynamikę ciał stałych są bardzo skomplikowane<br />
ograniczymy się do polecenia literatury (Trangenstein 2009) i polecimy<br />
wykorzystanie programu <strong>numeryczne</strong>go string.f napisanego przez Trangensteina<br />
(2009). Program ten rozwiązuje problem Riemanna dla oscylującej<br />
struny.<br />
174
15 Wykład 25-28: Równania płytkiej wody<br />
15.1 Jedno-wymiarowe równania płytkiej wody<br />
Zapiszmy jedno-wymiarowe równania płytkiej wody w następującej postaci:<br />
f =<br />
⎡ ⎤<br />
⎢ f 1 ⎥<br />
⎣<br />
f 2<br />
⎦ =<br />
q =<br />
⎡<br />
⎢<br />
⎣<br />
⎡ ⎤<br />
⎢ q 1 ⎥<br />
⎣<br />
q 2<br />
⎦ =<br />
⎡<br />
⎢<br />
⎣<br />
h hu<br />
⎤<br />
⎤ ⎡<br />
hu ⎥ ⎢<br />
⎦ = ⎣<br />
hu 2 + 1 2 gh2<br />
Elementy składowe Jakobianu zapiszemy jako<br />
⎥<br />
⎦ , (646)<br />
q 2<br />
q 2 2<br />
q1<br />
+ g 2 q2 1<br />
⎤<br />
⎥<br />
⎦ . (647)<br />
f 2 ,q 1<br />
= gq 1 − q2 2<br />
q 2 1<br />
f 1 ,q 1<br />
= 0 , f 1 ,q 2<br />
= 1 , (648)<br />
= a 2 − u 2 , f 2 ,q 2<br />
= 2 q 2<br />
q 1<br />
= 2u , (649)<br />
gdzie a = √ gh jest szybkością (ang. celerity). W rezultacie Jakobian jednowymiarowych<br />
równań płytkiej wody zapiszemy następująco:<br />
przez<br />
A =<br />
⎡<br />
⎢<br />
⎣<br />
0 1<br />
a 2 − u 2<br />
2u<br />
⎤<br />
⎥<br />
⎦ . (650)<br />
Ćwiczenie 1: Udowodnijmy, że wartości własne Jakobianu A dane są<br />
λ (1) = u − a , λ (2) = u + a . (651)<br />
Ćwiczenie 2: Pokażmy, że wektory własne Jakobianu A to<br />
r (1) =<br />
⎡<br />
⎢<br />
⎣<br />
1<br />
u − a<br />
⎤<br />
⎡<br />
⎥<br />
⎦ , r (2) ⎢<br />
= ⎣<br />
1<br />
u + a<br />
⎤<br />
⎥<br />
⎦ . (652)<br />
175
15.2 Problem Riemanna dla jedno-wymiarowych równań<br />
płytkiej wody<br />
Możemy znaleźć dokładne rozwiązanie problemu Riemanna z wykorzystaniem:<br />
1. warunków Rankine’a-Hugoniota, które, przypomnijmy, możemy stosować<br />
tylko do nieciągłości takich jak fale szokowe i kontaktowe;<br />
2. niezmienników Riemanna, które wygodnie jest użyć do opisu fal rozrzedzeniowych.<br />
Niezmienniki Riemanna dyskutujemy w rozdz. 10.3;<br />
3. charakterystycznych równań. Patrz równanie (438), w którym równania<br />
charakterystyczne zastosowano do równań Eulera. Szczegóły dotyczące<br />
charakterystycznych równań mogą być znalezione w rozdz. 3.1.2 monografii<br />
Toro (2009);<br />
4. warunki entropii, które określają czy stan początkowy z nieciągłą funkcją<br />
będzie ewoluował do fali rozrzedzeniowej lub do szoku.<br />
15.3 Problem pękniętej tamy<br />
Z wykorzystaniem jednego z programów (np. hw-mush.f) z katatogu /hyperwat/onedim.dir<br />
z biblioteki Numerica wykonajmy <strong>symulacje</strong> dla problemu<br />
pękniętej tamy. Problem ten odpowiada równaniom płytkiej wody, dla których<br />
w stanie początkowym powierzchnia wody jest nieciągła w danym punkcie<br />
przestrzeni, podczas gdy pozostałe wielkości, czyli prędkość i ciśnienie, są<br />
stałe. Problem ten modeluje pękniętą tamę. W szczególności:<br />
1. zwróćmy uwagę na falę uderzeniową biegnącą w dół tamy i falę rozrzedzeniową<br />
poruszającą się w kierunku przeciwnym<br />
176
2. wybierzmy najlepszą metodę numeryczną modelującą fale<br />
3. przygotujmy narzędzia do wizualizacji danych<br />
4. wykonajmy podobne eksperymenty <strong>numeryczne</strong>, ale dla modelu dwuwymiarowego<br />
wykorzystując jeden z dwóch programów z katalogu /hyperwat/twodim.dir<br />
5. w modelu dwu-wymiarowym tamie możemy nadać odpowiedni profil w<br />
kierunku prostopadłym do brzegów zbiornika. Prześledźmy scenariusze<br />
ewolucji fal dla kilku profili tamy<br />
15.4 Numeryczne prognozowanie pogody<br />
Wprowadźmy definicję <strong>numeryczne</strong>j prognozy pogody, którą będzie polegała<br />
na określeniu stanu atmosfery w przyszłości na podstawie znajomości<br />
obecnych warunków atmosfery ziemskiej. Numeryczna prognoza pogody<br />
oparta jest na rozwiązaniu równań opisujących dynamikę atmosfery. Równania<br />
te zapisane są w postaci dyskretnej, która jest następnie rozwiązana<br />
numerycznie z wykorzystaniem komputerów o dużej mocy obliczeniowej.<br />
Aktualny stan atmosfery określa się na podstawie pomiarów charakterystycznych<br />
wielkości określających stan atmosfery, czyli np. ciśnienia, temperatury,<br />
wartości i kierunku wiatru, wilgotności powietrza itd. Równania określające<br />
dynamikę powietrza wprowadza się zakładając, że powietrze jest płynem.<br />
Przy takim założeniu są to równania typu Naviera-Stokesa. Ponieważ<br />
równań tych nie można rozwiązać znanymi nam metodami analitycznymi,<br />
wprowadza się istotne uproszczenie, że atmosferę można w przybliżeniu opisać<br />
poprzez siatkę numeryczną. Rachunki dla siatki <strong>numeryczne</strong>j prowadzą<br />
do określenia stanu atmosfery w przyszłości czyli prognozy pogody. Ponieważ<br />
rachunki <strong>numeryczne</strong> są bardzo skomplikowane a najbardziej nas interesującą<br />
177
warstwą atmosfery jest warstwa przy powierzchni ziemi, ograniczymy się do<br />
przypadku równań płytkiej wody.<br />
15.4.1 Zalecane ćwiczenia<br />
Z wykorzystaniem programu <strong>numeryczne</strong>go rozwiązującego równania płytkiej<br />
wody, polecamy wykonanie następujących eksperymentów numerycznych:<br />
1. dla danego stanu atmosfery prześledźmy jej ewolucję dla przypadku<br />
zbliżających się ciepłych mas powietrza<br />
2. wykonajmy podobny eksperyment numeryczny ale dla przypadku zbliżających<br />
się chłodnych mas powietrza<br />
3. przeprowadźmy <strong>symulacje</strong> <strong>numeryczne</strong> zderzających się ciepłych i zimnych<br />
mas powietrza<br />
4. eksperymentujmy ze <strong>zjawisk</strong>iem konwekcji pojawiającym się dla atmosfery<br />
niestabilnej, dla której spełniony jest warunek niestabilności<br />
Chandrasekhara. Zjawisko to możemy np. wywołać poprzez zadanie lokalnego<br />
zaburzenia w ciśnieniu. Wykonajmy podobny eksperyment ale<br />
dla atmosfery stabilnej konwektywnie<br />
5. zadajmy zaburzenie początkowe generujące wir w atmosferze. Zaburzenie<br />
to odpowiada pionowo popchniętemy powietrzu. Prześledźmy<br />
rozwój wiru w czasie. Zauważmy, w jaki sposób powstają kolejne wiry<br />
dające początek tzw. kaskadzie energii do wirów o mniejszych rozmiarach<br />
przestrzennych. Dokonajmy wizualizacji danych numerycznych<br />
6. wygenerujmy zaburzenie początkowe polegające na popchnięciu powietrza<br />
w kierunku poziomym. Dokonajmy analizy <strong>zjawisk</strong> w atmosferze<br />
178
7. spróbujmy wygenerować <strong>zjawisk</strong>o tornada poprzez zadanie od pewnej<br />
wysokości wiatru wiejącego w kierunku poziomym<br />
179
16 Wykład 29-30: Problemy zaawansowane<br />
16.1 Wielo-wymiarowe równania zachowania<br />
Rozważmy problem fal rozchodzących się w trzech wymiarach. Fale te<br />
opisywane niech będą równaniem<br />
u ,t + ∇ · F = 0, (653)<br />
gdzie u oznacza wektor wielkości zachowawczych (u 1 , u 2 , · · · , u q ) T a F oznacza<br />
strumień, który jest trój-wektorem o rozmiarze q × 3. Całkując równanie<br />
(653) po czasie w przedziale kroku czasowego ∆t i ze względu na zmienne<br />
przestrzenne po powierzchni komórki <strong>numeryczne</strong>j ∆x∆y, znajdziemy następującą<br />
postać dyskretną równania:<br />
u n+1<br />
ij = u n ij − ∆t<br />
∆x∆y<br />
4∑<br />
F(ū n m) · l m . (654)<br />
m=1<br />
Do wyprowadzenia powyższego wyrażenia wykorzystaliśmy twierdzenie Gaussa<br />
do zamiany całki powierzchniowej na całkowanie po brzegach. Wektor l m jest<br />
prostopadły do brzegu komórki o numerze m i ma długość równą długości<br />
tego brzegu. W powyższym wyrażeniu rozważyliśmy przypadek komórek numerycznych<br />
składających się z czterech brzegów. Wielkość u n ij oznacza uśrednienie<br />
po powierzchni komórki ij, wzięte dla czasu n∆t, a ū n m oznacza u n ,<br />
które obliczymy na brzegu m-tej komórki.<br />
Zauważmy, że schemat zadany równaniem (654) naśladuje postać całkową<br />
równania (653). Postać ta jest niezwykle ważna, ponieważ schemat numeryczny<br />
powinien być w stanie rozpodobnić fale szokowe. W przeciwieństwie<br />
do postaci całkowej, postać różniczkowa prawa zachowania opisana równaniem<br />
(653) nie ma sensu dla nieciągłych profili. Całkę powierzchniową,<br />
∫<br />
F · dl ,<br />
180
w równaniu (654) przybliżyliśmy poprzez użycie na każdym brzegu komórki<br />
<strong>numeryczne</strong>j uśrednionego strumienia<br />
F = F(ū n m) ,<br />
z ū n m oznaczającym wartość średnią na brzegu m. Najdokładniejszym wyborem<br />
ū n m mogłoby być uśrednienie wartości z lewej u n l i prawej u n r stron,<br />
tj.<br />
ū n m = un l + u n r<br />
2<br />
. (655)<br />
Jednakże dla równania unoszenia z taką średnią równanie (654) równoważne<br />
jest schematowi centralnemu, który jest drugiego-rzędu dokładny ale niestabily<br />
i wobec tego bezużyteczny w praktyce. Problem ten może być usunięty<br />
poprzez zastosowanie metody rozszczepienia operatora (ang. operator splitting),<br />
który opiszemy w następnej części materiałów.<br />
16.1.1 Metody rozszczepienia operatora<br />
Popularną metodą stosowaną do rozwiązania wielo-wymiarowych równań<br />
hiperbolicznych jest metoda rozszczepienia operatora, np. (Murawski, Goossens<br />
1994). Ideą metody rozszczepienia operatora jest sekwencyjne rozwiązywanie<br />
jedo-wymiarowych równań, które powstały wskutek rozszczepienia<br />
równań wielo-wymiarowych. W czasie tych rozwiązań chwilowo ignorujemy<br />
obecność innych wymiarów. Ideę metody wyjaśnimy na przykładzie dwuwymiarowego<br />
układu równań<br />
u ,t + Au ,x + Bu ,y = 0 . (656)<br />
Układ ten możemy rozszczepić na dwa jedno-wymiarowe równania składowe:<br />
u ,t + Au ,x = 0 , (657)<br />
u ,t + Bu ,y = 0 . (658)<br />
181
W czasie skanowania wzdłuż kierunku x (ang. x-sweep) rozwiążemy równanie<br />
(657) dla y = const, zamieniając u na u ∗ . W czasie skanowania wzdłuż<br />
kierunku y użyjemy tak otrzymanego u ∗ do rozwiązania równania (658) dla<br />
x = const.<br />
Taka procedura na ogół wprowadza błąd rozszczepienia, chyba że AB =<br />
BA. Wyjaśnimy to w następujący sposób. Zdefiniujmy dokładne rozwiązanie<br />
dane za pomocą operatora S ∆t , który dokonuje ewolucji rozwiązania u(x, y, t)<br />
zgodnie z równaniem (656) o krok czasowy ∆t. W analogiczny sposób określimy<br />
S x ∆t i S y ∆t, które są operatorami ewolucji rozwiązania opisanego odpowiednio<br />
równaniami (657) i (658). Z wykorzystaniem rozwinięcia w szereg<br />
Taylora operatory te możemy zapisać następująco:<br />
S x ∆t ≃ e −∆tA ∂<br />
∂x , (659)<br />
S y ∆t ≃ e −∆tB ∂<br />
∂y , (660)<br />
S ∆t ≃ e −∆t(A ∂<br />
∂x +B ∂<br />
∂y ) , (661)<br />
gdzie wprowadziliśmy notację<br />
e a ∂<br />
∂x<br />
Strang (1968) pokazał, że<br />
= 1 + a<br />
∂<br />
∂x + 1 2! (a ∂<br />
∂x )2 + 1 3! (a ∂<br />
∂x )3 + · · · . (662)<br />
S x ∆t S y ∆tS x ∆t<br />
2<br />
2<br />
= S ∆t + O((∆t) 3 ). (663)<br />
Tak więc powyższa kombinacja operatorów ewolucji jedno-wymariowych rozwiązań<br />
przybliża całkowity operator ewolucji z dokładnością drugiego-rzędu.<br />
Błąd rozszczepienia zwykle nie przewyższa innych błedów numerycznych.<br />
Wtedy rozszczepienie przestrzenne może stanowić bardzo efektywne podejście<br />
(np. Murawski, Goossens 1994). Jednakże metoda rozszczepienia ma<br />
kilka wad. Dla przykładu nieciągłości biegnące ukośnie do siatki są bardziej<br />
182
ozmyte niż te poruszające się wzdłuż kierunków wyznaczonych przez osie<br />
układu współrzędnych. Zadanie warunków brzegowych może być również<br />
skomplikowane z użyciem tej metody. Problemy te znikają dla przypadku<br />
metod nierozszczepialnego operatora, które przedstawimy w następnej części<br />
materiałów dydaktycznych.<br />
16.1.2 Metody nierozszczepialnego operatora<br />
W przypadku metod nierozszczepialnego operatora informacja jest transponowana<br />
zgodnie z oryginalnym wielo-wymiarowym równaniem. Wielo-wymiarowe<br />
problemy Riemanna możemy rozwiązać na brzegach komórek. Używamy<br />
filtratorów do wytłumienia numerycznie wygenerowanych oscylacji,<br />
które zwykle pojawiają się w przypadku stosowania wyższego-rzędu schematów<br />
numerycznych. Fale, które rozchodzą się w lewą i prawą strony są<br />
rozszczepione na części biegnące w kierunku poprzecznym poprzez rozwiązanie<br />
problemów Riemanna w kierunkach stycznych do powierzchni między<br />
komórkami. W rezultacje otrzymujemy mieszane człony. które są niezbędne<br />
do otrzymania stabilnych schematów conajmniej drugiego-rzędu dokładnych<br />
(LeVeque 1997).<br />
Colella (1990) wyprowadził rodzinę schematów numerycznych dla zachowawczych<br />
równań hiperbolicznych. Schematy te nie wykorzystują rozszczepienia<br />
operatorowego a wprost przeciwnie - używają wielowymiarowych właściwości<br />
rozwiązań falowych do obliczenia strumieni. W schematach tych<br />
człony drugiego-rzędu są wyfiltrowane do wygaszenia numerycznych oscylacji.<br />
Chociaż w schematach tych występują te same problemy Riemana co w<br />
metodach rozszczepialnych, schematy nierozszczepialne są wolniejsze, ponieważ<br />
wymagają dwukrotnie więcej rozwiązań problemów Riemanna niż schematy<br />
rozszczepialne.<br />
183
16.1.3 Strukturalne i niestrukturalne siatki <strong>numeryczne</strong><br />
Obecnie mamy do dyspozycji dwa zasadnicze podejścia związane z wyborem<br />
siatek numerycznych. Jeden z nich oparty jest na siatkach strukturalnych<br />
a drugi - niestrukturlanych (Barth 1990, Mavriplis 1996, Pirzadeh 1996). Dla<br />
prostoty rozważmy przypadek dwu-wymiarowy.<br />
Siatkę nazywamy strukturalną, jeśli możemy ją zrzutować (przetransformować)<br />
z przestrzeni fizycznej na prostokąt. Jeśli nie istnieje takie rzutowanie,<br />
siatkę nazywamy niestrukturalną. Za prosty przykład siatki strukturalnej<br />
służy siatka w układzie współrzędnych kartezjańskich, w której wszystkie<br />
punkty siatki są rozmieszczone w równych odległościach od najbliższych sąsiadów.<br />
Innym przykładem jest siatka we współrzędnych cylindrycznych, w<br />
której długość wektora wodzącego r i kąt φ są rzutowane na prostokąt r − φ,<br />
np.<br />
0 ≤ r ≤ r max , 0 ≤ φ ≤ 2π . (664)<br />
Wśród niestrukturalnych siatek numerycznych istnieje proliferacja schematów,<br />
które używają trójkątów w dwóch wymiarach i graniastosłupów oraz<br />
ostrosłupów w trzech wymiarach. W przeciwieństwie do siatek strukturalnych,<br />
komórki w siatkach niestrukturalnych nie są zorganizowane w regularny<br />
sposób, ale za to siatki te dopasowują się do nieregularnych brzegów obszaru<br />
symulacji. Dla przykładu, w przypadku obszaru symulacji podzielonego na<br />
trójkąty, możemy zapisać prawo zachowania następująco:<br />
∫<br />
∫<br />
ρ ,t dV + (f + g) · ndl = ŝ . (665)<br />
V<br />
∂V<br />
Tutaj n oznacza wersor skierowany prostopadle na zewnątrz brzegu trójkąta,<br />
f i g są odpowiednio składowymi strumienia w kierunku x i y a ŝ<br />
jest członem źródłowym. Pół-dyskretny odpowiednik powyższego równania<br />
184
zapiszemy jako<br />
3∑<br />
V ρ ,t + F i ∆l i = 0, (666)<br />
i=1<br />
gdzie V oznacza objętość komórki i F i jest przybliżeniem numerycznym strumienia<br />
prostopadłego do brzegu komórki o numerze i i długości ∆l i . Używając<br />
schematu Roe’a (Roe 1981) F i możemy wyrazić jako<br />
F i (ρ l , ρ r ) = 1 2 [F (ρ l) + F (ρ r ) − |Ā|(ρ l − ρ r )], (667)<br />
gdzie Ā reprezentuje zlinearyzowany według Roe’a Jakobian a indeksy dolne<br />
l i r oznaczają odpowiednio lewy i prawy stan do międzypowierzchni (ang.<br />
interface) o numerze i.<br />
Rozwój metod opartych o siatki niestrukturalne nabrał rozpędu od połowy<br />
lat osiemdziesiątych. Pomimo tego algorytmy z siatkami niestrukturalnymi<br />
nie mogą dorównać metodom z siatkami strukturalnymi. Spowodowane<br />
jest to faktem, że siatki niestrukturalne są niewydajne w porównaniu do metod<br />
opartych na siatkach strukturalnych.<br />
Zarówno siatki strukturalne jak i niestrukturalne mają swoje słabe i<br />
mocne strony. Siatki strukturalne oznaczają się większą dokładnością i wydajnością<br />
w modelowaniu lepkich przepływów szczególnie dla dużych wartości<br />
liczby Reynoldsa Re, którą definiujemy jako<br />
Re = ϱV l<br />
µ = V l<br />
ν , (668)<br />
gdzie ϱ i V jest odpowiednio gęstością i prędkością płynu, µ (ν) jest współczynnikiem<br />
dynamicznej (kinematycznej) lepkości a l jest charakterystyczną<br />
długością. Słabą stroną obu metod jest to, że potrzebują one gęstej siatki, aby<br />
rozpodobnić lepkie warstwy brzegowe na zakrzywionych powierzchniach. Z<br />
drugiej strony siatki niestrukturalne są atrakcyjne dla rozpodobnienia skomplikowanych<br />
geometrii. Słabą stroną metod wykorzystujących siatki niestruk-<br />
185
turalne są trudności z wydajnymi rachunkami równoległymi (ang. parallel<br />
computation). W rezultacie, pół-niestrukturalne siatki <strong>numeryczne</strong> były<br />
wprowadzone (np. Nakahashi 1995). Metody te używają kombinacji siatek<br />
strukturalnych i niestrukturalnych.<br />
Inne metody, o których warto wspomnieć, to siatki Veronoi’a i Delaunay’a.<br />
W metodach tych dokonujemy triangulacji puntków brzegowych jako<br />
warunków początkowych. Komórki z dużą niesymetrią (ang. skewness) dzielimy<br />
wtedy na mniejsze komórki trójkątne. Procedura taka rozpoczyna się<br />
od podziału obszaru symulacji na tzw. obszary Voronoi’a (Voronoi 1908).<br />
Obszar Voronoi’a dla danego punktu siatki składa się z części płaszczyzny,<br />
która jest bliżej do tego punktu niż do jakiegokolwiek innego punktu (rys.<br />
16). Nieco inna metoda podziału na obszary trójkątne nazywa się metodą<br />
triangulacji Delaunay’a (Delaunay 1934). Patrz rys. 16, prawy panel.<br />
8<br />
1<br />
7<br />
2<br />
A<br />
6<br />
3<br />
5<br />
4<br />
8<br />
7<br />
1 2<br />
A<br />
6<br />
3<br />
5<br />
4<br />
Rysunek 16: Komórki Voronoi’a (lewy panel) i triangulacja Delaunay’a (prawy<br />
panel). Sąsiedzi węzła A noszą numery 1-8.<br />
Wada metody triangulacji Delaunay’a jest związana z niemożliwością zagwarantowania<br />
integralności brzegu, chyba że obszar symulacji jest wypukły.<br />
Inne problemy dotyczące tej metody wyszczególnione są przez Mavriplisa<br />
(1996). Wśród nich warte zauważenia jest to, że proces zmiany siatki (ang.<br />
regridding) w metodzie Delaunay’a jest numerycznie drogi (ang. computationally<br />
expensive). Co więcej, usunięcie jednego węzła może zmienić dramatycznie<br />
proces triangulacji, zaburzając nieodmiennie reprezentację płynu w<br />
186
etapach między adaptacją siatki (ang. grid adaptations). Dodatkowo, koszty<br />
związane z przechowywaniem informacji (ang. storage overheads) są dość<br />
znaczne.<br />
16.1.4 Siatki samoadaptacyjne<br />
Oczywiste jest, że obszary, w których zachodzą skomplikowane procesy<br />
fizyczne, takie jak np. mają miejsce w pobliżu stromych profili, wymagają<br />
siatek numerycznych o dużej rozdzielczości. Zwykle lokalizacja tych obszarów<br />
nie jest nam znana na początku przeprowadzanego eksperymentu <strong>numeryczne</strong>go.<br />
Ze względu na ograniczone możliwości komputera i czas przeprowadzonych<br />
rachunków nie jest możliwe zagęszczenie siatki <strong>numeryczne</strong>j w całym<br />
obszarze symulacji. Możliwym rozwiązaniem może być lokalne zagęszczenie<br />
siatki w obszarach, w których strome profile są wykryte (Berger, Colella 1989,<br />
Bell i inni 1994, Martin, Colella 2000). Siatki samoadaptacyjne (ang. adaptive<br />
mesh refinement - AMR) umożliwiają uzyskanie bardzo dużej rozdzielczości<br />
w najbardziej interesujących nas obszarach (rys. 17).<br />
Metoda AMR stosuje hierarchiczną strukturę siatek, które zmieniają się<br />
dynamicznie i które składają się z siatek o zmiennych rozmiarach. Siatkę,<br />
która pokrywa cały obszar symulacji, nazywamy siatką poziomu podstawowego,<br />
któremy zwykle przypisuje się numer 0. Istnieje także dodatkowe (o<br />
wyższych numerach) poziomy siatek, każda z nich zawiera komórki <strong>numeryczne</strong><br />
o mniejszych rozmiarach. Te ulepszone siatki nie pokrywają całego<br />
obszaru symulacji, ale tylko te jego części, gdzie oczekujemy większej rozdzielczości.<br />
Komórki <strong>numeryczne</strong> są zagęszczane lokalnie w oparciu o oszacowanie<br />
błędu <strong>numeryczne</strong>go (De Zeeuw, Powell 1993). W ten sposób poprzez<br />
skoncentrowanie komórek tam, gdzie są one najbardziej potrzebne, możemy<br />
uzyskać rozwiązania o wysokiej jakości w rozsądnym czasie przeprowadzania<br />
187
Rysunek 17: Przykład zastosowania siatek samoadaptacyjnych. Granice bloków<br />
składających się z 8 × 8 komórek oznaczone są ciągłą linią. Lewy panel odpowiada<br />
chwili czasu wcześniejszej niż prawy panel.<br />
rachunków numerycznych. Dlatego ważne jest wydajne rozpodobnienie nieporównywalnych<br />
skal przestrzennych. Możemy przy tym stosować różnorodne<br />
kryteria zagęszczania siatek. Dla przykładu, możemy użyć lokalnej dywergencji<br />
prędkości do detekcji <strong>zjawisk</strong> związanych ze ściśliwością ośrodka, podczas<br />
gdy rotacja prędkości jest stosowna do detekcji turbulencji. Dla komórki<br />
<strong>numeryczne</strong>j o charakterystycznym rozmiarze ∆x, detektory ściśliwości d c i<br />
turbulencji d s określimy następująco (De Zeeuw, Powell 1993):<br />
d c = |∇ · v|(∆x) 3/2 , (669)<br />
d s = |∇ × v|(∆x) 3/2 . (670)<br />
Dokonujemy podziału komórek lub zwiększenia ich rozmiarów, jeśli d c i d s<br />
są większe lub mniejsze od określonych przez nas progów (ang. threshold).<br />
Skomplikowane geometrie możemy potraktować z użyciem podziału komórek<br />
188
(Quirk 1994). W tym przypadku pokrywamy siatką kartezjańską cały obszar<br />
symulacji.<br />
Zwróćmy uwagę, że zmiana siatki (ang. remeshing) jest względnie łatwa<br />
dla siatek trójkątnych (Trépanie i inni 1993). Zagęszczenia siatek możemy<br />
dokonać poprzez podział trójkąta na dwa trójkąty poprzez przecięcie<br />
go wzdłuż najdłuższego brzegu. Zwiększenia rozmiarów (ang. coarsening)<br />
trójkąta dokonujemy natomiast poprzez usunięcie węzła. Węzeł jest oznaczony<br />
do usunięcia, jeśli rozmiary jego wszystkich sąsiadujących trójkątów<br />
mają być zwiększone. W wyniku tego procesu otrzymujemy wielokąt (ang.<br />
polygon) (Trépanie i inni 1993).<br />
16.2 Niejawne schematy <strong>numeryczne</strong><br />
Jawne schematy (ang. explicit schemes) <strong>numeryczne</strong> były rozwinięte wcześniej<br />
z racji ich prostoty w porównaniu ze schematami niejawnymi (ang. implicit<br />
schemes) (Collins i inni 1995, Dai, Woodward 1996). Jednakże główne<br />
ograniczenia w stosowaniu schematów jawnych wynikają z ograniczeń narzuconych<br />
na krok czasowy przez warunek stabilności. Z tego powodu powstały<br />
metody niejawne, które nie mają ograniczeń wynikających z warunku stabilności<br />
na krok czasowy. Dla wielu problemów <strong>fizycznych</strong> interesujące nas<br />
<strong>zjawisk</strong>a charakteryzują się skalami czasowymi, które są o wiele dłuższe niż<br />
charakterystyczne czasy przejścia fal (ang. characteristic wave transit time).<br />
W tym wypadku dla jawnego schematu krok czasowy byłby zbyt mały, aby<br />
rozpodobnić interesujące nas <strong>zjawisk</strong>a. Schemat niejawny usuwa numerycznie<br />
wprowadzone ograniczenie na krok czasowy umożliwiając używnie dużo<br />
większych przyrostów czasu (np. Korevaar, van Leer 1988).<br />
Podczas użycia niejawanego schematu oczekujemy, że w wyniku błędów<br />
numerycznych szoki doznają wygładzenia. Dlatego, jeśli naszym celem jest<br />
189
dokładne rozpodobnienie fal szokowych, metody jawne stanowią lepszy wybór<br />
niż schematy niejawne. Jednakże efektywność tych schematów nie jest<br />
tylko związana z rozmieszczeniem siatki, ale także silnie zależy od schematu<br />
całkowania w czasie. Wiadomym jest, że jeśli chodzi o dozwolony krok czasowy,<br />
schematy niejawne są mniej restrykcyjne od schematów jawnych.<br />
Schematy niejawne są znane w hydrodynamice. Szeroki przegląd niejawnych<br />
schematów numerycznych dokonany został przez Yee (1989). W szczegolności,<br />
niejawny algorytm poprawionego strumienia (ang. implicit fluxcorrected<br />
transport algorithm) był wyprowadzony przez Steinle i Morrow<br />
(1989). Kilka metod było wymyślonych do rozwiązania równań niejawnych.<br />
Dla przykładu, rozważmy następujący układ równań<br />
u ,t = f(u) . (671)<br />
Możemy dokonać dyskretyzacji tego układu do następującej postaci:<br />
(1 − θ∆tf ,u (u n ))(u n+1 − u n ) = ∆tf(u n ) , (672)<br />
gdzie f ,u jest Jakobianem. Schemat ten produkuje duży układ rzadkich (ang.<br />
sparse) równań liniowych, które muszą być rozwiązane w każdym kroku czasowym<br />
w celu uaktualnienia rozwiązania. Takie niejawne sformułowanie całkowania<br />
w czasie prowadzi do algebraicznego układu równań. W granicy<br />
nieskończenie dużego kroku czasowego pierwszy człon po lewej stronie równania<br />
znika prowadząc do metody Newtona. Dla skończonej wartości kroku<br />
czasowego schemat ten może być zrelaksowany metodą Gaussa-Seidel’a (np.<br />
Fischer, Hirschel 1993). Na ogół trzy do sześciu iteracji w jednym kroku<br />
czasowym może wystarczyć do uzyskania dokładnej zbieżności; zależy to od<br />
tego, jak dobre jest początkowe przybliżenie. Pomysł polega na użyciu starego<br />
rozwiązania jako przybliżenia początkowego dla równania macierzowego.<br />
190
Możemy wtedy używać iteracyjnie zaimplementowanych relaksacji do wygładzenia<br />
i redukcji powstałych błędów numerycznych.<br />
Główny problem z metodami niejawnymi związany jest z zapotrzebowaniami<br />
na pamięć. Wiele schematów numerycznych wymaga dwu-trzykrotnie<br />
więcej pamięci niż dla macierzy Jakobiego, co czyni metodę niejawną niepożądaną<br />
w przypadkach trój-wymiarowych. Metody wielu siatek (ang. multigrid)<br />
i ledwo niejawne (ang. barely implicit) stanowią alternatywy do metod<br />
niejawnych usuwając zapotrzebowania na pamięć. Metody ledwo niejawne<br />
opisemy w następnej części materiałów dydaktycznych.<br />
16.3 Ledwo niejawny schemat dla równań Eulera<br />
Jako przykład niejawnego schematu przedstawimy ledwo niejawny schemat<br />
(ang. barely implicit scheme (BIS)) dla równań Eulera. Schemat ten<br />
szczególnie dokładnie odzwierciedla pod-dźwiękowe przepływy, w których z<br />
definicji charakterystyczne prędkości są mniejsze niż prędkość dźwięku. Takie<br />
warunki napotykamy, dla przykładu, kiedy paliwo jest wstrzykiwane z małą<br />
prędkością do silników lub w przypadku zanieczyszczeń powietrza. Ostatni<br />
przypadek jest przedstawiony w rozdz. 12.9. Oczywistym sposobem ominięcia<br />
ograniczeń na krok czasowy wynikających z warunku stabilności CFL<br />
jest zastosowanie w pełni niejawanego schematu <strong>numeryczne</strong>go (np. Beam,<br />
Warming 1978). Jednakże niejawne schematy są względnie drogie. Casulli i<br />
Greenspan (1984) pokazali, że aby ominąć ograniczenie CFL na krok czasowy,<br />
nie musimy potraktować wszystkich członów w równaniach Eulera w<br />
sposób niejawny. Pokazali oni, że tylko gradient ciśnienia w równaniu na pęd<br />
i prędkość w członie −∇ · [(E + p)v] stojącym w równaniu na energię muszą<br />
być potraktowane niejawnie. Pomysł ten był podchwycony przez Patnaik’a<br />
i innych (1987), którzy rozwinęli schemat BIS scheme. W schemacie tym<br />
191
ównanie zachowania masy i pędu są dyskretyzowane następująco:<br />
ϱ ∗ − ϱ n<br />
∆t<br />
ϱ ∗ v ∗ − ϱ n v n<br />
∆t<br />
= −∇ · (ϱ n v n ), (673)<br />
= −∇ · (ϱ n v n v n ) − ∇p n . (674)<br />
Tutaj indeksy górne n i ∗ oznaczają odpowiednio stare i przewidywane rozwiązania.<br />
Ta część rozwiązania nazywa się jawnym przewidywaniem. Niejawne<br />
równania pędu i energii to<br />
ϱ n+1 v n+1 − ϱ n v n<br />
∆t<br />
E n+1 − E n<br />
∆t<br />
= −∇ · (ϱ n v n v n ) − ∇[νp n+1 + (1 − ν)p n ], (675)<br />
= −∇ · {(E n + p n )[νv n+1 + (1 − ν)v n ] } , (676)<br />
gdzie 1/2 ≤ ν ≤ 1 i E jest gęstością energii całkowitej daną następującym<br />
wyrażeniem:<br />
E = e + ϱv2<br />
2 ≡ p<br />
γ − 1 + ϱv2<br />
2 . (677)<br />
Niejawne człony są zcentrowane w czasie dla ν = 1/2. Dla ν < 1/2, metoda<br />
jest niestabilna dla dostatecznie dużych wartości kroku czasowego ∆t. Kiedy<br />
fale dźwiękowe nie są ważne, ν może być położone bliskie jedności.<br />
Po odjęciu równania (674) z równania (675) otrzymamy<br />
ϱ n+1 v n+1 − ϱ ∗ v ∗<br />
∆t<br />
= −∇ν(p n+1 − p n ) ≡ −∇δp, (678)<br />
gdzie δp jest niejawną poprawką ciśnienia. Nową prędkość możemy otrzymać<br />
z powyższego równania w wyniku położenia ϱ n+1 = ϱ ∗ . Wtedy<br />
Poprawkę na energię wewnętrzną e znajdziemy z<br />
v n+1 = − ∆t<br />
ϱ ∗ ∇δp + v∗ . (679)<br />
e n+1 =<br />
δp<br />
(γ − 1)ν + en . (680)<br />
192
Po podstawieniu tego równania i wyrażenia (679) do równania (676) mamy<br />
ϱ ∗ v ∗2 − ϱ n v n2<br />
(<br />
δp<br />
E n<br />
+<br />
2∆t (γ − 1)ν∆t = ν∆t∇ · + p n )<br />
∇δp<br />
ϱ ∗<br />
−ν∇ · (E n + p n )v ∗ − (1 − ν)∇ · (E n + p n )v n . (681)<br />
Równanie na energię może być też potraktowane jawnie, tzn.<br />
E ∗ − E n<br />
∆t<br />
≡ −∇ · (E n + p n ) [νv ∗ + (1 − ν)v n ] . (682)<br />
Z użyciem powyższego wyrażenia równanie (681) staje się równaniem na<br />
zaburzone ciśnienie δp,<br />
(<br />
δp<br />
E n<br />
(γ − 1)ν∆t − ν∆t∇ · + p n )<br />
∇δp =<br />
ϱ ∗<br />
E ∗ − E n<br />
∆t<br />
− ϱ∗ v ∗2 − ϱ n v n2<br />
. (683)<br />
2∆t<br />
Prawa strona tego równania liczona jest w sposób jawny z wykorzystaniem<br />
równań (682), (673) i (674). Mając obliczone δp, pęd i energię obliczymy<br />
odpowiednio z równań (678) i (676). Wielkości te i gęstość masy, którą obliczymy<br />
z równań (678) i (679), stanowią warunki początkowe dla następnej<br />
iteracji w czasie. W rezultacie tego koszt tej metody jest porównywalny z<br />
kosztem metody jawnej.<br />
17 Podsumowanie<br />
Materiały do wykładów przedstawiają kilka matematycznych aspektów<br />
zastosowanych w numerycznych metodach rozwiązania równań zachowania<br />
z przeznaczeniem do ośrodków fizyki technicznej. W materiałach tych skupiono<br />
się na metodach, które są powszechnie używane. Warto, abyśmy zwrócili<br />
uwagę na fakt, że schematy <strong>numeryczne</strong> powinny spełniać następujące<br />
warunki:<br />
193
1. rozwiązania powinny być otrzymane szybko<br />
2. powinny być one dokładne dla skomplikowanych przepływów i stromych<br />
profili<br />
3. w rozwiązaniach powinien być brak zaśmiecających oscylacji<br />
4. program numeryczny powinien być stosunkowo ogólny i stabilny (ang.<br />
robust).<br />
Program numeryczny nazywamy robust, jeśli prowadzi on do fizycznie akceptowalnych<br />
rozwiązań w szerokim zakresie problemów bez potrzeby dodaktowych<br />
dopasowań. Schematy <strong>numeryczne</strong>, takie jak metody Godunowa, które<br />
przedstawiono w tych materiałach, spełniają powyższe warunki.<br />
W materiałach tych pokazaliśmy działanie wybranych programów numerycznych.<br />
Dla przykładu zademonstrowaliśmy, że wybrany program numeryczny<br />
może być wykorzystany do symulacji atmosfery w silnie uwarstwionym<br />
polu grawitacyjnym. Problem ten jest niezwykle trudny ze względu na<br />
obecność stromych profili równowagowych gęstości masy, ciśnienia i temperatury,<br />
silnych pól magnetycznych o dużej krzywiźnie linii magnetycznych i<br />
obecnych fal szokowych o dużej amplitudzie. Tylko wyrafinowane schematy<br />
<strong>numeryczne</strong> są w stanie uporać się z tymi wyzwaniami i doprowadzić do wyników,<br />
które są nie tylko fizycznie akceptowalne, ale spełniają wybrane testy<br />
potwierdzając wyniki analityczne dla prostszych problemów i oznaczają się<br />
małymi błędami numerycznymi.<br />
18 Wnioski<br />
Istniejące schematy <strong>numeryczne</strong>, takie jakie są użyte w nowoczesnych programach<br />
numerycznych, wykazują wysokie możliwości symulacji numerycz-<br />
194
nych w otrzymaniu dokładnych rozwiązań równań hiperbolicznych. Wraz z<br />
rozwojem metod numerycznych i potencjału obliczeniowego oczekujemy, że<br />
pożyteczność i możliwości symulacji numerycznych będzie rosła.<br />
Literatura<br />
[1] J. Balbas, E. Tadmor, “Non-oscillatory central schemes for one- and twodimensional<br />
MHD equations. II: High-order semi-discrete schemes”, SIAM<br />
Journal on Scientific Computation 28, 533-560 (2006).<br />
[2] P. Colella, “A Direct Eulerian MUSCL Scheme for Gas Dynamics”, SIAM<br />
J. Sci. Stat. Comput. 6, 104–117 (1985).<br />
[3] S.K. Godunov, “A difference scheme for numerical solution of discontinuos<br />
solution of hydrodynamic equations”, Math. Sb. 47, 271-306 (1959).<br />
[4] V. Guinot, “Godunov-type schemes: an introduction for engineers”, Elsevier,<br />
Amsterdam (2003).<br />
195
[5] V.P. Kolgan, “Application of the minimum-derivative principle in the construction<br />
of finite-diverence schemes for numerical analysis of discontinuous<br />
solutions in gas dynamics”, Uch. Zap. TsaGI 3 (6), 68-77, (1972).<br />
[6] B. van Leer, “Towards the ultimate conservative difference scheme. V -<br />
A second-order sequel to Godunov method”, J. Comp. Phys. 32, 101-136<br />
(1979).<br />
[7] E. Toro, Riemann solvers and numerical methods for fluid dynamics,<br />
Springer, Berlin, 2009.<br />
[8] J. von Neumann, R.D. Richtmeyer, “A method for the numerical<br />
calculation of hydrodynamic shocks”, J. Appl. Phys. 21, 232-237 (1950).<br />
[9] J.M. Stone, M.L. Norman, “ZEUS-2D: a radiation magnetohydrodynamics<br />
code for astrophysical flows in two space dimensions. II. The<br />
magnetohydrodynamic algorithms and tests”, Astrophys. J. Suppl. Ser.<br />
80, 791-818 (1992).<br />
[10] D. Lee, A.E. Deane, “An unsplit staggered mesh scheme for multidimensional<br />
magnetohydrodynamics”, J. Comput. Phys. 228 (4), 952-975<br />
(2009).<br />
[11] R.J. LeVeque, Numerical methods for conservation laws, Birkhäuser<br />
Verlag Basel, Berlin, 1990.<br />
[12] A. Harten, P.D. Lax, B. van Leer, “On upstream differencing and<br />
Godunov-type schemes for hyperbolic conservation laws”, SIAM Rev. 25<br />
196
(1), 35-61 (1983).<br />
[13] P.L. Roe, “Approximate Riemann solvers, parameter vectors and<br />
difference schemes”, J. Comp. Phys. 43, 357-372 (1981).<br />
[14] R.J. LeVeque, Finite-volume methods for hyperbolic problems, Cambridge<br />
University Press, Cambridge (2002).<br />
[15] P.L. Roe, “Sonic flux formulae”, SIAM J. Sci. Stat. Comput. 13, 611-630<br />
(1982).<br />
[16] A. Harten, “ENO schemes with subcell resolution”, J. Comp. Phys. 83,<br />
148-184 (1989).<br />
[17] P.R. Woodward, P. Colella, “The numerical simulation of twodimensional<br />
fluid flow with strong shocks”, J. Comp. Phys. 54, 115-173<br />
(1984).<br />
[18] Murawski K., Analytical and numerical methods for wave propagation<br />
in fluids, World Scientific, Singapore 2002.<br />
[19] Fryxell, B., Olson, K., Ricker, P., Timmes, F.X., Zingale, M., Lamb,<br />
D.Q., MacNeice, P., Rosner, R., Truran, J.W., Tufo, H., “FLASH: An<br />
Adaptive Mesh Hydrodynamics Code for Modeling Astrophysical Thermonuclear<br />
Flashes”, The Astrophysical Journal Supplement Series, 131<br />
(1), 273-334 (2000).<br />
[20] MacNeice, P., Olson, K.M., Mobarry, C., de Fainchtein, R., Packer, C.,<br />
“PARAMESH: A parallel adaptive mesh refinement community toolkit”,<br />
Computer Physics Communications 126 (3), 330-354 (2000).<br />
197
[21] Mȩdrek, M., Murawski, K., Nakariakov, V.M., “Propagational Aspects<br />
of Sunquake Waves”, Acta Astronomica 50, 405-416 (2000).<br />
198
19 Dodatek A: Schematy <strong>numeryczne</strong> dla równania<br />
unoszenia w cienkich rurach<br />
W tej części materiałów przedstawimy ciekawe schematy <strong>numeryczne</strong> dla<br />
równania unoszenia w cienkich rurach. Schematy te nie były dyskutowane w<br />
głównym nurcie wykładów.<br />
19.1 Schematy: w pełni dyskretne, pół-dyskretne i niejawne<br />
Rozważmy ponownie równanie unoszenia w cienkich rurach<br />
q ,t + λq ,x = 0 , (684)<br />
które może być przybliżone w pełni dyskretnym schematem<br />
L(qi n ) = qn+1 i − qi<br />
n<br />
∆t<br />
lub schematem pół-dyskretnym<br />
+ λ qn i+1 − q n i<br />
∆x<br />
dq<br />
dt = −λqn i+1 − qi<br />
n<br />
∆x<br />
= 0 (685)<br />
. (686)<br />
Możemy rozwiązać schemat pół-dyskretny np. metodą linii (np. Murawski<br />
2002).<br />
Jako przykład schematu jawnego dla równania unoszenia (118) służy schemat<br />
pod-wiatr<br />
q n+1<br />
i<br />
− qi<br />
n<br />
∆t<br />
+ λ qn i+1 − q n i<br />
∆x<br />
= 0 . (687)<br />
Dla λ > 0 (λ < 0) schemat ten jest warunkowo stabilny (bezwarunkowo niestabilny).<br />
Możemy otrzymać bezwarunkowo stabilny schemat poprzez wprowadzenie<br />
schematu niejawnego<br />
q n+1<br />
i<br />
− qi<br />
n<br />
∆t<br />
+ λ qn+1 i+1 − qi<br />
n+1<br />
∆x<br />
199<br />
= 0 . (688)
Ćwiczenie: Skonstruujmy w pełni dyskretną i niejawną wersję schematu<br />
FTCS.<br />
19.2 Wycentrowany schemat Godunowa<br />
Wycentrowany schemat Godunowa dany jest przez (Toro 2009)<br />
q n+1<br />
i =<br />
c(1 + 2c)<br />
qi−1 n + (1 − 2c 2 )qi n −<br />
2<br />
c(1 − 2c)<br />
qi+1 n . (689)<br />
2<br />
Komentarz: Wycentrowany schemat Godunowa dla równania unoszenia w<br />
cienkich rurach jest:<br />
1. warunkowo stabilny dla 0 ≤ |c| ≤ √ 2/2;<br />
2. monotoniczny dla 1/2 ≤ |c| ≤ √ 2/2 (w przeciwnym przypadku generuje<br />
on oscylacje);<br />
3. interesującym przykładem pierwszego-rzędu dokładnym schematem, który<br />
nie jest monotoniczny.<br />
19.3 Schemat FORCE<br />
Schemat FORCE (ang. a First-ORder CEntred deterministic scheme)<br />
dany jest następująco (Toro 2009):<br />
q n+1<br />
i =<br />
(1 + c)2<br />
4<br />
Komentarz: Schemat FORCE jest<br />
qi−1 n + 1 − c2<br />
qi n +<br />
2<br />
1. warunkowo stabilny dla 0 ≤ |c| ≤ 1;<br />
(1 − c)2<br />
qi+1 n . (690)<br />
4<br />
200
2. monotoniczny;<br />
3. ponieważ w zmodyfikowanym równaniu współczynnik dyfuzji α F ORCE =<br />
α LF /2, schemat FORCE jest mniej dyfuzyjny niż schemat Laxa-Friedrichsa.<br />
20 Dodatek B: Schematy centralne dla praw<br />
zachowania<br />
Rozwiązanie problemu Riemanna jest na ogół numerycznie drogie. Dlatego<br />
rozwój prostych, a w konsekwencji numerycznie tanich, metod jest bardzo<br />
pożądane. Jako dobry kandydat może posłużyć nam schemat Laxa-<br />
Friedrichsa (LF), który zapiszemy tutaj dla skalarnego prawa zachowania<br />
Schemat LF to<br />
Ponieważ q n+1<br />
i<br />
q n+1<br />
i<br />
q ,t + f(q) ,x = 0 . (691)<br />
= 1 2 (qn i+1 + q n i−1) + ∆t<br />
2∆x [f(qn i−1) − f(q n i+1)] . (692)<br />
obliczyliśmy z q n i−1 i q n i+1, naturalnym wydaje się wprowadzić<br />
siatkę numeryczną, która składa się tylko z nieparzystych komórek w jednym<br />
kroku czasowym i parzystych komórek w następnym kroku czasowym.<br />
Po dokonaniu całkowania skalarnego równania zachowania w granicach<br />
[x i−1 , x i+1 ] × [t n , t n+1 ] otrzymamy<br />
qi n+1 ≡ 1 ∫ xi+1<br />
¯q(x, t n+1 ) dx = 1 ∫ xi+1<br />
¯q(x, t n ) dx +<br />
2∆x x i−1 2∆x x i−1<br />
∫<br />
1 t n+1<br />
[f(¯q(x i−1 , t)) − f(¯q(x i+1 , t))] dt . (693)<br />
2∆x t n<br />
Tutaj ¯q(x, t) jest rozwiązaniem w komórce <strong>numeryczne</strong>j takim, że<br />
∫<br />
1 xi+1<br />
¯q(x, t n ) dx = 1 2∆x x i−1 2 (qn i−1 + qi+1) n . (694)<br />
201
Zauważmy, że całkowanie po czasie w równaniu (693) możemy wykonać dokładnie,<br />
ponieważ ¯q(x i±1 , t) jest stałe. Problemy Riemanna są ulokowane na<br />
brzegach komórek numerycznych, w punktach x i , x i±2 , . . .. Ponieważ fale<br />
powstałe z rozwiązania problemu Riemanna w punktcie x i nie zmieniają rozwiązań<br />
w x i±1 , mamy<br />
¯q(x i±1 , t) = qi±1 n . (695)<br />
Schemat LF (692) jest pierwszego-rzędu dokładny. Jego uogólnienia na<br />
drugi-rząd dokładności możemy dokonać poprzez zastosowanie kawałkami<br />
liniowej reprezentacji rozwiązania, tj.<br />
¯q(x, t) = qi n + (x − x i )s i , 0 ≤ x ≤ ∆x , (696)<br />
gdzie s i jest nachyleniem. Dla tej liniowej reprezentacji otrzymamy<br />
∫<br />
1 xi+1<br />
¯q(x, t n ) dx = 1 2∆x x i−1<br />
2 (qn i−1 + qi+1) n + ∆x<br />
8 (s i−1 − s i+1 )∆x . (697)<br />
Z równania (693) otrzymamy wtedy następujący schemat numeryczny:<br />
q n+1<br />
i<br />
= 1 2 (qn i−1 + qi+1) n + 1 8 (s i−1 − s i+1 )∆x + ∆t n+1/2<br />
(fi−1<br />
− f n+1/2<br />
i+1 ) . (698)<br />
∆x<br />
Strumień,<br />
f n+1/2<br />
i+1 (¯q n+1/2<br />
i+1 ) , (699)<br />
obliczymy dla jego argumentu w ¯q n+1/2<br />
i+1 , który przybliżymy<br />
¯q n+1/2<br />
i+1 = q n i+1 + ∆t<br />
2 q ,t| n i+1 = q n i+1 − ∆t<br />
2 (f ,qq ,x )| n i+1 =<br />
q n i+1 − ∆t<br />
2 f ,q| n i+1s i+1 . (700)<br />
Centralne schematy <strong>numeryczne</strong> są wykorzystane w pakiecie programów<br />
służących do rozwiązywania równań hiperbolicznych - CentPack (Balbas,<br />
Tadmor 2006).<br />
202
21 Dodatek C: Metody HLL i HLLC przybliżonego<br />
rozwiązania problemu Riemanna dla<br />
równań fizyki technicznej<br />
Rysunek 18: Komórka kontrolna dla metody HLL rozwiązania problemu Riemanna.<br />
Nazwa metody HLL wzięta jest od nazwisk jej wynalazców, czyli od Hartena,<br />
Laxa i van Leer. W metodzie tej przyjmiemy, że:<br />
1. tylko najszybsze fale proste są istotne a obecność pozostałych fal jest<br />
zignorowana;<br />
2. możemy otrzymać przybliżenia prędkości dla najszybszych fal.<br />
Zastosujemy teraz postać całkową prawa zachowania wykorzystując komórkę<br />
kontrolną [x l , x r ] × [0, T ] z rys. 18. Otrzymamy wtedy<br />
∫ xr<br />
∫ xr<br />
q(x, T )dx = q(x, 0)dx +<br />
x l x l<br />
∫ T<br />
0<br />
f(q(x l , t))dt −<br />
∫ T<br />
0<br />
f(q(x r , t))dt . (701)<br />
203
Po obliczeniu prawej strony powyższego wyrażenia mamy<br />
∫ xr<br />
x<br />
q(x, T )dx = x r q r − x l q l + T (f l − f r ) , (702)<br />
gdzie:<br />
f l = f(q l ) , (703)<br />
f r = f(q r ) . (704)<br />
Wyraźmy teraz całkę następująco:<br />
∫ xr<br />
x l<br />
q(x, T )dx =<br />
∫ T sl<br />
x l<br />
q(x, T )dx +<br />
∫ T sr<br />
T s l<br />
q(x, T )dx +<br />
∫ xr<br />
T s r<br />
q(x, T )dx . (705)<br />
Stąd po wykonaniu rachunków dla pierwszej i trzeciej całek stojących po<br />
prawej stronie równania, znajdziemy<br />
∫ xr<br />
x l<br />
q(x, T )dx =<br />
∫ T sr<br />
T s l<br />
q(x, T )dx + (Ts l − x l )q l + (x r − Ts r )q r . (706)<br />
Porównując równania (702) i (706), dostaniemy<br />
∫ T sr<br />
T s l<br />
q(x, T )dx = T (s r q r − s l q l + f l − f r ) . (707)<br />
Podzielmy powyższe wyrażenie stronami przez T (s r −s l ) i wprowadźmy uśredniony<br />
wektor stanu q HLL następująco:<br />
q HLL ≡<br />
∫<br />
1 T sr<br />
q(x, T ) dx = s rq r − s l q l + f l − f r<br />
. (708)<br />
T (s r − s l ) T s l<br />
s r − s l<br />
Zauważmy, że nie użyjemy q HLL do obliczenia strumienia. Wykorzystajmy<br />
natomiast postać całkową prawa zachowania w komórce kontrolnej [x l , 0] ×<br />
[0, T ]. Otrzymamy wtedy<br />
∫ 0<br />
T s l<br />
q(x, T )dx = −T s l q l + T (f l − f 0l ) , (709)<br />
gdzie f 0l jest strumieniem dla x = 0. Mamy stąd<br />
f 0l = f l − s l q l − 1 T<br />
∫ 0<br />
T s l<br />
q(x, T )dx . (710)<br />
204
W powyższym wyrażeniu zamienimy q(x, T ) przez q HLL . W konsekwencji<br />
mamy<br />
f 0l = f l + s l (q HLL − q l ) . (711)<br />
Zauważmy, że identyczne wyrażenie możemy otrzymać z warunku Rankine’a-<br />
Hugoniota, czyli<br />
f 0l − f l = s l (q HLL − q l ) , (712)<br />
f r − f 0l = s r (q r − q HLL ) . (713)<br />
Zastąpmy teraz f 0l przez f HLL w równaniu (711) i wykorzystajmy równanie<br />
(708). Znajdziemy wtedy, że strumień odpowiadający stanowi HLL dany<br />
jest jako<br />
f HLL = s rf l − s l fr + s r s l (q r − q l )<br />
s r − s l<br />
. (714)<br />
Podsumowując, strumień numeryczny HLL dany jest następująco:<br />
f HLL<br />
i+1/2 =<br />
⎧<br />
f l , 0 ≤ s l ,<br />
⎪⎨<br />
f HLL , s l ≤ 0 ≤ s r ,<br />
⎪⎩<br />
f r , 0 ≥ s r .<br />
21.1 Komentarz o metodzie HLL<br />
że:<br />
(715)<br />
Metoda HLL rozwiązywania problemu Riemanna charakteryzuje się tym,<br />
1. metoda HLL jest bardzo prosta i spełnia zachowanie entropii. Wobec<br />
tego nie jest potrzebne wprowadzenie poprawki do entropii (ang. entropy<br />
fix) (np. Toro 2009). W konsekwencji tego metoda ta odwzorowuje<br />
bardzo dobrze krytyczne (dźwiękowe) fale rozrzedzeniowe, w<br />
których, z definicji, lewa (prawa) strona fali porusza się w lewo (prawo)<br />
w układzie poruszającym się z prędkością dźwięku;<br />
205
2. metoda HLL jest dokładna dla układu dwóch równań takich, jak np.<br />
izotermiczne równania Eulera. Ponieważ w metodzie tej fale środkowe w<br />
wiatraku Riemanna są zignorowane, fale kontaktowe i wiry są rozmyte;<br />
3. przybliżenie dla prędkości fal, tj. s l i s r , są nam nadal potrzebne.<br />
21.2 Schematy Rusanowa i Laxa-Friedrichsa<br />
Zauważmy, że schematy Rusanowa i Laxa-Friedrichsa możemy otrzymać<br />
z metody HLL jako szczególne przypadki. Przyjmijmy, że<br />
s l = −S + , s r = S + ≥ 0 . (716)<br />
Wtedy metoda HLL prowadzi do strumienia Rusanowa, tj.<br />
Schemat stabilny otrzymamy dla<br />
f rus<br />
i+1/2 = 1 2 [f l + f r + S + (q l − q r )] . (717)<br />
S + ≤ ∆x<br />
∆t . (718)<br />
Dla S + = ∆x/∆t metoda HLL sprowadza się do strumienia Laxa-Friedrichsa,<br />
tj.<br />
fi+1/2 LF = 1 [<br />
f l + f r + ∆x ]<br />
2 ∆t (q l − q r ) . (719)<br />
Przedstawmy teraz inne spojrzenie na wyprowadzenie schematu HLL.<br />
Rozpocznijmy nasze rozważania od wprowadzenia strumienia<br />
f i+1/2 = 1 2 (f i + f i+1 ) . (720)<br />
Niestety strumień ten prowadzi do niestabilnego schematu różnicowego. Strumień<br />
ten możemy poprawić poprzez dodanie członu dyfuzyjnego, tj.<br />
˜fi+1/2 = 1 2 (f i + f i+1 ) − a q i+1 − q i<br />
∆x<br />
206<br />
, (721)
gdzie a jest współczynnikiem dyfuzji. Wybierzmy<br />
a = ∆x2<br />
2∆t ≃ 1 ∆xλ , (722)<br />
2<br />
gdzie Λ jest największą wartością prędkości na siatce <strong>numeryczne</strong>j. Otrzymamy<br />
wtedy schemat Laxa-Friedrichsa.<br />
Dla<br />
a = 1 2 ∆x max{λ k} , k = 1, 2, . . . (723)<br />
otrzymamy z kolei schemat Kurganowa-Tadmora.<br />
gdzie:<br />
Schemat Hartena, Laxa i van Leer (HLL) odpowiada wyborowi:<br />
˜fi+1/2 = a− f i+1 + a + f i<br />
a − + a + − a− a +<br />
a − + a + (q i+1 − q i ) , (724)<br />
a − = max{0, −λ k : λ k < 0} , (725)<br />
a + = max{0, +λ k : λ k > 0} . (726)<br />
Zauważmy, że ostatni człon w rówaniu (724) spełnia rolę sztucznej dyfuzji.<br />
21.3 Metoda HLLC rozwiązywania problemu Riemanna<br />
Rysunek 19: Wiatrak Riemanna dla metody HLLC.<br />
Metoda HLLC rozwiązywania problemu Riemanna stanowi modyfikację<br />
metody HLL, gdzie C w nazwie metody HLLC ma swoją genezę od fali<br />
207
kontaktowej (ang. contact wave). W metodzie tej fala kontaktowa, nieobecna<br />
w metodzie HLL, jest uwzględniona poprzez podzielenie obszaru z gwiazdką<br />
na dwa podobszary q l i q r (rys. 19). Mamy wtedy<br />
∫ T sr<br />
Zdefiniujemy teraz<br />
T s l<br />
q(x, T )dx =<br />
∫ T s∗<br />
T s l<br />
q(x, T )dx +<br />
∫ T s∗<br />
∫ T sr<br />
T s ∗<br />
q(x, T )dx . (727)<br />
1<br />
q ∗l =<br />
q(x, T )dx , (728)<br />
T (s ∗ − s l ) T s l<br />
∫<br />
1 T sr<br />
q ∗r =<br />
q(x, T )dx . (729)<br />
T (s r − s ∗ ) T s ∗<br />
Po zastosowaniu warunków Rankine’a-Hugoniota dla trzech fal poruszających<br />
się z prędkościami s l , s ∗ i s r , otrzymamy<br />
f ∗l = f l + s l (q ∗l − q l ) , (730)<br />
f ∗r = f ∗l + s ∗ (q ∗r − q ∗l ) , (731)<br />
f r = f ∗r + s r (q r − q ∗r ) . (732)<br />
Zauważmy, że trzy powyższe równania zawierają cztery niewiadome stany<br />
własne q ∗l , f ∗l , q ∗r , i f ∗r . Mamy więc więcej niewiadomych niż równań i potrzebuejmy<br />
dodatkowych warunków, aby zamknąć układ równań (730)-(732).<br />
21.3.1 Metoda HLLC dla jedno-wymiarowych równań Eulera<br />
Ponieważ dla równań Eulera fala kontaktowa poruszająca się z prędkością<br />
s ∗ jest związana tylko ze zmianą gęstości masy, dodatkowe warunki (dla<br />
przypadku jedno-wymiarowego) określimy następująco:<br />
u ∗l = u ∗r = u ∗ = s ∗ , p ∗l = p ∗r = p ∗ . (733)<br />
Z równań (730) i (732) znajdziemy wtedy, że<br />
s l q ∗l − f ∗l = s l q l − f l , (734)<br />
s r q ∗r − f ∗r = s r q r − f r . (735)<br />
208
Z pierwszej i drugiej składowych powyższych równań otrzymamy<br />
Stąd mamy wyrażenie na prędkość<br />
p ∗l = p ∗ = p l + ϱ l (s l − u l )(s ∗ − u l ) , (736)<br />
p ∗r = p ∗ = p r + ϱ r (s r − u r )(s ∗ − u r ) . (737)<br />
s ∗ = p r − p l + ϱ l u l (s l − u l ) − ϱ r u r (s r − u r )<br />
ϱ l (s l − u l ) − ϱ r (s r − u r )<br />
. (738)<br />
Z równań (734) i (735) z wykorzystaniem równania (736), znajdziemy<br />
wtedy następujące wyrażenie:<br />
Tutaj stany przejściowe określimy jako<br />
⎡<br />
s k − u k<br />
q ∗k = ϱ k s k − s ∗<br />
⎢<br />
⎣<br />
f ∗k = f k + s k (q ∗k − q k ) , k = l, r . (739)<br />
1<br />
s ∗<br />
E k<br />
ϱ k<br />
+ (s ∗ − u k ) ( s ∗ +<br />
21.3.2 Podsumowanie metody HLLC<br />
)<br />
p k<br />
ϱ k (s k −u k )<br />
⎤<br />
. (740)<br />
⎥<br />
⎦<br />
Podsumowując, strumień HLLC określimy następująco:<br />
⎧<br />
f l , 0 < s l ,<br />
f HLLC<br />
i+1/2 =<br />
⎪⎨ f ∗l , s l ≤ 0 ≤ S ∗ ,<br />
f ∗r , S ∗ ≤ 0 ≤ s r ,<br />
⎪⎩<br />
f r , 0 ≥ s r .<br />
Tutaj strumienie f ∗l i f ∗r zdefiniowane są jako<br />
(741)<br />
f ∗<br />
l = f l + s l (q ∗l − q l ) , (742)<br />
f ∗ r = f r + s r (q ∗r − q r ) . (743)<br />
Warto zauważyć, że dla równań płytkiej wody, stany z gwiazdką określimy<br />
następująco:<br />
q ∗ k = h k<br />
s k − u k<br />
s k − S [1, S, Ψ]T , k = l, r . (744)<br />
209
21.4 Oszacowanie prędkości fal<br />
W metodach HLL i HLLC do rozwiązania problemu Riemanna potrzebujemy<br />
oszacowanie prędkości fal s l i s r . Wykorzystanie do tego celu wartości<br />
własnych Jakobianu,<br />
λ (1) = u − c s , λ (2) = u , λ (3) = u + c s , (745)<br />
nie jest wskazane ze względu na niepoprawne działanie programu <strong>numeryczne</strong>go<br />
(Toro 2009). Zamiast tego możemy użyć informacji z innych metod<br />
rozwiązania problemu Riemanna. Dla przykładu możemy zastosować<br />
s 1 = ũ − ˜c s , s r = ũ + ˜c s , (746)<br />
gdzie ũ i ˜c s są uśrednionymi według Roe’a wielkościami takimi, że<br />
√<br />
ϱ1 u 1 + √ ϱ r u r<br />
ũ = √<br />
ϱ1 + √ , (747)<br />
ϱ r<br />
˜c 2 s = (γ − 1)<br />
(<br />
)<br />
˜H − ũ2<br />
. (748)<br />
2<br />
Tutaj entalpia<br />
H = (E + p)/ϱ (749)<br />
jest uśredniona następująco:<br />
˜H =<br />
√<br />
ϱ1 H 1 + √ ϱ r H r<br />
√<br />
ϱ1 + √ ϱ r<br />
. (750)<br />
Inną możliwością jest zastosowanie wyrażenia na ciśnienie gazu p ∗ . W celu<br />
uzyskania szczegółów polecamy monografię Toro (2009).<br />
Dla równań płytkiej wody oszacujemy prędkości fal w oparciu o głebokość<br />
h i prędkość u w obszarze przejściowym (z gwiazdką) w wiatraku Riemanna.<br />
W rezultacie użyjemy (Toro 2009)<br />
s 1 = u l − c sl a l , S = u , s r = u r + c sr a r , (751)<br />
210
gdzie:<br />
⎧<br />
⎨ 1 , h < h k , dla fali rozrzedzeniowej<br />
√<br />
a k = h(h+h<br />
⎩<br />
k )<br />
, h > h<br />
2h 2 k , dla szoku<br />
k<br />
, k = l, r . (752)<br />
22 Dodatek D: Inne <strong>numeryczne</strong> metody dla<br />
równań fizyki technicznej<br />
22.1 Metoda WAF<br />
Przypomnijmy, że skalarne równanie hiperboliczne możemy dyskretyzować<br />
następująco:<br />
q n+1<br />
i<br />
= q n i − ∆t<br />
∆x [f i+ 1 2<br />
− f i−<br />
1 ] . (753)<br />
2<br />
W metodzie wagowo uśrednionego strumienia (ang. the Weighted Averaged<br />
Flux) (WAF) (Toro 2009) strumień numeryczny, f i+<br />
1 , przybliżymy jako<br />
2<br />
f W AF<br />
i+ 1 2<br />
= 1 ∫ xi+ 1<br />
2<br />
∆x<br />
x i− 1<br />
2<br />
f(q i+<br />
1<br />
2<br />
(x, 1 ∆t))dx . (754)<br />
2<br />
Tutaj q i+<br />
1 (x, t) jest rozwiązaniem klasycznego (z kawałkami stałymi danymi<br />
2<br />
problemu Riemanna.<br />
Poniżej przedstawimy metodę WAF dla równania unoszenia.<br />
22.1.1 Metoda WAF dla równania unoszenia<br />
Przypomnijmy, że problem Riemanna dla równania unoszenia z prędkością<br />
unoszenia λ > 0 możemy rozwiązać jako<br />
q i+<br />
1 (x, t) =<br />
2<br />
⎧<br />
⎨ qi n ,<br />
⎩ qi+1,<br />
n<br />
x<br />
< λ t<br />
x<br />
> λ. (755)<br />
t<br />
Dla przypadku λ > 0 strumień obliczymy korzystając z rys. 20.<br />
211
Rysunek 20: Komórka kontrolna dla metody WAF dla równania unoszenia (118)<br />
z λ > 0.<br />
Możemy rozdzielić całkę w równaniu (754) na części pod-wiatr i z wiatrem.<br />
Część pod-wiatr składa się z całkowania między punktami A i B<br />
(rys. 20). Otrzymamy wtedy<br />
f upw<br />
i+ 1 2<br />
= 1 ∫ xB<br />
λqi n dx = 1<br />
∆x x A ∆x (λqn i )( 1 2 ∆x + 1 2 c∆x) = 1 2 (1 + c)(λqn i ) . (756)<br />
Podobnie część z wiatrem związana jest z całkowaniem wzdłuż BC (rys. 20),<br />
co prowadzi do wyrażenia<br />
f dow<br />
i+ 1 2<br />
= 1 2 (1 − c)(λqn i+1) . (757)<br />
W rezultacie otrzymamy<br />
f W AF<br />
i+ 1 2<br />
= f upw<br />
i+ 1 2<br />
+ f dow<br />
i+ 1 2<br />
= 1 2 (1 + c)(λqn i ) + 1 2 (1 − c)(λqn i+1) . (758)<br />
Wnioskujemy stąd, że metoda WAF polega na wagowym uśrednieniu strumienia<br />
pod-wiatr, λq n i , z wagą, 1 2 (1 + c), i strumienia z wiatrem, λqn i+1, z<br />
wagą, 1 (1 − c).<br />
2<br />
Zauważmy, że dla przypadku λ < 0 rachunki możemy przeprowadzić w<br />
podobny sposób. Prowadzą one do równania (758).<br />
212
Schemat Beama-Warminga otrzymamy dla<br />
f faw<br />
i+ 1 2<br />
= 1 2 (1 − c)(λqn i−1) + 1 2 (3 − c)(λqn i ) . (759)<br />
Schemat ten jest stabilny dla liczby Couranta spełniającej następujący warunek:<br />
1 ≤ c ≤ 2.<br />
Uogólnieniem strumienia WAF, które pracuje dla wielu wymiarów, jest<br />
f i+<br />
1<br />
2<br />
=<br />
1 1<br />
(t 2 − t 1 ) (x 2 − x 1 )<br />
∫ t2<br />
∫ x2<br />
W metodzie WAF mamy możliwość wyboru:<br />
t 1<br />
x 1<br />
f(ˆq i+<br />
1<br />
2<br />
(x, t)) dx dt . (760)<br />
1. granic całkowania, np. x 1 = − 1 2 ∆x, x 2 = 1 2 ∆x, t 1 = 0, t 2 = ∆t;<br />
2. funkcji podcałkowej f(ˆq) lub ˆq i+<br />
1 , tzn. rozwiązania problemu Riemanna;<br />
2<br />
3. metody całkowania, np. reguły środkowego punktu dla całkowania w x<br />
i w t.<br />
22.2 Uogólniony problem Riemanna<br />
Uogólniony problem Riemanna dla układu hiperbolicznego stanowi problem<br />
Cauchy’ego taki, że<br />
⎧<br />
⎪⎨ q l (x) dla x < 0 ,<br />
q(x, t = 0) =<br />
⎪⎩ q r (x) dla x > 0 .<br />
(761)<br />
Tutaj q l (x), q r (x) oznaczają stany początkowe, które są gładkimi funkcjami<br />
x.<br />
Wprowadzimy teraz różnicowy problem Riemanna (ang. Derivative Riemann<br />
Problem), DRP k , w którym k = max(k l , k r ) reprezentuje liczbę nietrywialnych<br />
pochodnych cząstkowych stanu początkowego tak, że<br />
∂ k q l<br />
∂x = 0 , k dla k > k l , (762)<br />
∂ k q r<br />
∂x = 0 , k dla k > k r . (763)<br />
213
Powyższe wyrażenia zapiszemy z użyciem notacji dla pochodnych<br />
q l,kx = 0 , dla k > k l , (764)<br />
q r,kx = 0 , dla k > k r . (765)<br />
Z wykorzystaniem powyższej notacji DRP 0 odpowiada klasycznemu problemowi<br />
Riemanna.<br />
Poszukajmy rozwiązania dla x = 0 danego funkcją q lr (t), która zależy<br />
jedynie od czasu. Formalnie poszukiwane rozwiązanie zapiszemy jako<br />
k∑ t j<br />
q lr (t) = q(0, 0 + ) + q(0, 0 + ) ,jt<br />
j=1<br />
j! . (766)<br />
Tutaj 0 + = lim t→0+ t. Powyższe wyrażenie zawiera dominujący człon q(0, 0 + )<br />
i człony wyższych rzędów ze współczynnikami q(0, 0 + ) ,jt<br />
. Dominujący człon<br />
znajdziemy z rozwiązania klasycznego problemu Riemanna. Na tym etapie<br />
zaniedbamy człon źródłowy w równaniu zachowania. Rozwiązanie klasycznego<br />
problemu Riemanna oznaczymy przez D (0) (x/t). Wtedy dominujący<br />
człon otrzymamy obliczając D (0) (x/t) dla x/t = 0. Możemy to zapisać następująco:<br />
q(0, 0 + ) = D (0) (0) , (767)<br />
gdzie D (0) (0) nazywamy stanem Godunowa.<br />
Wyrazimy wszystkie pochodne po czasie w równaniu (766) poprzez pochodne<br />
przestrzenne. W tym celu zastosujemy metodę Cauchy-Kowalewski i<br />
wykorzystamy fakt, że zarówno strumień fizyczny i człon źródłowy są funkcjamu<br />
wektora stanu. Prowadzi to do następujących wyrażeń dla pochodnych<br />
czasowych:<br />
q(x, t) ,kt<br />
= P (k) (q, q ,x , . . . , q ,kx ) . (768)<br />
Możemy znaleźć q ,kx z następującego układu nieliniowych i niejednorodnych<br />
równań:<br />
(<br />
q,kx + A(q)(q ,(k+1)x ) ) = ,t Hk . (769)<br />
214
Tutaj A(q) jest macierzą Jakobiego układu praw zachowania a człon źródłowy<br />
H k zależy od pochodnych przestrzennych q ,jx dla j = 0, 1, . . . , k.<br />
Człon ten znika, kiedy A jest stałą macierzą i człon źródłowy jest zerem,<br />
tzn. kiedy oryginalny układ praw zachowania jest liniowy i jednorodny ze<br />
stałymi współczynnikami. Więcej szczegółów o różnicowym problemie Riemanna<br />
można znaleźć w monografii Toro (2009).<br />
22.3 Metoda kawałkami liniowej interpolacji<br />
Rysunek 21: Warunek początkowy dla uogólnionego problemu Riemanna.<br />
Metoda kawałkami liniowej interpolacji (ang., piece-wise linear method)<br />
(PLM) została zainicjowana przez Colella (1985). Składa się ona z następujących<br />
kroków:<br />
1. liniowej rekonstrukcji<br />
q n i (x) = q n i + (x − x i )s i , 0 ≤ x ≤ ∆x ; (770)<br />
2. uogólnionego problemu Riemanna z warunkami początkowymi (rys. 21)<br />
q n i (x) , q n i+1 (x) . (771)<br />
215
Określimy rozwiązanie problemu przez<br />
q GRP<br />
i+ 1 2<br />
(<br />
xi+ 1 , t ) (772)<br />
2<br />
i obliczymy strumień na brzegach komórek numerycznych<br />
q i+<br />
1<br />
2<br />
= 1 ∆t<br />
∫ ∆t<br />
0<br />
f ( q i+<br />
1<br />
2<br />
(<br />
xi+ 1 , t )) dt . (773)<br />
2<br />
W powyższym wyrażeniu przybliżymy całkę regułą trapezów<br />
q P LM<br />
i+ 1 2<br />
= 1 2<br />
[<br />
f<br />
(<br />
q<br />
GRP<br />
i+ 1 2<br />
(<br />
xi+ 1 , 0 )) + f ( q GRP<br />
2<br />
i+ 1 2<br />
(<br />
xi+ 1 , ∆t ))] . (774)<br />
2<br />
Pierwszy człon, q GRP (x<br />
i+ 1 i+<br />
1 , 0), otrzymamy z rozwiązania klasycznego<br />
2 2<br />
problemu Riemanna dla danych początkowych (q ir , q (i+1)l ). Dane te<br />
stanowią wielkości ekstrapolowane. Drugi człon, q GRP (x<br />
i+ 1 i+<br />
1 , ∆t), znajdziemy<br />
rekonstruując dane poruszając się do tyłu wzdłuż<br />
2 2<br />
charakterystyk.<br />
Dla równania unoszenia (118) mamy (rys. 22)<br />
⎧<br />
⎪⎨<br />
q GRP<br />
i+<br />
(0, ∆t) = q n 1 k (¯x) , ¯x =<br />
2<br />
⎪⎩<br />
c∆x , λ ≤ 0<br />
(1 − c) ∆x , λ ≥ 0<br />
⎫<br />
⎪⎬<br />
⎪⎭ . (775)<br />
Tutaj k jest równe i lub i+1, w zależności od tego, czy λ > 0 lub λ < 0<br />
a ¯x oznacza stopę charakterystyki. Strumień znajdziemy z<br />
f P LM<br />
i+ 1 2<br />
f P LM<br />
i+ 1 2<br />
=<br />
≡<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
λ ( q n i + 1 2 (1 − c) s i∆x ) , λ > 0<br />
λ ( q n i+1 − 1 2 (1 + c) s i+1∆x ) , λ < 0<br />
f MHM<br />
i+ 1 2<br />
⎫<br />
⎪⎬<br />
⎪⎭<br />
(776)<br />
. (777)<br />
Stąd poprzez porównanie z równaniem (550) wnioskujemy, że strumień<br />
PLM jest równoważny strumieniowi MHM.<br />
216
Rysunek 22: Charakterystyki dla równania unoszenia zanieczyszczeń (118).<br />
22.4 Schemat ADER<br />
W tej części wykładów przedstawimy schemat numeryczny ADER (Toro<br />
2009). Ze względów dydaktycznych ograniczymy się do przypadku równania<br />
unoszenia. Schemat ten składa się z następujących etapów:<br />
1. zaimplementowaniu kawałkami liniowego wektora stanu układu<br />
qi n (x) = qi n + s i (x − x i ) ; (778)<br />
2. rozwiązaniu uogólnionego problemu Riemanna dla x = 0<br />
q(t) = q(0) + tq(0) ,t . (779)<br />
W cely obliczenia q ,t użyjmy równania unoszenia<br />
q ,t + λq ,x = 0 . (780)<br />
Otrzymamy stąd<br />
Wtedy<br />
q ,t = −λq ,x . (781)<br />
q(t) = q(0) − tλq(0) ,x ; (782)<br />
217
3. obliczeniu strumienia na granicy między komórkami<br />
f i+<br />
1<br />
2<br />
= 1 ∆t<br />
∫ ∆t<br />
0<br />
(<br />
f(q(0) − tλq(0) ,x )dt = λ q(0) − 1 )<br />
2 ∆tλq(0) ,x . (783)<br />
Wprowadźmy nową wielkość v ≡ q ,x . Zauważmy, że v spełnia równanie<br />
W celu obliczenia v dla x = x i+<br />
1<br />
2<br />
Otrzymamy stąd<br />
v ,t + λv ,x = 0 . (784)<br />
rozwiążmy następujący problem Riemanna<br />
v ,t + λv ,x = 0 ,<br />
⎧<br />
⎫<br />
⎪⎨ s i , x < 0<br />
⎪⎬<br />
v(x, t = 0) =<br />
⎪⎩ s i+1 , x > 0<br />
⎪⎭ . (785)<br />
⎧<br />
⎪⎨ s i ,<br />
v(x, t) =<br />
⎪⎩ s i+1 ,<br />
x<br />
< λ t<br />
⎫<br />
⎪⎬<br />
. (786)<br />
x<br />
> λ ⎪ ⎭<br />
t<br />
Strumień numeryczny określimy jako<br />
⎧<br />
⎪⎨ λ ( ⎫<br />
q<br />
f GRP<br />
i n + 1<br />
i+<br />
=<br />
(1 − c) ∆x s 2 i)<br />
, λ > 0<br />
⎪⎬ 1<br />
2 ⎪⎩ λ ( qi+1 n − 1 (1 + c) ∆x s ) . (787)<br />
⎪<br />
2 i+1 , λ < 0 ⎭<br />
W konsekwencji tego znajdziemy, że<br />
f MHM<br />
i+ 1 2<br />
≡ f P LM<br />
i+ 1 2<br />
≡ f GRP<br />
i+ 1 2<br />
. (788)<br />
Metoda ADER pozwala na dokonanie konstrukcji schematów numerycznych<br />
o dowolnym rzędzie dokładności zarówno w przestrzeni jak i w czasie<br />
(Toro 2009).<br />
22.5 Wycentrowany schemat SLIC<br />
Wycentrowany schemat SLIC (Toro, Billett 2000) składa się z następujących<br />
etapów:<br />
218
1. kawałkami liniowych danych, które prowadzą do następujących wartości<br />
brzegowych<br />
q il = q n i − 1 2 ∆ i , (789)<br />
q ir = q n i + 1 2 ∆ i ; (790)<br />
2. ewolucji w czasie wartości brzegowych<br />
¯q il,r = q il,r − 1 ∆t<br />
2 ∆x [f(q ir) − f(q il )] ; (791)<br />
3. rozwiązaniu problemu Riemanna z kawałkami stałymi wektorami stanu<br />
¯q ir , ¯q (i+1)l . Wtedy strumień numeryczny określimy jako<br />
f SLIC<br />
i+ 1 2<br />
= f F ORCE<br />
i+ 1 2<br />
(¯qir , ¯q (i+1)l<br />
)<br />
. (792)<br />
Strumien numeryczny możemy określić w sposób bardziej ogólny jako<br />
f SLIC<br />
i+ 1 2<br />
= f lom<br />
i+<br />
(q 1 l , q r ) , (793)<br />
2<br />
gdzie lom oznacza jakikolwiek strumień niskiego rzędu (ang. Low-Order Monotone).<br />
Dla równania unoszenia mamy<br />
f lom<br />
i+<br />
(q 1 l , q r ) = β 0 (λq l ) + β 1 (λq r ) . (794)<br />
2<br />
Strumień f lom możemy wybrać np. ze strumienia odpowiadającego metodzie:<br />
1. Laxa-Friedrichsa,<br />
2. Godunowa,<br />
3. FORCE.<br />
219
Ogólny schemat jest drugiego rzędu dokładny w przestrzeni i w czasie.<br />
Dla szczególnego przypadku<br />
ω = 3c (β 0 − β 1 ) − 2c 2 − 1<br />
3 (β 0 − β 1 − c)<br />
. (795)<br />
schemat jest drugiego rzędu dokładny (Toro, Billett, IMA J. Numerical Analysis,<br />
2000).<br />
22.6 Wersja TVD metody WAF<br />
Rozważmy równanie unoszenia (118). Strumień WAF (dla wersji nie-<br />
TVD) dany jest jako<br />
f n i+1/2 = 1 2 [(1 + c)λqn i + (1 − c)λq n i+1] , (796)<br />
gdzie c = λ∆t/∆x jest liczbą Couranta. Wprowadzimy filtrator (ang. limiter<br />
function) φ = φ(c, r) taki, że r jest parametrem przepływu (zdefiniowanym<br />
poniżej). Zapiszmy strumień następująco:<br />
f T V D<br />
i+1/2 = 1 2 [(1 + φ)λqn i + (1 − φ)λq n i+1] , |φ| ≤ 1 . (797)<br />
Po podstawieniu równania (797) do schematu zachowawczego otrzymamy<br />
q n+1<br />
i<br />
= q n i + ∆t<br />
∆x (f n i−1/2 − f n i+1/2) . (798)<br />
Dla przypadku dodatniej prędkości unoszenia, λ > 0, mamy<br />
qi<br />
n+1 − qi<br />
n = c [<br />
]<br />
1<br />
(1 − φ<br />
qi−1 n − qi<br />
n i+1/2 ) + φ i−1/2 + 1 , (799)<br />
2 r i+1/2<br />
gdzie<br />
r i+1/2 = qn i − qi−1<br />
n . (800)<br />
qi+1 n − qi<br />
n<br />
Wprowadźmy warunek kompatybilności danych. Otrzymamy wtedy<br />
−1 ≤ 1 (1 − φ i+1/2 ) + φ i−1/2 ≤ 2 − c . (801)<br />
r i+1/2 c<br />
220
Bardziej ogólnym wyrażeniem, które jest poprawne zarówno dla c < 0 i c ≥ 0,<br />
jest<br />
−1 ≤ 1 (1 − φ i+1/2 ) + φ i−1/2 ≤ 2 − |c| , (802)<br />
r i+1/2 |c|<br />
gdzie możemy dokonać wyboru r i+1/2 jako<br />
r i+1/2 ≡ ∆ upw<br />
∆ local<br />
, (803)<br />
czyli<br />
⎧<br />
qi ⎪⎨<br />
n−qn i−1<br />
qi+1 r i+1/2 =<br />
n −qn i<br />
qi+2 ⎪⎩<br />
n −qn i+1<br />
qi+1 n −qn i<br />
, λ > 0 ,<br />
, λ < 0 .<br />
(804)<br />
22.7 Obszar TVD<br />
Podsumowując zauważmy, że<br />
1. filtrator φ(r, |c|) powinien być tak skonstruowany, aby eliminiował on<br />
numerycznie wygenerowane oscylacje;<br />
2. wartości filtratora muszą spełniać warunek φ(1, |c|) = |c| (np. LeVeque<br />
2002);<br />
3. dowolna funkcja φ(r, |c|) wewnątrz pewnego obszaru TVD prowadzi do<br />
schematu TVD.<br />
23 Dodatek E: Wartości i wektory własne macierzy<br />
Jacobiego dla równań MHD<br />
Macierz Jacobiego Ā posiada wartości własne (λ) i lewe (l) i prawe (r)<br />
wektory własne, które odpowiadają następującym falom (Powell 1994):<br />
221
(a) czterem falom magnetoakustycznym z:<br />
⎛<br />
l ± = N ± ⎜<br />
⎝<br />
0<br />
±ϱc ±<br />
∓ BxByϱc ±<br />
ϱc 2 ± −B2 x<br />
∓ BxBzϱc ±<br />
ϱc 2 ± −B2 x<br />
0<br />
B y ϱc 2 ±<br />
ϱc 2 ± −B2 x<br />
B z ϱc 2 ±<br />
ϱc 2 ± −B2 x<br />
1<br />
λ ± = v x ± c ± , (805)<br />
⎞T<br />
⎟<br />
⎠<br />
⎛<br />
, r ± = N ± ⎜<br />
⎝<br />
ϱ<br />
±c ±<br />
∓ BxByc ±<br />
ϱc 2 ± −B2 x<br />
∓ BxBzc ±<br />
ϱc 2 ± −B2 x<br />
0<br />
B y ϱc 2 ±<br />
ϱc 2 ± −B2 x<br />
B z ϱc 2 ±<br />
ϱc 2 ± −B2 x<br />
γp<br />
⎞<br />
. (806)<br />
⎟<br />
⎠<br />
Tutaj N ± oznacza czynnik normalizacyjny taki, że l ± r ± = 1. Wyrażenie na<br />
ten czynnik jest zbyt skomplikowane, aby je tutaj napisać. Indeks górny ±<br />
odpowiada prędkościom szybkiej (c + ) i powolnej (c − ) fal magnetoakustycznych;<br />
(b) dwóm falom Alfvéna z:<br />
λ a = v x ± c A , (807)<br />
l a =<br />
1<br />
2 √ N (0, 0, −B z, B y , 0, ± B z<br />
√ , ∓ B y<br />
√ , 0), ϱ ϱ<br />
(808)<br />
r a =<br />
1<br />
√ √<br />
√ (0, 0, −B z , B y , 0, ±B z ϱ, ∓By ϱ, 0) T . N<br />
(809)<br />
Tutaj N = 1/(B 2 y + B 2 z) jest czynnikiem normalizacyjnym a c A = B x / √ ϱ<br />
prędkością Alfvéna c A = B x / √ ϱ;<br />
(c) jednej fali entropii związanej z:<br />
λ e = v x , (810)<br />
l e = (1, 0, 0, 0, 0, 0, 0, −1 ), (811)<br />
c 2 s<br />
r e = (1, 0, 0, 0, 0, 0, 0, 0) T . (812)<br />
222
Tutaj entropia s jest dana następująco:<br />
( ) p<br />
s = log ; (813)<br />
ϱ γ<br />
(d) jednej fali dywergencji z:<br />
λ div = v x , (814)<br />
l div = (0, 0, 0, 0, 1, 0, 0, 0), (815)<br />
r div = (0, 0, 0, 0, 1, 0, 0, 0) T . (816)<br />
23.1 Osobliwości w wektorach własnych<br />
Wektory własne związane z falą Alfvéna stają się osobliwe dla<br />
B ⊥ ≡ √ B 2 y + B 2 z → 0 . (817)<br />
Wektory własne określające fale magnetoakustyczne są natomiast osobliwe<br />
dla c 2 ± → c 2 A, c 2 + → c 2 −. W ostatnim przypadku prędkości fal c − , c + i c A są jednakowe.<br />
Zadaniem naszym jest wyeliminowanie tych osobliwości. Zajmiemy<br />
się tym poniżej.<br />
Wprowadźmy<br />
β y = B y<br />
B ⊥<br />
,<br />
β z = B z<br />
B ⊥<br />
. (818)<br />
Wtedy wektory własne związane z falą Alfvéna możemy zapisać następująco:<br />
l a± = 1 (<br />
0, 0, ±β z , ∓β y , 0, − β zsgn(B x )<br />
√ , β )<br />
ysgn(B x )<br />
√ , 0 , (819)<br />
2<br />
ϱ ϱ<br />
r a± = (0, 0, ±β z , ∓β y , 0, −β z<br />
√ ϱ sgn(Bx ), β y<br />
√ ϱ sgn(Bx ), 0) T . (820)<br />
Osobliwości w prędkości Alfvéna możemy usunąć poprzez zastosowanie następującej<br />
procedury (Brio, Wu 1988):<br />
lim β y = lim β z = √ 1 . (821)<br />
B ⊥ →0 B ⊥ →0 2<br />
223
Elegancką metodą zastosowania powyższej granicy w kodzie numerycznym<br />
jest wprowadzenie małej wielkości ɛ i zmodyfikowanie β y na<br />
Wprowadzimy również<br />
β y =<br />
B y + ɛ<br />
B ⊥ + ɛ √ , ɛ
Osobliwość ta zachodzi, kiedy prędkości powolnej i szybkiej fal magnetoakustycznych<br />
stają się równa prędkości Alfvéna. W pobliżu tego punktu możemy<br />
zapisać<br />
gdzie<br />
Błędy δ ± spełniają nierówność<br />
Dla B ⊥ = 0 możemy pokazać, że<br />
α − = cos α 2 + δ −, α + = sin α 2 + δ + , (826)<br />
tan α ≡ B x − c s<br />
√ ϱ<br />
B ⊥<br />
. (827)<br />
|δ ± | ≤ B ⊥<br />
4c s<br />
√ ϱ<br />
. (828)<br />
α − = H(B x − c s<br />
√ ϱ) , α+ = H(c s<br />
√ ϱ − Bx ) , (829)<br />
gdzie H jest funkcją Heaviside’a.<br />
24 Dodatek F: Schemat numeryczny dla silnego<br />
pola magnetycznego<br />
W przypadku silnego pola magnetycznego wygodnie jest wyrazić całkowite<br />
pole B jako sumę pola równowagowego B 0 i zaburzającego B 1 , tzn.<br />
B = B 0 + B 1 . (830)<br />
Założymy, że B 0 spełnia następujące warunki:<br />
B 0,t = 0, (831)<br />
∇ · B 0 = 0, (832)<br />
∇ × B 0 = 0. (833)<br />
225
Zdefiniujemy teraz wektor zaburzonego stanu<br />
q 1 = (ϱ, ϱv, B 1 , E 1 ) T , (834)<br />
gdzie<br />
E 1 =<br />
jest gęstością zaburzonej energii.<br />
p<br />
γ − 1 + ϱv2 2 + B2 1<br />
2<br />
(835)<br />
Z wykorzystaniem q 1 możemy zapisać równanie (603) następująco Tanaka<br />
1994, Powell i inni 1999):<br />
q 1 ,t + ∇ · F 1 + ∇ · G = −∇ · B 1 (0, B, v, v · B 1 ) . (836)<br />
Tutaj<br />
∇ · B 1 = 0<br />
i składowe strumieni<br />
F 1 = (ϱv, ϱvv + I(p + B2 1<br />
2 ) − B 1B 1 , vB 1 − B 1 v,<br />
(E 1 + p + B2 1<br />
2 )v − B 1(v · B 1 )) T , (837)<br />
G = (0, (B 0 · B 1 )I, (B 0 B 1 + B 1 B 0 ), vB 0 − B 0 v,<br />
(B 0 · B 1 )v − (v · B 1 )B 0 ) T . (838)<br />
Powyższy schemat numeryczny charakteryzuje się Jakobianem, który różni<br />
się od tego dla zachowawczych równań MHD (Powell i inni 1999). Wartości<br />
i wektory własne Jakobianu są identyczne do tych dla równań MHD (Powell<br />
i inni 1999). Dokładność schematu poprawiliśmy wskutek rozwinięcia pola<br />
całkowitego B, danego równaniem (830).<br />
226