Počítačová mechanika tekutin - České vysoké učení technické v Praze
Transkript
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
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 ...
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...
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...
Ú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...
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...
mini cabrio. ceník: červenec 2016
Personal Profile - uložení důležitých nastavení do paměti klíčku
Sada nářadí