Počítačová mechanika tekutin - České vysoké učení technické v Praze

Transkript

Počítačová mechanika tekutin - České vysoké učení technické v Praze
Výchova studentů pro aplikace řešené na výkonných počítačích
České vysoké učení technické v Praze
Fakulta strojní
Počítačová mechanika tekutin
Jiří Fürst
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM
SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ
REPUBLIKY A ROZPOČTEM HLAVNÍHO MĚSTA PRAHY
Preliminary version – 3. března 2014
Obsah
1 Eulerovy rovnice
1.1 Linearizace Eulerových rovnic . . . . . . . . . . . . . . . . . .
1.2 Okrajové podmínky pro Eulerovy rovnice . . . . . . . . . . .
1.2.1 Podmínky pro linearizované rovnice . . . . . . . . . .
2
2
3
3
2 Numerické řešení Eulerových rovnic
2.1 Rusanovovo schéma . . . . . . . . . . . . . . . . . . . . . . . .
2.2 VanLeerovo schéma . . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
3 Potenciální proudění
3.1 Stacionární potenciální proudění ve 2D . . . . . . . . . . . . .
3.2 Linerizovaná rovnice pro poruchový potenciál . . . . . . . . .
3.2.1 Příklad: subsonické proudění GAMM kanálem . . . .
7
7
8
9
4 Tvorba sítí
4.1 Strukturované sítě . . . . . . . . . . . . .
4.1.1 Algebraické sítě . . . . . . . . . . .
4.1.2 Eliptické sítě . . . . . . . . . . . .
4.1.3 Hyperbolické sítě . . . . . . . . . .
4.2 Nestrukturované sítě . . . . . . . . . . . .
4.2.1 Delaunayovská triangulace oblasti
4.3 Hybridní sítě . . . . . . . . . . . . . . . .
4.4 Adaptivní strukturované sítě . . . . . . .
4.5 Tvorba sítí ve 3D . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
13
16
17
19
19
23
24
24
Poznámka na úvod
Tento text slouží především jako poznámky pro výuku předmětu Počítačová
mechanika tekutin na FS ČVUT. Jedná se pouze o určité doplnění existující literatury (např. série skript Numerická simulace proudění vydávaná na
ÚTM FS ČVUT). Některé kapitoly jsou zatím spíše osnovou přednášky a na
rozšíření se stále pracuje. Soubor pmt.pdf obsahuje tento dokument v PDF
formátu.
1
Preliminary version – 3. března 2014
Kapitola 1
Eulerovy rovnice
Eulerovy rovnice popisují prodění nevazké stlačitelné tekutiny. Vzniknou z
úplného systému Navierových-Stokesových rovnic zanedbáním členů popisujících vazké efekty a vedení tepla. Z tohoto důvodu je lze použít pouze tam,
kde tyto efekty nehrají rozhodující roli. Celý systém Eulerových rovnic lze
zapsat v tzv. konzervativním tvaru jako
Wt + F (W )x + G(W )y + H(W )z = 0,
(1.1)
W = [ρ, ρu, ρv, ρw, e]T ,
(1.2)
kde
h
iT
h
iT
F (W ) = ρu, ρu2 + p, ρuv, ρuw, (e + p)u
G(W ) = ρv, ρuv, ρv 2 + p, ρvw, (e + p)v
h
H(W ) = ρw, ρuw, ρvw, ρw2 + p, (e + p)w
,
(1.3)
,
(1.4)
iT
.
(1.5)
Tlak p je dán stavovou rovnicí, která pro případ ideálního plynu vede na
vztah
1
2
2
2
p = (γ − 1) e − ρ(u + v + w ) .
(1.6)
2
V dalším textu se budeme zabývat pouze jedním problémem a to vhodnou volbou okrajových podmínek pro Eulerovy rovnice. Ostatní problémy
(teorie Eulerových rovnic a numerické metody jejich řešení) jsou popsány ve
výše uvedené sérii skript.
1.1
Linearizace Eulerových rovnic
Převeďme nejprve Eulerovy rovnice pro jednorozměrný případ do primitivních proměnných U = [ρ, u, p]T . Je tedy
Ut + AUx = 0,
2
Preliminary version – 3. března 2014
(1.7)
kde


u ρ
0


A =  0 u 1/ρ  .
0 γp u
(1.8)
Provedeme-li linearizaci kolem konstantního stavu ρ̄, ū, p̄ a dostáváme
Ut + ĀUx = 0,
kde
(1.9)


ū ρ̄
0


Ā =  0 ū 1/ρ̄  .
0 γ p̄ ū
(1.10)
Vlastní čísla matice Ā jsou ū − ā, ū a ū + ā, kde ā2 = γ p̄/ρ̄ je kvadrát
rychlosti zvuku.
Vlastní vektory zapsané po sloupcích do matice R jsou


ρ̄/ā 1 ρ̄/ā


R =  −1 0 1 
ρ̄/ā 0 ρ̄/ā
(1.11)
a její inverze je


R−1
1.2
0 −1/2 1/(2ρ̄ā)


