C.4 Numerické metody výpočtů funkcí více proměnných – řešení parciálních diferenciálních rovnic
C.4.1 Hledání kořenů soustavy funkcí více proměnných – Newtonova-Raphsonova metoda
Newtonova (Newtonova-Raphsonova) metoda představuje velmi účinný nástroj také pro řešení obecné soustavy (nelineárních) rovnic. Soustavu $P$, obsahující $n$ rovnic můžeme obecně zapsat jako
kde $i=1,\,\ldots\,,n$ a kde $\vec{x}$ je vektor proměnných $x_j$. Pomocí Taylorova rozvoje rovnice C.34 do prvního řádu dostáváme obecný výraz pro $k$-tou iteraci ($k$-tý iterativní krok) řešení systému rovnic $P_i$, který můžeme zapsat kompaktní formou
kde vektor $\Delta\vec{x}$ představuje korekci řešení pro každou proměnnou $x_j$ vzhledem k předchozímu iterativnímu kroku. Explicitní zápis vektoru $\Delta\vec{x}\,\,^{k}$ bude mít tvar
Výraz $\vec{P}\,^{k}$ v rovnici C.35 představuje vektor $k$-té iterace všech systémových rovnic ${P\,}^k_i$, zatímco výraz $J\,^{k}$ značí odpovídající Jacobiho matici, jejíž každý prvek ${J\,}^{k}_{ij}$ můžeme snadno analyticky vyjádřit ze systému rovnic ${P\,}^k_i$, položíme-li
Řešíme-li například (jako jednoduchý modelový příklad) soustavu rovnic:
k | xk | yk | zk |
---|---|---|---|
1 | -3.5568659855769229 | -2.8660523504273505 | 14.644631410256411 |
2 | -3.4484177335542667 | -2.8088357894123277 | 14.321062859837509 |
3 | -3.4422190042021756 | -2.8052747443938260 | 14.300861993036721 |
4 | -3.4421993029036972 | -2.8052630869488695 | 14.300795971729505 |
5 | -3.4421993027044500 | -2.8052630868291244 | 14.300795971052235 |
6 | -3.4421993027044500 | -2.8052630868291244 | 14.300795971052233 |
k | ∆xk | ∆yk | ∆zk |
---|---|---|---|
1 | 0.44313401442307693 | 0.13394764957264957 | 0.64463141025641035 |
2 | 0.10844825202265625 | 5.7216561015022732E-002 | -0.32356855041890148 |
3 | 6.1987293520911584E-003 | 3.5610450185016187E-003 | -2.0200866800787826E-002 |
4 | 1.9701298478486783E-005 | 1.1657444956463351E-005 | -6.6021307216049201E-005 |
5 | 1.9924720437988766E-010 | 1.1974503494876664E-010 | -6.7726957780015056E-010 |
6 | 6.2835370146182566E-017 | 1.8208999862070576E-016 | -1.3650720993330078E-015 |
Počáteční odhad (pokud neznáme, jako v případě standardních fyzikálních dějů, nějaké předem očekávané
hodnoty) může být poměrně obtížný – na našem příkladě můžete
vyzkoušet, že pokud zvolíme např. všechny počáteční hodnoty rovny $1$, výpočet zkonverguje rovněž, ovšem bude zapotřebí 24 325 iterací (namísto 6 iterací pro
uvedené blízké celočíselné počáteční odhady).
C.4.2 Principy konečných diferencí
Jednoduchý příklad – jednorozměrná rovnice se dvěma proměnnými: $t$ - čas, $x$ - délka – Burgersova (transportní) parciální diferenciální rovnice
kde $u$ je konstanta (rychlost). Numerický tvar funkce $f(t,x)$ je reprezentován na jednorozměrné síti, tvořené $M$ prostorovými body,
Výpočet proběhne opakovaně během $N$ časových kroků,
Numerické řešení veličiny $f(t,x)$ v obecném $j$-tém prostorovém a $n$-tém časovém ($x=x_j$, $t=t_n$) kroku označíme $f_j^n$. Taylorův rozvoj funkce $f(t,x)$ má tvar
kde $h=\Delta x$ je přírůstek prostorové proměnné $x$ (viz rovnice 1.1) a symbol $\mathcal{O}$ značí zanedbatelný, dále nezapočítávaný příspěvek členů vyšších řádů.
V numerické matematice jsou derivace nahrazeny tzv. diferencemi (viz odstavec C.3.2):
$ {\dfrac{\partial f}{\partial x}}\bigg|_j^n\approx\left(f_{j+1}^n-f_j^n\right)/\Delta x $ | dopředné diference |
$ {\dfrac{\partial f}{\partial x}}\bigg|_j^n\approx\left(f_j^n-f_{j-1}^n\right)/\Delta x $ | zpětné diference |
$ {\dfrac{\partial f}{\partial x}}\bigg|_j^n\approx\left(f_{j+1}^n-f_{j-1}^n\right)/(2\Delta x) $ | centrální diference |
Příklad numerického diferenčního schématu pro aproximace derivací 2. řádu:
Numerické diferenční schéma uvedené transportní (advekční) rovnice C.40 má tvar
kde časový krok je počítán jako dopředná diference a prostorový krok je počítán jako centrální diference. Po jednoduché úpravě dostáváme diferenční rovnici C.48 v programovatelném tvaru:
Toto tzv. explicitní Eulerovo numerické schéma je sice jednoduché, přehledné a názorné, je ale vždy numericky nestabilní (viz obrázek C.4 a odstavec C.4.3.
C.4.3 von Neumannova analýza stability
Jednoduchá analytická metoda, založená na předpokladu periodické numerické poruchy, tedy na Fourierovské dekompozici (rozkladu) numerické chyby. Metoda byla publikována v roce 1947 matematiky Johnem Crankem a Phyllis Nicolsonovou, za spoluautorství významného matematika, fyzika a průkopníka digitálních počítačů Johna von Neumanna.
Předpokládejme obecné poruchy stability (periodické perturbace, vibrace) vlnového charakteru ve tvaru
kde $\xi(k)$ je amplituda vlny, $k$ je vlnové číslo libovolné hodnoty. Pokud $|\xi|>1$, pro $n\rightarrow\infty$ bude
porucha se neustále zvětšuje, numerické schéma je nestabilní. Pokud
numerické schéma je stabilní. Po dosazení poruchové vlnové funkce do explicitního řešení C.49, dostáváme
a po vydělení celé rovnice C.53 výrazem $\xi^ne^{ikj\Delta x}$ dostáváme
Protože $|a+ib|=\sqrt{a^2+b^2}$, bude druhá mocnina rovnice C.54 rovna výrazu
kde pravá strana zjevně bude téměř vždy větší než 1 (výjimečně se bude rovnat 1). Je tedy zřejmé, že v případě explicitního numerického schématu musí vždy platit, že $|\xi|\geq 1$, toto schéma je tedy vždy nestabilní.
C.4.4 Laxova metoda
Numerická varianta explicitního schématu, které podstatně stabilizuje, je pojmenovaná podle matematika Petera Davida Laxe. Základem je jednoduchá změna ve struktuře časového členu. Člen $f_j^n$ v explicitním řešení je zde nahrazen aritmetickým průměrem sousedních hodnot,
von Neumannova analýza stability v tomto případě dává
Schéma je zjevně stabilní, pokud pro tzv. Courant-Friedrichs-Lewyho číslo ${u\Delta t}/{\Delta x}$ (zkráceně Courantovo číslo, cfl) platí
Stejná rovnice C.40, modelovaná Laxovou metodou C.56 je zobrazena v grafu C.5.
C.4.5 Metoda zpětného kroku (Upwind method)
Metoda zpětného kroku používá v prostorovém (advekčním) členu zpětnou diferenci,
von Neumannova analýza stability v tomto případě dává ($\text{cfl}=\alpha$):
Z požadavku $|\xi|^2<1$ vyplývá nerovnost
Protože pokud $\alpha>0$ potom $\cos(k\Delta x)<1$, schéma bude stabilní, pokud obdobně jako v odstavci C.4.4 Courantovo číslo $\alpha<1$.
C.4.6 Laxova-Wendroffova metoda
Dvoukroková metoda, pojmenovaná podle již zmíněného Petera Laxe (viz odstavec C.4.4) a dalšího matematika Burta Wendroffa, kombinuje výhody Laxova a explicitního schématu následujícím způsobem:
1. krok (Laxův) a 2. krok (explicitní):
von Neumannova analýza stability v tomto případě dává ($\text{cfl}=\alpha$):
$\xi=1–2\alpha\sin\left(\frac{k\Delta x}{2}\right)\left[\alpha\sin\left(\frac{k\Delta x}{2}\right)+i\cos\left(\frac{k\Delta x}{2}\right)\right]$, a tedy,
$|\xi|^2=1–4\alpha^2\sin^2\left(\frac{k\Delta x}{2}\right)\left[1-\alpha^2\sin^2\left(\frac{k\Delta x}{2}\right)-\cos^2\left(\frac{k\Delta x}{2}\right)\right].$
Z požadavku $|\xi|^2<1$ opět vyplývá podmínka stability $\alpha<1$.
C.4.7 Implicitní schéma
Princip tzv. implicitního schématu je založen na tom, že hodnoty veličiny $f$ v prostorovém (advekčním) členu na pravé straně rovnice C.49 jsou zadány v čase $t^{n+1}$, tedy de facto v budoucnu, tj. po provedení aktuálního výpočtu,
von Neumannova analýza stability v tomto případě dává (cfl = $\alpha$):
Z rovnice C.66 je tedy zcela zřejmé, že implicitní schéma musí splňovat podmínku stability $|\xi|\leq 1$, je tedy vždy numericky stabilní. Nevýhodou je komplikovanost výpočtu $f_j^{n+1}$ v každém časovém kroku, kdy tuto předem neznámou hodnotu počítáme pomocí tzv. tridiagonální matice (viz odstavce C.1, C.2.1.)
některou z metod nebo knihoven numerické lineární algebry (viz odstavec C.1). Stejná rovnice C.40, modelovaná implicitní metodou C.65-C.67 je zobrazena v grafu C.6.
C.4.8 Příklad pokročilejšího numerického schématu
-
V současnosti existuje celá řada modernějších, přesnějších a stabilnějších numerických metod (viz např. Thompson, 2006):
-
Použití tzv. oddělených sítí (staggered mesh), umožňující oddělení toků různých veličin (flux splitting), například vektorových a skalárních polí, atd.
-
Postupné přidávání jednotlivých členů pravých stran fyzikálních rovnic, reprezentujících různá silová pole (operator splitting):
$$ \begin{array}{llll}\label{oprourix} (f^1-f^0)/\Delta t & = & L_1(f^0)\\[4pt] (f^2-f^1)/\Delta t & = & L_2(f^1)\\[4pt] \,\,\,\,\,\,\vdots & & \,\,\,\,\,\,\vdots\\[4pt] (f^m-f^{m-1})/\Delta t & = & L_m(f^{m-1}), \end{array} $$C.68 Princip oddělených sítí (staggered mesh): na A-síti
sedí
vektorové veličiny, na B-sítisedí
skalární veličiny (viz obrázek C.7.
-
Příklad dvoukrokové metody (tj. kdy výpočet následujícího časového kroku je rozdělen na dva mezikroky: explicitně vypočítaný tzv. prediktorový krok, následovaný implicitním tzv. korektorovým krokem) pro výpočet transportní rovnice C.40 skalární veličiny $f$:
$$ \Delta_-^{\text{A}}=\frac{f_{j}^{\text{B}}-f_{j-1}^{\text{B}}}{x^{\text{B}}_{j}-x^{\text{B}}_{j-1}},\quad \Delta_+^{\text{A}}=\frac{f_{j+1}^{\text{B}}-f_{j}^{\text{B}}}{x^{\text{B}}_{j+1}-x^{\text{B}}_{j}}, $$C.69kde $\Delta_-$, $\Delta_+$ jsou symboly pro zpětnou a dopřednou diferenci. Pro výpočet prediktorového kroku použijeme například tzv. van Leerovu derivaci (van Leer, 1982), definovanou jako:
$$ \text{d}_{vL}^{\text{B}}=\left\{ \begin{array}{cl} \langle\Delta_-\Delta_+\rangle=\dfrac{2\Delta_-\Delta_+}{\Delta_-+\Delta_+},&\quad\text{if}\quad\quad\Delta_-\Delta_+>0\\[12pt] \,\,\,\,\,\,\,\,\,\,\,\,0,&\quad\text{if}\quad\quad\Delta_-\Delta_+<0\,. \end{array} \right.\, $$C.70van Leerova derivace je tedy nenulová, pokud je funkce $f$ monotónní a je nulová v těch polích prostorové sítě, kde funkce $f$ prochází extrémy. Důležitou vlastností van Leerovy derivace je, že zachovává monotónnost derivací a zabraňuje vzniku lokálních extrémů: z rovnice C.70 vyplývá, že pokud $\Delta_-\approx\Delta_+\approx\Delta$, potom $\langle\Delta_-\Delta_+\rangle\approx\Delta$ a pokud $\Delta_-\ll\Delta_+$ nebo $\Delta_-\gg\Delta_+$, potom $\langle\Delta_-\Delta_+\rangle\approx{\min}\left(\Delta_-,\Delta_+\right)$. To zaručuje, že hodnoty derivované funkce $f$ na hranicích výpočetní buňky lokálně
nepřestřelí
střední hodnoty funkce $f$ v sousedních buňkách (viz obrázek C.8). Výsledkem prediktorového kroku bude veličina $I$ (nazveme ji například interpolant), která je během prediktorového kroku advektována na rozhraní druhé sítě, tj. z původní B-sítě na A-síť a naopak. Prediktorový krok bude mít v tomto případě tvar
$$ I_{j}^{\text{A},\,n+a}=f_{j-1}^{\text{B},\,n}+\text{d}_{vL}^{\text{B}}\left(x^{\text{A}}_{j}-x^{\text{B}}_{j-1}-\frac{u_{j}^{\text{A},\,n+a}\Delta t}{2}\right), $$C.71kde $u$ je advekční rychlost (srovnej rovnici C.49) a horní index $n+a$ označuje dílčí posun v rámci časového kroku $n$.
-
Následující korektorový krok bude dán rovnicí ve tvaru
$$ f_j^{\text{B},\,n+1}=f_j^{\text{B},\,n}-\frac{\Delta t}{x^{\text{A}}_{j+1}-x^{\text{A}}_{j}} \left(I_{j+1}^{\,\text{A},\,n+a}u^{\text{A},\,n+a}_{j+1}-I_{j}^{\,\text{A},\,n+a}u^{\text{A},\,n+a}_{j}\right). $$C.72Po provedení korektorového kroku se tedy skalární veličina $f$ opět vrací na B-síť, tj. uprostřed mezi polohy $\text{A}(j+1),\,\text{A}(j)$. Rovnice C.72 je zároveň numerickou formou jednorozměrné divergence. Obdobné schéma ve dvoj a trojrozměrné verzi se nazývá metoda konečných objemů (finite volume method - viz např. LeVeque (2002)). Vícerozměrná podoba rovnice C.72 (počítaná v souřadnicovém směru $j$, index $k$ zde symbolizuje všechny ostatní souřadnicové směry, v závislosti na dimenzi výpočetní sítě) by tedy vypadala:
$$ f_{j,k}^{\text{B},\,n+1}=f_{j,k}^{\text{B},\,n}-\frac{\Delta t}{V^{\text{B}}_{j,k}} \left(I_{j+1,k}^{\,\text{A},\,n+a}u^{\text{A},\,n+a}_{j+1,k}S^{\text{A}}_{j+1,k}- I_{j,k}^{\,\text{A},\,n+a}u^{\text{A},\,n+a}_{j,k}S^{\text{A}}_{j,k}\right), $$C.73kde veličina $V^\text{B}_{j,k}$ znamená objem jedné tzv. buňky výpočetní sítě (grid cell), středovaný na síti B, veličina $S^\text{A}_{j,k}$ znamená potom plochu této buňky (nacházející se na síti A), přes niž prochází tok veličiny $f$ ve směru $j$ (viz odstavce A.1.2, A.2.2, A.3.2, A.7.2, popisující vztahy mezi těmito veličinami v různých souřadnicových soustavách – viz také obrázek C.8). Pokud bychom modelovali transportní rovnici C.40 pro vektorovou veličinu, bude postup zcela obdobný, pouze namísto ze sítě B budeme vycházet ze sítě A, prediktorový krok transportuje tuto veličinu na síť B a následný korektorový krok opět na síť A.
-
Stejná rovnice C.49, modelovaná uvedenou metodou prediktor-korektor je uvedená na obrázku C.9. Courantovo číslo $\text{cfl}=0.5$.
Numerické schéma, uvedené v tomto odstavci, není zdaleka jediné možné, představuje pouze ukázku tzv. po částech lineární metody (Piecewise Linear Method), kdy numerické diference jsou prokládány úsečkami. Je možné použít i přesnější tzv. po částech parabolickou metodu (Piecewise Parabolic Method – PPM, viz např. Colella & Woodward (1984)), nevýhodou je ovšem zcela zákonitě vyšší výpočetní náročnost, tj. nároky na výkon počítačů, atd. Kromě toho existuje celá řada jiných metod, založená na jiných principech numerického derivování, jiných typech prostorových sítí (například tzv. adaptivní sítě, které se v průběhu času samy mění), nebo k výpočtům vůbec prostorové sítě nevyužívají – např. tzv. SPH metoda (Smooth Particle Hydrodynamics), atd.
C.4.9 Příklady modelování reálných fyzikálních procesů
Riemannova-Sodova rázová trubice
Základní testovací úloha pro většinu numerických kódů se snadno ověřitelnými výsledky. Jedná se o uzavřenou trubici, respektive box, rozdělený na dvě části pevnou přepážkou, nazývanou též diafragma (latinský název pro bránici), kde obě oddělení jsou naplněné plynem s rozdílnými hustotami a tlaky. Náhle přepážka zmizí což vyvolá pohyb plynu předcházený rázovou vlnou šířící se kolmo k rovině původní přepážky ve směru řidšího plynu.
Obrázek C.10a ukazuje snímek průběhu hustoty, kdy počáteční stav plynu (kde index $L$ označuje levou stranu trubice s vyšší počáteční hustotou a tlakem , index $R$ označuje pravou stranu trubice s nižší počáteční hustotou a tlakem) je zvolen následovně: $\rho_L=1.0$, $\rho_R=0.125$, $P_L=1.0$, $P_R=0.1$, $\gamma=5/3$ kde $\rho$ je hustota, $P$ je tlak a $\gamma$ je adiabatická konstanta.
Obrázek C.11a ukazuje obdobnou testovací úlohu s počátečními průběhy veličin proměnnými v obou směrech $x,\,y$, s následujícími parametry:
$\rho_L=\text{e}^{-y^2}$, $\rho_R=0.125\,\text{e}^{-y^2}$, $P_L=\text{e}^{-y^2}$, $P_R=0.1\,\text{e}^{-y^2}$,
$\gamma=5/3$. Profily hustoty a tlaku v příčném směru $y$ jsou tedy Gaussovské
.
V tomto modelu je ještě přidána porucha
, způsobená malou počáteční složkou rychlosti $V_y=0.05$.
Kelvinova-Helmholtzova nestabilita
Dalším oblíbeným testovacím problémem je modelování Kelvinovy-Helmholtzovy nestability (viz např. Chandrasekhar, 1961, viz také obrázek C.12). Pravoúhlá oblast (box) je naplněná plynem se dvěma opačně směřujícími toky, oddělenými lineární pomyslnou diskontinuitou.
Okrajové podmínky jsou periodické na čelních okrajích toků, tj. v obrázku C.12b na stranách se souřadnicemi $x=0$ a $x=1$,
zatímco na zbývajících dvou stranách jsou zvoleny opět jako pevné stěny
.
Počáteční podmínky k úloze jsou převzaty z parametrů, uvedených v instrukcích ke kódu ATHENA (Stone et al., 2008
; Springel, 2013):
pro $y>0.5$ je podélná rychlost toku $V_{x,1}=0.3$ a hustota plynu $\rho_1=1$, pro $y\leq 0.5$ je podélná rychlost toku $V_{x,2}=-0.3$ a hustota plynu $\rho_2=2$.
Počáteční tlak $P=1.0$ v celé výpočetní oblasti a adiabatický exponent $\gamma=5/3$.
Abychom se vyhnuli naprosto ostrému rozhraní mezi oběma toky, definujeme přechodovou oblast která propojí oba toky, popsanou rovnicemi (Springel, 2013):
která charakterizuje počáteční poruchu hustoty ve směru $y$, podobně
která charakterizuje počáteční poruchu $x$-ové složky rychlostního pole ve směru $y$, kde střední kvadratická odchylka rychlosti $\sigma=0.01$. Do těchto počátečních podmínek vložíme periodickou poruchu $y$-ové složky rychlosti ve tvaru
s vlnovým číslem $k=2\times(2\pi/L)$ a amplitudou poruchy $A=0.05$.
Význam tohoto testu spočívá také ve snadném ověření linearity nárůstu poruchy v rané fázi průběhu úlohy, zatímco později je průběh vývoje poruchy zjevně nelineární,
což vylučuje provedení analytických kvantitativních výpočtů. Navíc, ostrost
rozhraní mezi oběma protisměrnými toky může sloužit jako
indikátor tzv. numerické difúzivity (tj. stabilizace algoritmu advekčního schématu pomocí druhých derivací toku) výpočetního schématu (Stone et al., 2008).