0
−1/ā2  .
= 1
0 1/2 1/(2ρ̄ā)
(1.12)
Okrajové podmínky pro Eulerovy rovnice
V následující sekci si ukážeme jeden z přístupů pro konstrukci okrajových
podmínek založený na linearizovaných Eulerových rovnicích. K pochopení
těchto podmínek je třeba znát principy řešení lineárních hyperbolických
systémů PDR prvního řádu. Tato problematika je opět popsána ve výše
zmíněných skriptech.
1.2.1
Podmínky pro linearizované rovnice
Při popisu okrajových podmínek se omezíme nejprve na jednorozměrný případ s rychlostí u ≥ 0 a vyjdeme z linearizovaných Eulerových rovnic pro primitivní proměnné. Z nich můžeme snadno určit charakteristické proměnné
jako
V = R−1 U = [p/(ρ̄ā) − u, ρ − p/ā2 , p/(ρ̄ā) + u]T .
(1.13)
Podmínka na vstupu, subsonický případ
U subsonického vstupu pouze jedna charakteristika vystupuje z proudového
pole, tedy v1 = const.. Je tedy třeba zadat dvě veličiny, které nám spolu s
extrapolovanou hodnotou v1 umožní určit všechny složky toku hranicí.
3
Preliminary version – 3. března 2014
Zadaný celkový tlak a teplota V tomto případě jsou zadány hodnoty
celkového tlaku p0 a celkové T0 . Z izentropických vztahů
γ−1 2
M̄ )Tb ,
2
γ
γ − 1 2 γ−1
= (1 +
pb
M̄ )
2
T0 = (1 +
(1.14)
p0
(1.15)
určíme hodnoty tlaku a teploty na vstupu. Velikost rychlosti pak určíme z
charakteristické podmínky
ρ̄ā(ub − u1 ) − (pb − p1 ) = 0.
(1.16)
Podmínka na pevné stěně
Na pevné stěně platí, že ū = 0. To znamená, že pouze jedna charakteristika vstupuje do oblasti a měli bychom tedy předepsat jednu veličinu. Pro
výpočet toku hraniční stěnou je zapotřebí znát pouze hodnotu tlaku. Předpokládejme, že stěna je umístěná na pravém okraji oblasti. Pak hodnota
tlaku na stěně se určí z podmínky v3 = const. a ub = 0, tedy
pb = pN + ρ̄āuN ,
(1.17)
kde uN je rychlost směrem ke stěně v poslední buňce.
Podmínka na výstupu, subsonický případ
Pro případ subsonického výstupu se zadavá jediná veličina. Jedna z možností
je zadat hodnotu tlaku pb . Zbylé dvě veličiny dopočítáme z charakteristických proměnných. Tedy
(pb − pN ) − ā2 (ρb − ρN ) = 0,
(1.18)
(pb − pN ) + ρ̄ā(ub − uN ) = 0,
(1.19)
neboli
ρb = ρN + (pb − pN )/ā2 ,
(1.20)
ub = uN − (pb − pN )/(ρ̄ā).
(1.21)
4
Preliminary version – 3. března 2014
Kapitola 2
Numerické řešení Eulerových
rovnic
V této části se budeme zabývat problémem numerického řešení Eulerových
rovnic. Budeme vycházet z metody konečných objemů (viz např. [3], [2], [4]).
Budeme uvažovat nejprve jednorozměrný systém Eulerových rovnic ve
tvaru
Wt + F (W )x = 0,
(2.1)
kde W = [ρ, ρu, e]T a F (W ) = [ρu, ρu2 + p, (e + p)u].
V tomto případě budeme uvažovat numerické schéma ve tvaru
Win+1 = Win −
∆t n
n
H(Win , Wi+1
) − H(Wi−1
, Win ) ,
∆xi
(2.2)
kde H(WR , WL ) je tzv. numerický tok.
Poté přejdeme ke dvourozměrnému systému ve tvaru
Wt + F (W )x + G(W )y = 0,
(2.3)
kde W = [ρ, ρu, ρv, e]T , F (W ) = [ρu, ρu2 + p, ρuv, (e + p)u] a G(W ) =
[ρv, ρuv, ρv 2 + p, (e + p)v].
Numerické schéma bude v tomto případě
Win+1 = Win −
2.1
∆t X
~ij ).
H(Win , Wjn , S
|Ωi | j
(2.4)
Rusanovovo schéma
Jedno z nejjednodušších schémat. Numerický tok pro jednorozměrný případ
je
H(WR , WL ) =
1
[F (WL ) + W (WR ) − (|ū| + ā) (WR − WL )] .
2
5
Preliminary version – 3. března 2014
(2.5)
2.2
VanLeerovo schéma
VanLeerovo schéma patří mezi tzv. flux-splitting metody, kdy je tok F (W )
rozdělen na dvě části F + (W ) a F − (W ) s kladnými resp. zápornými vlastními čísly příslušných Jakobiho matic a numerický tok je poté počítán jako
H(WL , WR ) = F + (WL ) + F − (WR ).
Pro případ Eulerových rovnic je toto rozdělení navíc provedeno zvlášť
pro tzv. konvektivní část toku F c (W ) = u[ρ, ρu, e + p]T a pro tlakovou část
F p (W ) = [0, p, 0]T .
Označme Ψ = [ρ, ρu, e + p]T . Pak konvektivní část toku pro VanLeerovo
schéma je
H c (WL , WR ) = ML aL ΨL + MR aR ΨR ,
(2.6)
a tlaková část toku je
H p (WL , WR ) = [0, PL , 0]T + [0, PR , 0]T ,
(2.7)
a celkový tok je tedy
H(WL , WR ) = H c (WL , WR ) + H p (WL , WR ).
(2.8)
Veličiny M a P jsou definovány vztahy
ML =
PL =


 0,
1
4 (1 +
ML ,




 0,


pL
4 (1
pL ,
pro ML ≤ −1
ML )2 , pro − 1 < ML < 1
pro 1 ≥ ML
pro ML ≤ −1
+ ML )2 (2 − ML ), pro − 1 < ML < 1
pro 1 ≥ ML
(2.9)
(2.10)
a
MR =
PR =


 MR ,
pro MR ≤ −1
− 41 (1 − MR )2 , pro − 1 < MR < 1

 0,
pro 1 ≥ MR


 pR ,
pR
4 (1

 0,
kde ML/R =
pro MR ≤ −1
− MR )2 (2 + MR ), pro − 1 < MR < 1
pro 1 ≥ MR
uL/R
aL/R .
6
Preliminary version – 3. března 2014
(2.11)
(2.12)
Kapitola 3
Potenciální proudění
Systémy Eulerových resp. Navierových-Stokesových rovnic popisují poměrně
širokou třídu tekutin, jejich řešení však může být komplikované a tím pádem
i časově velmi náročné. Proto lze v některých případech použít zjednodušené modely. Jedním z takovýchto zjednodušených modelů je model tzv.
potenciálního proudění. Předpokládejme, že:
• proudění je nevazké,
• nevířivé,
• a izentropické.
Pro jednoduchost dále předpokládejme, že řešíme stacionární problém
ve 2D (tyto předpoklady nejsou nutné, nám však usnadní zápis rovnic, pro
3D nestacionární případ odkazujeme čtenáře např. na [1]).
3.1
Stacionární potenciální proudění ve 2D
Je-li proudění stacionární a nevazké, je popsáno soustavou Eulerových rovnic
(ρu)x + (ρv)y = 0,
(3.1)
(ρu + p)x + (ρuv)y = 0,
(3.2)
2
2
(ρuv)x + (ρv + p)y = 0.
(3.3)
Rozderivujeme rovnici (3.1) a dostaneme
ρx u + ρux + ρy v + ρvy = 0.
(3.4)
∂p
Je-li proudění izentropické, je z definice rychlosti zvuku c2 = ( ∂ρ
)s gradient
1
1
hustoty ρx = c2 px a ρy = c2 py . Tedy
1
(px u + py v) + ρ(ux + vy ) = 0.
c2
7
Preliminary version – 3. března 2014
(3.5)
Z rovnice (3.2) vyjádříme px jako
px = −(ρu2 )x − (ρuv)y = −(ρu)x u − ρuux − (ρv)y u − ρvuy =
= −ρuux − ρvuy . (3.6)
Podobně z (3.3) je
py = −(ρuv)x − (ρv 2 )y = −(ρu)x v − ρuvx − (ρv)y v − ρvvy =
= −ρuvx − ρvvy . (3.7)
Dosadíme derivace tlaku do rovnice (3.5), výslednou rovnici vydělíme
hustotou a vynásobíme c2 a dostáváme
− u2 ux − uvuy − uvvx − v 2 vy + c2 (ux + vy ) = 0.
(3.8)
Je-li proudění nevířivé, existuje potenciál rychlosti, tj. u = Φx a v = Φy .
Dosadíme tyto vztahy do poslední rovnice a dostaneme
c2 − (Φx )2 Φxx − 2Φx Φy Φxy + c2 − (Φy )2 Φyy = 0.
(3.9)
Tato rovnice se nazývá rovnice potenciálního proudění nebo též potenciální
rovnice. Jedná se o nelineární skalární rovnici druhého řádu. Je-li
• u2 + v 2 < c2 , jedná se o rovnici eliptického typu,
• u2 + v 2 > c2 , jedná se o rovnici hyperbolického typu,
• u2 + v 2 = c2 , jedná se o rovnici parabolického typu.
3.2
Linerizovaná rovnice pro poruchový potenciál
Dalším zjednodušením předchozí rovnice je linearizace potenciální rovnice
pomocí metody malých poruch. Předpokládejme, že do volného proudu o
konstantní rychlosti (u, v) = (U∞ , 0) vložíme těleso o velmi malé tloušťce.
To způsobí v rovnoměrném proudu určitou poruchu. Rychlost tedy bude
u = U∞ + u0 ,
0
v=v,
(3.10)
(3.11)
kde u0 , v 0 jsou poruchy rychlosti. Nechť φ je potenciál těchto poruch (tj.
u0 = φx a v 0 = φy ). Potom
Φ = U∞ x + φ.
(3.12)
Dosadíme tento potenciál do rovnice (3.9) a zanedbáme všechny členy obsahující vyšší mocniny φ. Dále z izentropických vztahů pro rychlost zvuku
2
2
c20 = c2 + γ−1
2 (u + v ) dostaneme
c2 = c2∞ + O(φ),
8
Preliminary version – 3. března 2014
(3.13)
a dostáváme lineární rovnici pro potenciál malých poruch
2
(1 − M∞
)φxx + φyy = 0.
3.2.1
(3.14)
Příklad: subsonické proudění GAMM kanálem
Jako jednoduchý příklad řešení potenciálního proudění si uveďme subsonické
proudění tzv. GAMM kanálem. Jedná se o kanál délky 3 a výšky 1. Na jeho
dolní stěně je mezi body [1, 0] a [2, 0] překážka ve tvaru kruhového oblouku
procházejícího bodem [1.5, 0.1].
Na vstupu budeme uvažovat proudění o parametrech M∞ = 0.5, u =
U∞ = 1 a v = 0. Na horní a dolní stěně uvažujeme podmínku neprostupnosti,
tj. (u, v) · ~n = 0. Tyto podmínky transformujeme na okrajové podmínky pro
poruchový potenciál φ:
Vstup je-li u = U∞ , je φx = 0,
Stěny podmínka neprostupnosti je 0 = (u, v) · (n1 , n2 ) = (U∞ + φx , φy ) ·
(n1 , n2 ) a tedy ∂φ/∂n = −U∞ n1 ,
Výstup Ačkoliv jsme při popisu úlohy nezmiňovali žádnou podmínku na
výstupu, pro korektní formulaci je třeba i zde zadat vhodnou okrajovou
podmínku. Předepíšeme zde např. podmínku v = 0, co6 lze přepsat
jako φ = 0.
Celý výpočet ještě zjednodušíme tak, že využijeme předpokladu, že překážka je velmi tenka a aproximujeme okrajové podmínky na dolní stěně
pouze s prvním řádem přesnosti (vzhledem k tloušťce překážky). Tak bude
možno provést výpočet na jednoduché kartézské síti a tvar překážky budeme
modelovat pouze zvolenou okrajovou podmínkou.
Program Potential/gamm-simple.cpp implemetnuje řešení tohoto problému pomocí Gaussovy-Seidelovy iterační metody. Výsledek (tj. hodnoty
poruchového potenciálu) jsou uloženy v souboru Potential/phi.plt. Tento
soubor lze zobrazit pomocí komečního programu Tecplot nebo pomocí volně
dostupného programu Visit .
Obrázek 3.1 ukazuje uživatelské rozhraní programu Visit. Po jeho spuštění najdeme v levém okně soubor phi.plt a stiskneme open. Pomocí nabídky
Plots/Mesh zobrazíme výpočetní síť (viz obr. 3.2). Dále můžeme zobrazit
rozložení vypočtené hodnoty poruchového potenciálu pomocí volby Plots/Pseudocolor (obr. 3.3). Pokud bychom chtěli zobrazit například rychlosti,
muzeli bychom je nejprve z poruchového potenciálu dopočítat. To můžeme
udělat pomocí okna Controls/Expression. Obrázek 3.4 ukazuje postup při
výpočtu rychlosti jako součtu konstantního vektoru (U∞ , 0) = (1, 0) a gradientu potenciálu a dále výpočet velikosti rychlosti. Pomocí nabídky Plots/Vector můžeme zobrazit vektory rychlosti (obr. 3.5). Vybereme-li v řídícím
okně graf zobrazující potenciál, můžeme pomocí možnosti Variables změnit
zobrazení potenciálu na zobrazení velikosti rychlosti (obr. 3.6).
9
Preliminary version – 3. března 2014
Obrázek 3.1: Uživatelské rozhraní programu Visit
Obrázek 3.2: Zobrazení sítě
10
Preliminary version – 3. března 2014
Obrázek 3.3: Zobrazení poruchového potenciálu
Obrázek 3.4: Výpočet rychlosti a její velikosti
11
Preliminary version – 3. března 2014
Obrázek 3.5: Zobrazení vektorů rychlosti
Obrázek 3.6: Zobrazení velikosti rychlosti
12
Preliminary version – 3. března 2014
Kapitola 4
Tvorba sítí
V této kapitole se budeme věnovat některým metodám tvorby sítí. Pokusíme
se vysvětlit principy těchto metod na relativně jednoduchých dvourozměrných případech. Problematika tvorby sítí ve trojrozměrném prostoru při
složitější geometrii se již rozsahem značně vymyká z možností tohoto kurzu
a případnému čtenáři doporučujeme například http://www.hpc.msstate.
edu/publications/gridbook/ nebo [5].
Algoritmy popisované v této publikaci jsou doplněny demonstračními
programy odladěnými v jazyce Python s rozšířením pro numerické výpočty
Numeric a pro zobrazovaní sítí používaji program Gnuplot. Tento je pro
názorné animace ovladán z jazyka python pomocí modulu Gnuplot.py.
Pro správné fungování je zapotřebí modul Grids/grid-base.py.
Algoritmy jsou testovány na následujících oblastech:
• jednotkový čtverec Grids/ctverec.py,
• kanál s půlkruhohou překážkou Grids/channel.py,
• kanál s půlkruhohou překážkou se zjemněním Grids/channel-ns.py,
• GAMM kanál Grids/gamm.py,
• GAMM kanál se zjemněním Grids/gamm-ns.py.
4.1
4.1.1
Strukturované sítě
Algebraické sítě
Jednou z nejjednodušších metod tvorby strukturovaných sítí je tzv. algebraická metoda. Ta vychází z přímé geometrické konstrukce sítě ze zadaných
bodů na hranici oblasti. V následujícím textu se budeme pokoušet vytvořit dvourozměrnou strukturovanou síť o N timesM buňkách. Vrcholy sítě
budeme označovat xi,j , kde i = 0, .., N a j = 0, .., M .
13
Preliminary version – 3. března 2014
Nejprvme si představme, že máme zadány pouze body na dolní a horní
hranici oblasti, tj. jsou zadány body xi,0 a xi,M pro i = 0, ..., N . Body uvnitř
oblasti pak můžeme získat vhodnou interpolací těchto hraničních bodů. V
nejjednodušším případě můžeme použít lineární interpolaci a máme tedy
xi,j = (1 − ηj )xi,0 + ηj xi,M ,
(4.1)
kde1 ηj = j/M a indexy jsou i = 0, .., N a j = 1, ..M − 1. Tato jednoduchá metoda vytváří síť bez jakéhokoliv zjemnění ve směru indexu j. Navíc
levý a pravý okraj sítě oblasti musí být tvořen úsečkou. Program Grids/alg_simple.py ukazuje ukazuje implementaci tohoto algoritmu. Pro jeho
použití nejprve vytvořte jedním z výše uvedených programů popis hranice
oblasti a potom spusťte tento program.
Určitým vylepšením této metody je zavedení vhodnějších interpolačních
metod. Lineární interpolaci v (4.1) je možné nahradit interpolací danou
funkcemi βk (η), tj. např.
xi,j = β0 (ηj )xi,0 + β1 (ηj )xi,M ,
(4.2)
kde β0 (η) + β1 (η) = 1 a β0 je klesající funkce, pro níž β0 (0) = 1 a β0 (1) = 0.
Velikost derivace funkce β0 určuje výšku buněk v dané vrstvě. Čím je velikost
derivace větší, tím větší je i výška buněk.
Dalším rozšířením je interpolace pomocí Lagrangeova polynomu. Mějmě
v tomto případě zadány nejen body ve vrstvách 0 a M , ale ještě v několika
dalších vrstvách uvnitř sítě. Označme tyto vrstvy včetně krajních jako jk ,
kde k = 1, .., K. Potom Lagrangeovskou síť dostaneme jako
xi,j =
X
βk (ηj )xi,jk ,
(4.3)
k
kde βk (ηjl ) = δkl .
Velmi užitečná může též být interpolace Hermitovská. Zde máme v několika vrstvách zadány nejen souřadnice uzlů, ale také první (nebo vyšší)
derivace podle η (neboli směry síťových čar). V nejjednodušším, přesto však
velmi užitečném, případě jsou zadány body x a směry síťových čar spolu s
velikostí buněk xξ na hranici. Potom
xi,j = β00 (ηj )xi,0 + β01 (ηj )(xη )i,0 + β10 (ηj )xi,M + β11 (ηj )(xη )i,M .
(4.4)
Funkce βkl jsou přitom zvoleny tak, že
β00 (0) = 1,
β01 (0) = 0,
β10 (0) = 0,
β11 (0) = 0,
1
(β00 )0 (0) = 0,
(β01 )0 (0) = 1,
(β10 )0 (0) = 0,
(β11 )0 (0) = 0,
β00 (1) = 0,
β01 (1) = 0,
β10 (1) = 1,
β11 (1) = 0,
Pozor na celočíselné dělení!
14
Preliminary version – 3. března 2014
(β00 )0 (1) = 0,
(β01 )0 (1) = 0,
(β10 )0 (1) = 0,
(β11 )0 (1) = 1.
(4.5)
Všechny výše uvedené interpolace však nebraly v úvahu tvar levé a pravé
strany oblasti. Předpokládejme nyní, že jsou zadány body na všeh čtyřech
stranách oblasti. Pak lze body uvnitř sítě získat tzv. metodou transfinitní
interpolace. Ztotožněme zadané body xi,j na hranicích oblasti s hodnotami
funkce x(ξi , ηj ). Nechť
U (ξ, η) = α0 (ξ)x(0, η) + α1 (ξ)x(1, η),
(4.6)
je jednorozměrná interpolace ve směru indexu i, funkce α0,1 mohou být např.
α0 (ξ) = 1 − ξ a α1 (ξ) = ξ. Podobně
V (ξ, η) = β0 (η)x(ξ, 0) + β1 (ξ)x(ξ, 1),
(4.7)
je interpolace ve směru indexu j. K tomu, aby součet U + V byl vhodnou
interpolací, je třeba odečíst korekci
U V (ξ, η) = α0 (ξ)β0 (η)x(0, 0) + α1 (ξ)β0 (η)x(1, 0)+
+ α1 (ξ)β1 (η)x(1, 1) + α0 (ξ)β1 (η)x(0, 1), (4.8)
tedy
x(ξ, η) = U (ξ, η) + V (ξ, η) − U V (ξ, η).
(4.9)
Obrázek 4.1 ukazuje síť v GAMM kanále získané pomocí výše uvedené
metody pomocí programu Grids/alg_tfi_lin.py.
(a) Celá oblast
(b) Detail
Obrázek 4.1: Algebraická síť v GAMM kanále se zjemněním u stěn vytvořená
lineární TFI interpolací.
Tato jednoduchá metoda však selhává pro případ, kdy je požadováno
zjemnění sítě v blízkosti hranice. V tomto případě lze postupovat následujícím způsobem: pro body na hranici nejprve vypočteme délky křivek a to
následujícím způsobem:
• pro levou hranici je u0,j = 0 a v0,0 = 0 a v0,j = v0,j−1 + ||x0,j −
P
x0,j−1 ||/ M
l=1 ||x0,l − x0,l−1 ||,
• pro pravou hranici je uN,j = 1 a vN,0 = 0 a vN,j = vN,j−1 + ||xN,j −
P
xN,j−1 ||/ M
l=1 ||xN,l − xN,l−1 ||,
15
Preliminary version – 3. března 2014
• pro dolní hranici je vi,0 = 0 a u0,0 = 0 a ui,0 = ui−1,0 + ||xi,0 −
P
xi−1,0 ||/ N
l=1 ||xl,0 − xl−1,0 ||,
• pro horní hranici je vi,M = 1 a u0,M = 0 a ui,M = ui−1,M + ||xi,M −
P
xi−1,M ||/ N
l=1 ||xl,M − xl−1,M ||.
Potom se použije výše uvedená transfinitní interpolace (4.9) pro výpočet
hodnot ui,j a vi,j z hraničních hodnot a hodnoty parametrů u a v se použijí
na místě ξ a η při interpolaci uzlů sítě, viz program Grids/alg_tfi_bsg.py.
Pomocí tohoto algoritmu byla získána například síť na obrázku 4.2.
(a) Celá oblast
(b) Detail
Obrázek 4.2: Algebraická síť v GAMM kanále se zjemněním u stěn vytvořená
lineární TFI interpolací s uvažováním rozdělení na hranicích.
4.1.2
Eliptické sítě
Eliptická síť se získá řešením Poissonovy rovnice
∆ξ = P (x, y),
(4.10)
∆η = Q(x, y),
(4.11)
se okrajovými podmínkami určenými daným rozdělením bodů na hranicích
oblasti. Síťové čáry zde odpovídají izočarám veličin ξ a η.
Pro účely numerického řešení je vhodnější tuto rovnici transformovat do
křivočarých souřadnic ξ, η jako (viz [5])
g22 (xξξ + P xξ ) − 2g12 xξη + g11 (xηη + Qxη ) = 0,
(4.12)
kde
g11 = xξ · xξ = x2ξ + yξ2 ,
(4.13)
g12 = xξ · xη = xξ xη + yξ yη ,
(4.14)
g22 = xη · xη =
x2η
+
yη2 .
(4.15)
Význam členů P a Q je podrobněji diskutován v http://www.hpc.msstate.
edu/publications/gridbook/. Obecně řečeno kladné hodnoty P posouvají síťové čáry ve směru růstu ξ (doprava), záporné naopak. Podobně Q
16
Preliminary version – 3. března 2014
posouvá síťové čáry ve směru souřadnice η (nahoru nebo dolů). Vhodnou
volbou těchto zdrojových členů lze dosáhnout například zjemnění sítě nebo
kolmost síťových čar v blízkosti hranice.
Obrázek 4.3 ukazuje síť získanou řešením rovnice (4.12) bez uvažování
zdrojových členů P a Q pomocí programu Grids/eli_simple.py. Obrázek
4.4 ukazuje síť získanou řešením problému se zdrojovými členy zaručujícími
ortogonalitu a zachování velikosti buněk u hranice.
(a) Celá oblast
(b) Detail
Obrázek 4.3: Eliptická síť v GAMM kanále se zjemněním u stěn, při tvorbě
sítě nebyly uvažovány zdrojové členy. Všimněte si, že síť vůbec nerespektuje
požadované zjemnění u stěn.
(a) Celá oblast
(b) Detail
Obrázek 4.4: Eliptická síť v GAMM kanále se zjemněním u stěn, zdrojové
členy dle kapitoly 6.3.2 z [5]
4.1.3
Hyperbolické sítě
Další možností pro tvorbu sítí je formulovat požadavek ortogonality síťových
čar jako
xξ · xη = xξ xη + yξ yη = 0.
(4.16)
Tato rovnice nám při zadaném směru xξ umožnuje určit směr vektoru xη . Je
však třeba doplnit rovnici, pomocí které učíme délku tohoto vektoru (neboli
velikost kroku sítě ve směru kolmém na stěnu). Touto rovnicí může být
například
xξ × xη = xξ yη − xη yξ = V (ξ, η),
(4.17)
17
Preliminary version – 3. března 2014
kde V je plocha buňky.
Linearizujeme-li rovnice (4.16) a (4.17) kolem stavu x̄, tj. x = x̄ + x0 ,
dostaneme
x̄ξ x̄η + ȳξ ȳη + x̄ξ x0η + ȳξ yη0 + x0ξ x̄η + yξ0 ȳη = 0,
x̄ξ ȳη − x̄η ȳξ + x̄ξ yη0 − x̄η yξ0 + x0ξ ȳη − x0η ȳξ = V (ξ, η).
Vzhledem k tomu, že pro stav s pruhem platí x̄ξ x̄η + ȳξ ȳη = 0, můžeme tuto
rovnici přičíst k první rovnici posledně uvedeného systému. Dále využijeme
toho, že x̄ + x0 = x a dostáváme
x̄ξ xη + ȳξ yη + x̄η xξ + ȳη yξ = 0.
(4.18)
¯ η̄)
Podobně pro druhou rovnici soustavy využijeme vztah x̄ξ ȳη − x̄η ȳξ = V (ξ,
a dostáváme
¯ η̄) + V (ξ, η).
x̄ξ yη − x̄η yξ + xξ ȳη − xη ȳξ = V (ξ,
(4.19)
Tyto dvě rovnice můžeme přepsat do vektorového tvaru jako
Bxη + Axξ = f ,
(4.20)
kde
"
A=
x̄η ȳη
ȳη −x̄η
#
"
, B=
x̄ξ ȳξ
−ȳξ x̄ξ
#
"
, f=
0
V̄ + V
#
.
(4.21)
Tento systém můžeme upravit na tvar
xη + Cxξ = g,
(4.22)
kde C = B−1 A a g = B−1 f . Přímým výpočtem lze zjistit, že
B
"
=
1
2
x̄ξ + ȳξ2
"
C =
1
2
x̄ξ + ȳξ2
"
g =
V̄ + V
x̄2ξ + ȳξ2
−1
x̄ξ −ȳξ
ȳξ x̄ξ
#
,
x̄ξ x̄η − ȳξ ȳη x̄ξ ȳη + ȳξ x̄η
ȳξ x̄η + x̄ξ ȳη ȳξ ȳη − x̄ξ x̄η
−ȳξ
x̄ξ
#
,
#
.
Matice C je symetrická a má tedy reálná vlastní čísla a systém (4.22) je
tedy hyperbolický. To nám dává návod na sestavení numerické metody pro
výpočet hodnot x(ξ, η) pro η > 0 při zadané počáteční podmínce x(ξ, 0).
Vlastní čísla matice C jsou
√
± 2 q 2 2
λC = 2
x̄ξ x̄η + ȳξ2 ȳη2 .
(4.23)
x̄ξ + ȳξ2
18
Preliminary version – 3. března 2014
Výpočet j + 1 vrstvy sítě ze zadané j-té vrstvy tedy odpovídá jednomu
kroku metody pro řešení hyperbolického systému (4.22). Pro jeho řešení lze
využít buď explicitní nebo implicitní metodu. Obě metody vyžadují stabilizaci pomocí nějakého druhu umělé vazkosti. Explicitní variantu centrálního
schématu lze zapsat jako
1
xi,j+1 = xi,j − Ci,j (xi+1,j − xi−1,j ) + gi,j + i,j (xi+1,j − 2xi,j + xi−1,j ) .
2
(4.24)
Tato metoda však vyžaduje splnění podmínky stability ∆η ≤ ∆ξ/ρC . V
našem případě je ∆η = ∆ξ = 1, takže nejsme schopni volbou vhodného ∆η
dosáhnout stability metody. Naproti tomu implicitní metoda ve tvaru
...
4.2
(4.25)
Nestrukturované sítě
Dalším typem sítí jsou tzv. nestrukturované sítě. Na rozdíl od strukturovaných sítí je u těchto sítí pro určení sousedních vrcholů nebo buněk mít k
dispozici informaci o topologii sítě.
Ve dvourozměrném případě se nejčastěji využívají sítě tvořené trojúhelníkovými nebo čtyřúhelníkovými buňkami.
4.2.1
Delaunayovská triangulace oblasti
Jedna z metod tvorby nestrukturované trojúhelníkové sítě je tzv. Delaunayovská triangulace. Ta je vytvořena tak, že uvnitř kruhu opsaného libovolnému trojúhelníku sítě se nenachází žádný vrchol triangulace.
Algoritmus pro tvorbu triangulace byl popsán na přednášce. Zde si ukážeme příklad použití volně dostupného programu triangle. Tento program
pracuje v několika režimech. Pro naše účely bude nejužitečnější režim, kdy
program automaticky vygeneruje síť uvnitř oblasti se zadanou hranicí. Pro
jednoduchost předpokládejme, že oblast je jednoduše souvislá, tj. neobsahuje žádné díry. V tomto případě připravíme vstupní formát typu *.poly.
Ten obsahuje body a úseček na hranici oblasti a má následující strukturu:
• První řádek obsahuje: počet vrcholů ve vstupním souboru, dimenze
oblasti (musí být 2), počet atributů, počet hraničních značek (0 nebo
1).
• Následují řádky obsahující: číslo vrcholu, jeho souřadnice x a y, atributy vrcholu (pokud byl nastaven počet atributů větší než 0), hraniční
značka (pokud byl nastaven počet začek 1).
• Další sekce souboru začíná počtem hraničních úseček spolu s počtem
hraničních značek.
19
Preliminary version – 3. března 2014
• Dále následují řádky obsahující číslo hraniční úsečky, indexy jejích
krajních vrcholů a případne hraniční značku.
• Třetí sekce popisuje díry v oblasti a začína řádkem obsahujícím počet
děr (pro jednoduše souvislé oblasti je zde 0).
• Následující rádky obsahují číslo díry a souřadnice libovolného bodu
uvnitř díry.
• Další sekce jsou nepovinné a pro naše účely zatím zbytečné.
Vstupní soubor obsahuje mimo informací o pozici bodů také atributy a hraniční značky. Atributy jsou libovolná čísla, která generátor sítě při síťování
interpoluje na nově vzniklé body. Lze tak například nechat přepočítávat
řešení při adaptaci sítě. My budeme zatím používat soubory bez atributů.
Naproti tomu hraniční značky pro nás budou velmi užitečné. Očíslujeme
si ve vstupním souboru hranice oblasti a tato čísla použijeme jako hraniční
zvonky. To nám později umožní rozpoznat, která hrana či bod náleží jaké
hranici.
Síť ve čtverci Jako první příklad si ukážeme tvorbu sítě v oblasti tvaru
čtverce. Tu můžeme popsat vstupním souborem Grids/ctverec.poly s následujícím obsahem:
#
4
1
2
3
4
#
#
#
#
#
#
#
4
1
2
3
4
#
#
0
V souboru jsou 4 body bez atributu a hranicnich znacek
2 0 0
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0
Hranice oblasti je tvorena 4 useckami bez atributu
1 hranicni znacku nastavime takto:
leva hranice - znacka 10
prava hranice - znacka 20
dolni hranice - znacka 30
horni hranice - znacka 40
1
1 2 30
2 3 20
3 4 40
1 4 10
V oblasti nejsou diry
20
Preliminary version – 3. března 2014
Síť vytvoříme pomocí příkazu
triangle -p ctverec.poly
Vzniklou síť lze zobrazit pomocí programu showme, který je součástí balíku
triangle příkazem
showme ctverec.1.ele
Nově vytvořená síť je uložena v souborech ctverec.1.*, kde
• soubor ctverec.1.ele obsahuje v prvním řádku počet trojúhelníků,
počet uzlů troujúhelníku (většinou 3, ale pro tzv. kvadratické prvky je
to 6) a počet atributů. Další řádky obsahují číslo trojúhelníku a indexy
jeho uzlů v orientaci proti směru hodinových ručiček.
2
3
1
2
0
4
2
1
3
2
4
• Soubor ctverec.1.poly obsahuje popis hranice ve stejném formátu,
jako měl vstupní soubor. Na rozdíl od něj však neobsahuje souradnice
vrcholů trojúhelníků a jejich počet je tedy 0.
0
4
2
1
1
2
3
4
0
1
2
3
4
1
1
2
3
4
30
20
40
10
0
• Soubor ctverec.1.node obsahuje souřadnice vrcholů s atributy a hraničními značkami ve stejném formátu, jako měl vstupní soubor.
4
2
1
2
3
4
0
1
0
1
1
0
0
0
1
1
30
30
20
40
Vzniklá síť je zobrazena na obrázku 4.5. Vlevo je zobrazena základní síť bez
zjemnění. Pro síť uprostřed byla pomocí parametru -a0.002 předepsána
maximální plocha trojúhelníka a nakonec vpravo byla pomocí parametru -q
požadována podmínka minimálního úhlu 20◦ . Tvorbu sítě lze ovlivnit ještě
celou řadou dalších voleb. Jejich popis lze snadno získat spuštěním
triangle -h
21
Preliminary version – 3. března 2014
Obrázek 4.5: Síť v oblasti tvaru čtverce. Vlevo vytvořená pomocí
triangle -p ctverec.poly, uprostřed pomocí triangle -a0.002 -p
ctverec.poly a vpravo pomocí triangle -a0.002 -q -p ctverec.poly.
Síť v GAMM kanále Nyní si ukážeme tvorby sítě v oblasti tvaru kanálu
s překážkou na dolní stěně (tzv. GAMM kanál). Programem Grids/gammtri.py nejprve vytvoříme vstupní soubor Grids/gamm.poly. V něm je popsáno rozložení bodů na hranicích kanálu odpovídající kroku h = 0.1. Pokud by síť byla tvořena
√ rovnostrannými trojúhelníky, pak plocha každého z
nich by byla S = h2 3/4 ≈ 0.0044. Přidáme tedy parametr -a0.0044. Požadujme dále, aby všechny úhly byly větší než 25◦ , tedy -q25 a aby program
nepřidával žádné další body na hranici -Y. Síť tedy vytvoříme pomocí
triangle -a0.0044 -q25 -Y -p gamm.poly
Výsledná síť je znázorněna na obrázku 4.6.
Obrázek 4.6: Nestrukturovaná síť v GAMM kanále vytvořená pomocí programu triangle.
Poznamenejme, že program triangle nabízí celou řadu dalších funkcí,
které lze využít například pro adaptaci sítě. Na druhou stranu je třeba si
uvědomit, že kvalita výsledné sítě je silně ovlivněna algoritmem pro určení
polohy nově vkládaného bodu. Například programem delaunay2 byla pro
stejně zadané hranice vytvořena síť na obrázku 4.7. Ta obsahuje pouze 357
2
Tento program je dostupný pouze na požádání u autora tohoto textu.
22
Preliminary version – 3. března 2014
uzlů a 632 téměř rovnostranných trojůhelníků oproti 572 vrcholům a 1060
trojůhelníkům z programu triangle.
Obrázek 4.7: Nestrukturovaná síť v GAMM kanále vytvořená pomocí programu delaunay.
4.3
Hybridní sítě
Na správně vytvořené strukturované síti je většinou snadné získat velmi
kvalitní řešení a to i pro případ mezních vrstev, kde jsou používány velmi
ploché buňky. Na druhou stranu je jejich tvorba pro složité oblasti velmi
komplikovaná. Na druhou stranu nestrukturované sítě lze vytvořit bez větších problémů pro téměř libovolný tvar oblasti, avšak použití trojůhelníků v
mezních vrstvách je stále předmětem diskusí.
Proto se jako vhodný kompromis jeví tzv. hybridní sítě, které používají
strukturovanou (často hyperbolickou) síť v blízkosti hranice oblasti (tj. tam,
kde lze očekávat mezní vrstvy) a nestrukturovanou síť ve zbytku oblasti.
Obrázek 4.8 ukazuje detail hybridní sítě v okolí náběžné a odtokové hrany
turbínové lopatky.
Obrázek 4.8: Hybridní síť v okolí náběžné a odtokové hrany turbínové lopatky.
23
Preliminary version – 3. března 2014
4.4
Adaptivní strukturované sítě
Jednou z možností, jak zlepšit kvalitu numerického řešení, je provést dostatečné zjemnění sítě. Pokud bychom však síť zjemňovali rovnoměrně v celé
oblasti, vedlo by to k neúměrnému nárůstu počtu buněk sítě. Proto je výhodnější síť zjemňovat pouze v oblastech, kde lze očekávat velkou chybu.
Určitým problémem však je, tyto oblasti identifikovat. Obrázek 4.9 ukazuje
nestrukturovanou síť použitou pro výpočet obtékání turbínové mříže SE
1050. Vypočtené isočáry Machova čísla jsou na obrázku 4.10. Tento výsledek byl analyzován a výpočetní síť byla upravena tak, že buňky ve kterých
docházelo k velké změně entropie ve smeru proudu byly zjemněny. Na této
síti byl znovu proveden výpočet a celý cyklus upravy sítě a výpočtu byl
aplikován ještě jednou. Obrázky 4.11 a 4.12 ukazují síť po dvou adaptacích
a získané izočáry Machova čísla. Z obrázků je vidět mnohem lepší rozlišení
struktury rázových vln na zjemněné síti. Lokálně lokálně zjemněná síť obsahovala 11440 buněk. Pokud bychom chtěli získat odpovídající rozlišení v
celé oblasti pomocí globálního zjemnění, potřebovali bychom zhruba dvojnásobné množství buňek.
4.5
Tvorba sítí ve 3D
V předcházející části jsme se věnovali především problematice tvorby sítí
pro dvourozměrné úlohy. Mnohé z uvedených metod lze rozšířit i na trojrozměrný případ. Při řešení reálných problémů se ovšem často setkáváme
s komplikovanou geometrií, jejíž popis je dán výstupem z CAD softwaru.
Je-li geometrie složitější, nevystačíme si většinou s jednoblokovou sítí a je
třeba síť tvořit po částech. Výsledný software pro tvorbu sítí je tedy velmi
komplikovaný a v důsledku také velmi drahý.
Na tomto místě si ukážeme pouze několik obrázků, které prezentují některé kroky procesu tvorby sítě pomocí komerčního software ICEM CFD.
Síť byla vytvořena ing. P. Furmánkem následujícím způsobem:
• nejprve byla v programu ICEM CFD vytvořen popis tvaru křídla (viz
obr. 4.13),
• dále byla oblast rozdělena na několik bloků (viz obr. 4.14),
• poté byla v každém bloku zvlášť vytvořena síť pomoci TFI (viz obr.
4.15),
• nakonec byla celá síť vyhlazena pomocí eliptického generátoru sítě a
uložena do souboru pro výpočet.
24
Preliminary version – 3. března 2014
Obrázek 4.9: Původní nestrukturovaná síť v okolí lopatky SE 1050.
25
Preliminary version – 3. března 2014
Obrázek 4.10: Izočáry Machova čísla získané na původní nestrukturované
síťi.
26
Preliminary version – 3. března 2014
Obrázek 4.11: Dvakrát adaptivně zjemněná síť v okolí lopatky SE 1050.
27
Preliminary version – 3. března 2014
Obrázek 4.12: Izočáry Machova čísla získané na dvakrát adaptivně zjemněné
nestrukturované síťi.
28
Preliminary version – 3. března 2014
Obrázek 4.13: Popis geometrie křídla v softwaru ICEM CFD.
Obrázek 4.14: Rozdělení oblasti na několik bloků v softwaru ICEM CFD.
29
Preliminary version – 3. března 2014
Obrázek 4.15: Vícebloková síť kolem křídla vytvořená v ICEM CFD.
30
Preliminary version – 3. března 2014
Literatura
[1] Rudolf Dvořák. Transsonické proudění. Academia Praha, 1986.
[2] J. Fořt, J. Fürst, K. Kozel, and P. Louda. Numerické metody řešení
proudových polí ii, 2003.
[3] Karel Kozel and Jiří Fürst. Numerické metody řešení problémů proudění
I. Skriptum ČVUT, srpen 2001. ISBN 80-01-02384-2.
[4] Karel Kozel, Jiří Fürst, and Petr Louda. Numerické metody řešení problémů proudění III. Skriptum ČVUT, srpen 2003.
[5] Joe F. Thompson, Bharat K. Soni, and Nigel P. Weatherill, editors.
Handbook of Grid Generation. CRC Press, 1999. ISBN 0-8493-2687-7.
31
Preliminary version – 3. března 2014

Podobné dokumenty

Broumovský informační měsíčník 9/2016

Broumovský informační měsíčník 9/2016 absolutní většinu z nich můžeme být hrdí. To nejsou ti, kteří by patřili k pohovkové mládeži. Ústřední místo bylo na Kampusu milosrdenství, kde v sobotu probíhala vigilie, po které se tento Kampus ...

Více

Electro-Voice - Audiopro sro

Electro-Voice - Audiopro sro tyto mikrofony lze s dobrými výsledky použít pro nazvučení kytarového aparátu – tedy pokud bude přenosová charakteristika konkrétního typu konvenovat vašim tvůrčím záměrům. Přesto bych dodal, že an...

Více

29 - Sekce neuromuskulárních chorob České neurologické

29 - Sekce neuromuskulárních chorob České neurologické Farmakoterapie neuropatické bolesti je i v současnosti neuspokojivá; signifikantní úlevy dosáhne pomocí farmakoterapie méně než polovina nemocných [32, 38, 6]. Jednotlivá doporučení zabývající se p...

Více

Úvod Motivační příklad komečního využití Postup uživatele

Úvod Motivační příklad komečního využití Postup uživatele Aktuální používaný algoritmus funguje následovně: 4 peeři, kteří mají nejlepší upload a jsou interested vůči mě jsou unchoked, tím se zaručí moje vysoká rychlost downloadu, tito jsou pak označeni j...

Více

Modelování proudění vody na měrném přelivu

Modelování proudění vody na měrném přelivu travní porost, tlející větve a pařezy, které zde zbyly po těžbě. Na povodí se jako půdní typy vyskytují především podzoly nebo kryptopodzoly s velkým zastoupením skeletu ve všech půdních horizontec...

Více

mini cabrio. ceník: červenec 2016

mini cabrio. ceník: červenec 2016 Personal Profile - uložení důležitých nastavení do paměti klíčku Sada nářadí

Více