Laskennallisen virtausmekaniikan ja lämmönsiirron jatkokurssi Timo Siikonen c 2014 by Aalto University School of Engineering Department of Applied Mechanics Sähkömiehentie 4 FIN-00076 Aalto Finland 1 Sisällys 1 Johdanto 5 1.1 Taustaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Virtausyhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Virtausyhtälöiden yksinkertaistettuja muotoja . . . . . . . . . . . . 10 1.4 Yhtälöiden ratkaisu . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.1 Tiheyspohjainen ratkaisu . . . . . . . . . . . . . . . . . . . 13 1.4.2 Painepohjainen ratkaisu . . . . . . . . . . . . . . . . . . . 15 1.5 Menetelmien tarkastelua . . . . . . . . . . . . . . . . . . . . . . . 18 1.6 Kurssin sisällöstä . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.7 Käytetyt yhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2 Virtausyhtälöiden ominaisuuksia 30 2.1 Navier–Stokes-yhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2 Primitiivimuodot ja vuovektorin Jacobin matriisi . . . . . . . . . . 31 2.3 Muunnokset konservatiivisten ja primitiivisuureiden välillä . . . . . 35 2.4 Ominaisvektorit ja Jacobin matriisin diagonalisointi . . . . . . . . . 36 2.5 Karakteristiset suureet ja niiden merkitys . . . . . . . . . . . . . . . 39 2.6 Karakteristikat ja reunaehdot . . . . . . . . . . . . . . . . . . . . . 42 2.7 Implisiittinen menetelmä Eulerin yhtälöillä . . . . . . . . . . . . . 47 2.8 Ajan suhteen tarkka laskenta . . . . . . . . . . . . . . . . . . . . . 53 2.9 Eulerin yhtälöiden tarkastelua . . . . . . . . . . . . . . . . . . . . 55 3 Ratkaisumenetelmien kertaus kontrollitilavuusmenetelmällä 59 4 Yksidimensioinen painekorjausmenetelmä 60 4.1 Taustaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2 4.2 Valmistava esimerkki . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.3 Painekorjausyhtälön ominaisuuksia . . . . . . . . . . . . . . . . . . 66 4.4 Skalaariyhtälön ratkaisu ja Patankarin säännöt . . . . . . . . . . . . 69 4.5 Yksidimensioiset virtausyhtälöt . . . . . . . . . . . . . . . . . . . . 73 4.6 Painekorjaus limitetyllä hilalla . . . . . . . . . . . . . . . . . . . . 76 5 Painekorjausmenetelmä tavanomaisella hilalla 87 5.1 Limitetyn hilan etuja . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.2 Konvektionopeuden interpolointitavat . . . . . . . . . . . . . . . . 89 5.3 Pintanopeuden tarkastelua . . . . . . . . . . . . . . . . . . . . . . 94 5.4 Yksidimensioinen menetelmä tavallisella hilalla . . . . . . . . . . . 96 5.5 Reunaehtojen käsittely . . . . . . . . . . . . . . . . . . . . . . . . 103 5.6 Yksinkertaistettu vaimennustermi . . . . . . . . . . . . . . . . . . 105 6 Monidimensioinen painekorjausmenetelmä 107 6.1 Yhtälöiden diskretointi . . . . . . . . . . . . . . . . . . . . . . . . 107 6.2 Fysikaaliset reunaehdot . . . . . . . . . . . . . . . . . . . . . . . . 117 6.3 Reunaehtojen käsittely . . . . . . . . . . . . . . . . . . . . . . . . 119 6.4 Alirelaksointitavat . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7 Lineaaristen yhtälöiden ratkaisumenetelmät 127 7.1 Yhtälöiden ratkaisutarve . . . . . . . . . . . . . . . . . . . . . . . 127 7.2 Fysikaalisen probleeman ratkaisu . . . . . . . . . . . . . . . . . . . 128 7.3 Suorat ratkaisutavat . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.4 7.3.1 Gaussin eliminaatio . . . . . . . . . . . . . . . . . . . . . . 131 7.3.2 LU-hajotelma . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.3.3 Tridiagonaaliset yhtälöt . . . . . . . . . . . . . . . . . . . . 133 Iteratiiviset menetelmät . . . . . . . . . . . . . . . . . . . . . . . . 134 7.4.1 Peruskäsitteitä . . . . . . . . . . . . . . . . . . . . . . . . 134 7.4.2 Konvergenssi ja spektraalisäde . . . . . . . . . . . . . . . . 135 7.4.3 Perusmenetelmiä . . . . . . . . . . . . . . . . . . . . . . . 137 7.4.4 Epätäydellinen LU-hajotelma: Stonen menetelmä . . . . . . 138 7.4.5 ADI ja muut ositusmenetelmät . . . . . . . . . . . . . . . . 139 7.4.6 Konjugaattigradienttimenetelmät . . . . . . . . . . . . . . . 140 3 7.5 Monihila-algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . 142 7.5.1 Peruskäsitteitä . . . . . . . . . . . . . . . . . . . . . . . . 142 7.5.2 Yksinkertainen esimerkki . . . . . . . . . . . . . . . . . . 144 7.5.3 Algebrallinen monihila-algoritmi yhtälöryhmille . . . . . . 146 7.6 Laskentaesimerkkejä . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.7 Loppupäätelmiä . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8 Virtausratkaisun tehostaminen 8.1 158 Rinnakkaistaminen . . . . . . . . . . . . . . . . . . . . . . . . . . 158 8.1.1 Rinnakkaistamistavat rakenteellisella ja rakenteettomalla hilalla158 8.1.2 Lohkorakenne . . . . . . . . . . . . . . . . . . . . . . . . 159 8.1.3 Laskennan tehostaminen rinnakkaistamalla . . . . . . . . . 161 8.1.4 Rinnakkaistaminen käyttäen viestinvälitystä . . . . . . . . . 164 8.1.5 Hilan jako osa-alueisiin . . . . . . . . . . . . . . . . . . . . 166 8.1.6 Rinnakkaistamisesta saavutetun hyödyn arviointi . . . . . . 168 8.2 Monihilamenetelmän käyttö . . . . . . . . . . . . . . . . . . . . . 171 8.3 Ratkaisun adaptiivisuus . . . . . . . . . . . . . . . . . . . . . . . . 177 9 Käyräviivainen laskentahila 183 9.1 Hilatyypit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.2 Hilangenerointi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.3 Nopeuskomponenttien valinta ja koordinaatistomuunnos . . . . . . 186 9.4 Kontrollitilavuusmenetelmä käyräviivaisella hilalla . . . . . . . . . 188 9.5 Painekorjaus käyräviivaisella hilalla . . . . . . . . . . . . . . . . . 198 9.6 Ohutkerrosapproksimaatio ja kiinteät pinnat . . . . . . . . . . . . . 202 10 Ajan suhteen tarkka laskenta 206 11 Turbulentin virtauksen laskenta 207 12 Virtauslaskennassa esille tulevia käsitteitä 208 12.1 Johdanto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 12.2 Geometristen suureiden laskenta . . . . . . . . . . . . . . . . . . . 208 12.2.1 Laskentatilavuuksien pinta-alavektoreiden laskeminen . . . 209 12.2.2 Tilavuuksien laskenta . . . . . . . . . . . . . . . . . . . . . 210 4 12.2.3 Tarkkuus . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 12.3 Voimien ja momentin laskenta . . . . . . . . . . . . . . . . . . . . 211 12.4 Paine- ja kitkakerroin . . . . . . . . . . . . . . . . . . . . . . . . . 215 12.5 Liikkuva laskentahila . . . . . . . . . . . . . . . . . . . . . . . . . 217 12.6 Pyörimisliike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 12.7 Nopeus- ja pyörteisyyskomponenttien sekä jännitystensorin peilaaminen221 13 Muita ratkaisumenetelmiä 227 13.1 Historiaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 13.2 Painekorjausyhtälön luonne . . . . . . . . . . . . . . . . . . . . . . 228 13.3 Painekorjausmenetelmät . . . . . . . . . . . . . . . . . . . . . . . 229 13.4 Viivästetyn korjauksen periaate . . . . . . . . . . . . . . . . . . . . 232 13.5 Implisiittinen Rhie-Chow interpolointi . . . . . . . . . . . . . . . . 233 13.6 Virtafunktio-pyörteisyys -menetelmä . . . . . . . . . . . . . . . . . 234 13.7 Näennäispuristuvuuskeino . . . . . . . . . . . . . . . . . . . . . . 235 13.8 Tiheyspohjaiset menetelmät . . . . . . . . . . . . . . . . . . . . . . 238 13.9 Muita lähestymistapoja . . . . . . . . . . . . . . . . . . . . . . . . 238 13.9.1 Epäjatkuva Galerkinin keino (discontinuos Galerkin method) 238 13.9.2 Hila-Boltzmann -menetelmät . . . . . . . . . . . . . . . . . 238 13.9.3 Sileä partikkelihydrodynamiikka (smoothed particle hydrodynamics)238 14 Virtausratkaisijat 240 14.1 Historiaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 14.2 Simulointiohjelman rakenne . . . . . . . . . . . . . . . . . . . . . 242 14.3 Katsaus ohjelmiin . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 14.3.1 PHOENICS . . . . . . . . . . . . . . . . . . . . . . . . . . 243 14.3.2 CFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 14.3.3 FLUENT . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 14.4 Lopuksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Hakemisto 246 5 1 Johdanto 1.1 Taustaa Laskennallisen virtausmekaniikan perusteissa on perehdytty kontrollitilavuusmenetelmän perusteisiin. Kurssilla on ollut esillä konvektio-diffuusioyhtälön ∂T + ∇ · V~ T = ∇ · α∇T + qT (1.1) ∂t ratkaisu eri muodoissaan. Sopivilla nopeuden V~ = u~i + v~j + w~k ja diffuusiokertoimen α sekä dimensioiden valinnalla saatiin esille erilaisia numeeriseen laskentaan liittyviä ongelmia. Lukuunottamatta yhtälöiden luokittelua varsinaiseen virtausyhtälöiden ratkaisuun ei paneuduttu ja paineen käsite ei ollut esillä. Tällä jatkokurssilla on tarkoitus tuoda esille varsinaisten virtausyhtälöiden ratkaisu painekorjausmenetelmällä. Virtausyhtälöiden ratkaisutavat voidaan jakaa paineja tiheyspohjaisiin menetelmiin, painekorjaus kuuluu ’painepohjaisiin’. Kurssilla käsitellään myös hieman tiheyspohjaisia ratkaisuja luvuissa 2.7 ja 13.7. Perusteissa oli esillä myös seuraava tärkeä periaate {numeriikka}∆T = {f ysiikka} (1.2) jossa ’f ysiikka’-osa sisältää yhtälöiden diskretoinnin ja ’numeriikka’-osa diskreettien yhtälöiden ratkaisun (fysiikalla ei tarkoiteta tässä yhteydessä ainoastaan turbulenssin tai muiden ilmiöiden mallintamista, vaan etupäässä yhtälöiden diskretointia). Peruskurssin avulla malliyhtälöön (1.1) liittyvä ’fysiikka’ on kohtalaisen hyvin hallittavissa. Numeriikasta oli esillä likimääräinen ositus, jolla voidaan tehokkaasti ratkaista monidimensioisia diskretoituja yhtälöitä, mutta joka ei ole ainoa vaihtoehto. Ainoa olennainen puuttuva seikka on juuri paineen lisääminen tuntemattomien joukkoon ja paineen ratkaiseminen. Paine voidaan ottaa huomioon numeriikkapuolella usealla tavalla, joista seuraavassa tullaan siis tarkemmin käymään läpi painekorjausmenetelmä, mutta myös muita vaihtoehtoja käsitellään lyhyesti. 1.1. TAUSTAA 6 Tällä kurssilla tullaan käyttämään etupäässä samantyyppisiä merkintöjä kuin peruskurssilla. Tästä seuraa kuitenkin eräitä ongelmia, kuten myöhemmin tullaan havaitsemaan. Pääsyynä on se, etteivät virtausmekaniikkaan liittyvät merkinnät ja käsitteistöt ole täysin standardeja. Nyt esillä tulevat olemaan virtausyhtälöt kokonaisuudessaan, jolloin suure T kuvaa erityisesti lämpötilaa, ei esimerkiksi konsentraatiota. Myös malliyhtälö (1.1) on approksimatiivinen ja edellyttää, probleemasta riippuen, erinäisiä seikkoja. Lämmönjohtavuusyhtälön tapauksessa tiheyden ρ ja ominaislämpökapasiteetin cp tulisi olla vakioita, jotta yhtälö (1.1) pätisi. Parempi muoto yleiselle skalaarisuureen φ säilymisyhtälölle on ∂ρφ + ∇ · ρV~ φ = ∇ · α∇φ + qφ ∂t (1.3) Yhtälö on säilymismuodossa, mikä on numeerisessa ratkaisussa edellytys kyseisen suureen φ globaalille säilymiselle. Mikäli yhtälössä purettaisiin derivaattoja auki, päädyttäisiin primitiivimuotoon. Differentiaaliyhtälö (1.3) voidaan integroida mielivaltaisen kokoisen tasealueen yli, jolloin saadaan integraalimuotoinen yhtälö ∂ ∂t Z V ρφdV + Z S ρ~n · V~ φdS = Z S α∇φ · ~ndS + Z V qφ dV (1.4) ~ = ~nS on tilavuutta rajaava pinta ja ~n = nx~i+ ny~j + nz~k on pinnan normaamissä S li. Tähän yhtälöön perustuu kontrollitilavuusmenetelmä. Kuten peruskurssilla todettiin, voidaan integraali lausua mielivaltaisen muotoisen tasealueen yli, jolloin menetelmä sallii monimutkaisten kappaleiden ohi tapahtuvan virtauksen kuvaamisen. Tasetilavuudet voivat myös olla muodoltaan esimerkiksi kolmioita (2D) tai tetraedrejä ja prismoja (3D). Viimeksi mainitut ovat yleistymässä virtausyhtälöiden ratkaisussa. Edellä mainitusta voidaan myös ajatella kontrollitilavuusdiskretoinnin muodostavan eräässä mielessä enemmän eräänlaisen strategian kuin varsinaisen ’menetelmän’. Erimuotoisilla tasetilavuuksilla eri diskretoinneilla päädytään hyvinkin erilaisiin ratkaisualgoritmeihin. Yhteinen piirre kaikille on globaali säilymisperiaate Vtot ∆φ = ∆t(Fsis − Fulos ) (1.5) missä F on suureen φ virta alueen pinnan läpi. Suure muuttuu siis aikayksikössä tasealueessa Vtot sen pinnan läpi siirtyvän määrän. Tasealue voi olla yksi laskentakoppi, koko laskenta-alue tai osa siitä. Virtausyhtälöt ovat epälineaarisia, joten tarvitaan yhtälön (1.2) mukaiseen linearisointiin perustuva iteraatio ennen kuin yhtälö 1.2. VIRTAUSYHTÄLÖT 7 (1.4) ja sen kautta tase (1.5) toteutuvat. Periaate on fysikaalisesti mielekäs ja käytännössä on havaittu juuri säilymisominaisuus useissa tapauksissa välttämättömäksi, jotta mielekäs numeerinen ratkaisu ylipäätänsä saavutettaisiin. Tälläkin kurssilla nojaudutaan kontrollitilavuusperiaatteeseen vaikka geometria olisikin yksinkertainen. Huomautettakoon vielä tässäkin yhteydessä, että on myös olemassa toimivia numeerisia menetelmiä, jotka eivät ole säilymismuotoisia. 1.2 Virtausyhtälöt Virtausmekaniikan kirjoissa esitetään virtausta kuvaavien yhtälöiden, jotka kuvaavat massan, liikemäärän ja energian säilymistä, johtotapoja. Yhtälöiden johtoon ei tarkasti puututa tässä yhteydessä. Todetaan vain, että syvälliseltä kannalta katsottuna johto on yllättävän hankala ja usein, erityisesti liikemääräyhtälön johtamisessa on joskus jopa suoranaisia virheitä tai oikaisuja, joiden kautta kuitenkin päädytään oikeaan lopputulokseen. Yhtälöt voidaan johtaa usealla tavalla. Kontrollitilavuus voi olla kiinteä tai nestepartikkelien mukana liikkuva (kts. kuva 1.1). Se voi olla myös äärellinen, jolloin päädytään integraalimuotoon tai infinitesimaalisen pieni, jolloin saadaan tuloksena differentiaaliyhtälö. Kaikilla eri tavoilla päädytään kuitenkin samaan lopputulokseen. Massan säilymisyhtälö on varsin helppo johtaa yleisestä säilymisperiaatteesta tilavuusalkiolle dV Z ∂ Z ρdV + ρ~n · V~ dS = 0 ∂t V S (1.6) Soveltamalla Gaussin lausetta toiseen suuntaan kuin yhtälölle (1.3) tehtiin, saadaan massan säilymiselle myös differentiaaliyhtälö ∂ρ + ∇ · ρV~ = 0 ∂t (1.7) On syytä jälleen todeta, ettei differentiaalimuotoa diskretointiprosessissa kontrollitilavuusperiaatteella tarvita, vaan diskretointi pohjautuu yhtälöön (1.6). Massan säilymisyhtälö voidaan myös johtaa differentiaaliselle alkiolle, jolloin päädytään ensin yhtälöön (1.7). Liikemääräyhtälön johto on varsin hankala. Selkeä esitystapa kaikkien virtausyhtälöiden johtamisesta löytyy John D. Andersonin kirjasta Computational Fluid 1.2. VIRTAUSYHTÄLÖT 8 Kontrollipinta S S Kontrollitilavuus V V (a) dV T i l a v u u sV d ( b) Kuva 1.1: Virtauksen mallinnus. (a) äärellinen kontrollitilavuus, (b) infinitesimaalisen pieni kontrollitilavuus. Vasemmalla tasetilavuudet ovat kiinteitä, oikealla virtauksen mukana liikkuvia. Dynamics. Kyseisessä kirjassa ei kuitenkaan puututa kitkatermin johtamiseen, joka löytyy puolestaan esimerkiksi Whiten Viscous Fluid Flow-kirjasta. Liikemäärän säilymisestä päädytään seuraavaan yhtälöön: ∂ ∂t Z V ρV~ dV + Z S ρV~ V~ · ~ndS = X f~ (1.8) missä oikealla puolella ovat tilavuusalkioon kohdistuvat voimat. Nämä voivat olla pintavoimia ja tilavuusvoimia. Edellisiä kuvaa jännitystensori 2 ∂uk )δij + 2µDij Tij = −(p + µ 3 ∂xk (1.9) missä p on paine, µ dynaaminen viskositeetti, δij on Kroneckerin deltasymboli ja venymänopeustensori on 1 ∂ui ∂uj + ) (1.10) Dij = ( 2 ∂xj ∂xi Yleensä venymänopeustensoria merkitään kirjallisuudessa ǫij :llä tai Sij :llä ja vastaavasti jännitystensoria τij :llä tai σij :llä, tässä on noudatettu Ferziger-Pericin tapaa. Venymänopeustensori ja pyörteisyystensori 1 ∂ui ∂uj Ωij = ( − ) 2 ∂xj ∂xi (1.11) ovat usein käytössä olevia käsitteitä esimerkiksi turbulenssimallien yhteydessä. 1.2. VIRTAUSYHTÄLÖT 9 Tilavuusvoimia voivat olla esimerkiksi gravitaatio- tai sähkömagneettiset voimat. Joskus myös koordinaatistomuunnoksesta aiheutuu voiman kaltaisia termejä kuten keskipakovoima ja Coriolisvoima. Merkitsemällä tilavuusvoimaa ~b:llä saadaan liikemääräyhtälöksi ∂ ∂t Z V ρV~ dV + Z S ρV~ V~ · ~ndS = Z S T · ~ndS + Z V ρ~bdV (1.12) mikä voidaan Gaussin lauseen avulla muuttaa differentiaaliyhtälöksi ∂ρV~ + ∇ · ρV~ V~ = ∇ · T + ρ~b ∂t (1.13) Yhtälö on saanut nimensä kehittäjiensä Navierin (1785-1836) ja Stokesin (18191903) mukaan. Se on vektorimuotoinen, joten oikeanpuolen divergenssioperaattorin ja tensorin T tulosta tulee vektori. Yhdelle karteesiselle nopeuskomponentille ui saadaan yhtälöstä (1.12) ∂ ∂t Z V ρui dV + Z S ρui V~ · ~ndS = Z S ~ti · ~ndS + Z V ρbi dV (1.14) missä ~ti = µ( ∂ui + ∂uj )i~j − (p + 2 µ ∂uk )~ii ∂xj ∂xi 3 ∂xk (1.15) ja ~ii on karteesinen yksikkövektori (= ~i, ~j, ~k kun alaindeksi i = 1, 2, 3). Yleensä paine erotetaan viskooseista jännityksistä. Esimerkiksi x-suuntaiselle liikemäärälle saadaan yhtälö Z Z ∂ Z ~ ρudV + ρuV · ~ndS + pnx dS = ∂t V S S Z Z ∂u ∂v ∂u ∂w 2 ∂u ~ + ny + ny + nz + nz − nx ∇ · V )dS + ρbx dV µ(2nx ∂x ∂y ∂x ∂z ∂x 3 V S (1.16) Kuten havaitaan on kitkatermi varsin pitkä ja sisältää nopeuksien derivaattoja tasealueen reunoilla. Näiden numeeriseen määritykseen palataan jatkossa. Yhtälö on lausuttu karteesisten nopeuskomponenttien avulla. Numeerisessa laskennassa ei ole tarvetta muunlaisten nopeuskomponenttien käyttöön eikä geometrisiin koordinaatistomuunnoksiin (usein kannattaa kuitenkin tarkastella asioita liikkuvassa karteesisessa koordinaatistossa). 1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA 10 Energiayhtälön johtaminen tarkasti on yhtä hankalaa kuin liikemääräyhtälönkin. Vaikeutena on lisäksi se, että energiayhtälön termit saattavat olla hyvinkin eri suuruisia eri tilanteissa ja usein kannattaa laskentatarkkuuden parantamiseksi pudottaa turhia pieniä termejä pois. Integraalimuotoinen yhtälö on Z Z Z Z ∂ Z ~ ~ ρEdV + ρE V ·~ndS = k∇T ·~ndS + T · V ·~ndS + (ρ~b · V~ + q ′′′ )dV ∂t V S S S V (1.17) Tässä E = e + V 2 /2 on kokonaisenergia, e ominaissisäenergia, k lämmönjohtavuus ja q ′′′ tilavuutta kohden kehittyvä lämpö. Yhtälön oikean puolen termit kuvaavat lämmönjohtumista, pintavoimien tekemää työtä sekä tilavuusvoimien tekemää työtä ja lämmönkehitystä. Kokoonpuristumattomalla virtauksella kineettinen energia ρV 2 /2 on yleensä pieni ja saatetaan jättää pois taseesta. Toisaalta aidosti kokoonpuristumattomassa tapauksessa (joka on tietysti idealisointi), sisäenergia ei ole määritelty ja vain kineettinen energia on jäljellä. Tällöin energiayhtälö redusoituu kineettisen energian yhtälöksi, joka ei ole itsenäinen yhtälö, vaan on johdettavissa liikemääräyhtälön avulla. Vastaava muista yhtälöistä riippuva yhtälö on johdettavissa kulmaliikemäärälle, tosin vain integraalimuodossa. Yleensä paine erotetaan tässäkin muista pintavoimista ja yhdistetään energian konvektiovuohon Z Z Z Z Z ∂ ~ + q ′′′ )dV ~ ~ ρEdV + ρH V ·~ndS = k∇T ·~ndS + τ · V ·~ndS + (ρ~b · V ∂t V V S S S (1.18) missä H = E + p/ρ on kokonaisentalpia. Tässä on Ferziger-Pericistä poiketen merkitty viskooseja jännityksiä kuvaavaa tensoria τ :lla, mikä on ehkä kaikkein yleisin tapa. Nyt siis Tij = τij − pδij . Usein varsinkin painekorjausmenetelmän yhteydessä myös aikaderivaatta kirjoitetaan kokonaisentalpian tai entalpian avulla, jolloin yhtä- lön oikealle puolelle lisätään paineen derivaatta ajan suhteen. Energiayhtälö sisältää myös uuden muuttujan, lämpötilan, joka tulee iteroiduksi tilayhtälön kautta. Edellyttäen, että kineettinen energia on pieni ja ominaislämpökapasiteetti vakio, saadaan lämpötilalle suoraan kirjoitetuksi konvektio-diffuusioyhtälö, mikä tietysti helpottaa laskenta-algoritmin laadintaa. 1.3 Virtausyhtälöiden yksinkertaistettuja muotoja Virtausyhtälöitä voidaan useissa tapauksissa yksinkertaistaa, jolloin niiden matemaattinen luonne muuttuu. Täydelliset yhtälöt muodostavat vaillinaisesti paraboli- 1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA 11 sen ryhmän. Jatkuvuusyhtälö on hyperbolinen, liikemäärä- ja energiayhtälöt parabolista tyyppiä. Tasapainotilan virtauksen tyyppi riippuu nopeusalueesta. Voidaan toisaalta todeta, että tasapainotilan virtaus esiintyy periaatteessa vain laminaarissa tilanteessa ja käytännön virtaukset ovat enemmän tai vähemmän turbulentteja s.o. ajasta riippuvia. Virtausyhtälöiden eri termien merkitsevyydestä saa paremman kuvan kirjoittamalla yhtälöt dimensiottomaan muotoon (kts. Ferziger-Peric). Tässä yhteydessä tärkein approksimaatio on ρ = vakio. Tällöin jatkuvuusyhtälöstä seuraa ∇ · V~ = 0 (1.19) Tämä yhteys on muista yhtälöistä poikkeava. Aikaderivaattaa ei esiinny ollenkaan ja nopeus ei ole samassa asemassa kuin muiden yhtälöiden vuo. Yhteys (1.19) onkin sanan varsinaisessa merkityksessä ’jatkuvuusyhtälö’. Tähän muotoon perustuvassa numeerisessa ratkaisussa yhtälöllä on muista yhtälöistä poikkeava merkitys. Se on enemmän side-ehto (constraint) kuin varsinainen yhtälö. Muita yhtälöitä siis ratkaistaan siten, että ehto (1.19) on voimassa. Liikemääräyhtälön jännitystermistä (1.15) putoaa termi ∂uj /∂xj = ∇ · V~ pois. Yhtälöä voidaan vielä yksinkertaistaa olettamalla virtaus isotermiseksi, jolloin vis- kositeetti on likimain vakio (viskositeetti riippuu etupäässä lämpötilasta). Tällöin saadaan yhtälön (1.16) oikean puolen integraalista Z ∂u ∂v ∂u ∂w ∂u + ny + ny + nz + nz )dS ∂x ∂y ∂x ∂z ∂x S Z Z ∂u ∂u ∂u ∂v ∂w ∂u µ(nx + ny + nz )dS + µ(nx + ny + nz )dS ∂x ∂y ∂z ∂x ∂xZ ∂x S S Z ∂uj ~ ij · ~ndS µ ∇u · ~ndS + µ Z S Z S ∂x ∂uj ~ µ ∇u · ~ndS + µ ∇ · ij dV ∂x SZ VZ ∂ ∂uj µ ∇u · ~ndS + µ dV S V ∂xj ∂x Z Z ∂ ∂uj dV µ ∇u · ~ndS + µ S V ∂x ∂xj µ(2nx Z | µ ∇u · ~ndS = µ S Z V {z =0 } ∇2 udV = = = = = = (1.20) missä oletusten µ = vakio ja ∇· V~ = ∂uj /∂xj = 0 lisäksi käytettiin Gaussin lauset- ta ja vaihdettiin derivoimisjärjestys. Sijoittamalla tämä yhtälöön (1.16) ja jakamalla 1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA 12 vakiotiheydellä saadaan x-suuntaisen liikemäärän yhtälöksi Z ∂ Z 1Z ~ udV + uV · ~ndS + pnx dS = ∂t ρ S Z V S Z ∂u ∂u ∂u + ny + nz )dS + bx dV ν (nx ∂x ∂y ∂z V S (1.21) missä ν = µ/ρ on kinemaattinen viskositeetti. Soveltamalla jälleen Gaussin lausetta yhtälössä (1.21) ja vastaavasti muille liikemääräyhtälön komponenteille saadaan vektorimuotoinen differentiaaliyhtälö D V~ 1 + ∇p = ~b + ν∇2 V Dt ρ (1.22) Tämä on liikemääräyhtälö kirjoitettuna yksinkertaisimmassa muodossaan. Yllä merkintä D/Dt on materiaali- eli substantiaaliderivaatta, joka määritellään Dφ ∂φ ~ = + V · ∇φ Dt ∂t (1.23) Materiaaliderivaatta on muodollisesti sama kuin suureen φ(xi , t) kokonaisderivaatta ajan suhteen. Todetaan jälleen kerran, että yhtälö (1.22) on primitiivimuodossa eikä siihen perustuva diskretointi ilman erikoistoimenpiteitä säilyttäisi liikemäärää. Tämän vuoksi numeerinen ratkaisu jatkossa perustuukin yhtälöön (1.21) tai sen hieman monimutkaisempaan versioon, jossa oletetaan, että ρ 6= vakio. Kitkatermiä voi- daan näet joskus approksimoida yllä olevalla tavalla vaikka neste ei olisikaan täysin kokoonpuristumatonta ja isotermistä. Tämä johtuu siitä, että termit joihin sisältyy ∇ · V~ , ja jotka pudotettiin pois yhtälöstä (1.21), ovat kokemuksen mukaan pieniä verrattuina muihin termeihin silloinkin, kun ∇ · V~ 6= 0. Erot tulevat merkittävämmiksi, kun virtaukseen liittyvä Machin luku Ma = |V |/c, missä c on äänen nopeus, kasvaa. Tällöin virtaus muuttuu kokoonpuristuvaksi ja paine, nopeus ja tiheys riippuvat toisistaan monimutkaisemmalla tavalla kuin alhaisella nopeudella. Virtauksen fysikaalinen luonne ei siis muutu, vaikka tiheys lämpötilariippuvuuden vuoksi olisikin muuttuva. Selkeä muutos tapahtuu vasta, kun Ma kasvaa tienoille 0,1...0,3. Tämä raja on epämääräinen ja riippuu tapauksesta. Ns. klassisena rajana virtausmekaniikan kirjoissa pidetään arvoa Ma ≈ 0,3, mutta puristuvuusefektit saattavat nousta merkittäviksi jo tätä pienemmillä Machin luvun arvoilla. Kuitenkin, kun ollaan tietyn rajan alapuolella, edellä esitetty virtausyhtälöiden approksimaatio pätee hyvin. Ilmalla meren pinnan tasolla c ≈ 340 m/s ja vedellä c ≈1,3 km/s, joten 1.4. YHTÄLÖIDEN RATKAISU 13 yhtälöiden (1.19) ja (1.22) tarkkuus on riittävä moniin käytännön virtaustehtäviin. Poikkeuksen muodostavat aerodynamiikka ja eräät ajasta riippuvat tilanteet. Joskus yhtälöitä voidaan yksinkertaistaa myös pudottamalla koko kitkatermi pois. Usein näitä kitkattoman virtauksen ns. Eulerin yhtälöitä käytetään juuri aerodynamiikassa, mutta alhaisella nopeusalueella voidaan vielä tehdä lisäoletus ρ = vakio. Kitkattoman virtauksen approksimaatio on sitä parempi, mitä suurempi on tilanteeseen liittyvä globaali Reynoldsin luku. Tämä nähdään hyvin dimensiottomista yhtälöistä. Toinen ääritapaus on Re << 1, jolloin liikemääräyhtälöstä voidaan konvektiotermi pudottaa muihin termeihin verrattuna pienenä pois. Jos lisäksi tiheys ja viskositeetti ovat vakioita, saadaan ns. Stokesin yhtälöt, joiden ratkaiseminen on suhteellisen helppoa. Tämä aiheutuu siitä, että numeeriselta kannalta suurin ongelma liittyy konvektiotermin aiheuttamaan liikemääräyhtälön epälineaarisuuteen. Muita usein käytettyjä virtausyhtälöiden approksimaatioita ovat nopeuspotentiaalin käyttö ja rajakerrosyhtälöt. 1.4 Yhtälöiden ratkaisu 1.4.1 Tiheyspohjainen ratkaisu Virtausyhtälöiden ratkaiseminen on erittäin hankala tehtävä. Edellä on esitetty yhteensä viisi yhtälöä. Massansäilymisyhtälö, liikemääräyhtälö, jolla on kolme komponenttia ja energiayhtälö. Yhtälöissä on kuitenkin yhdeksän tuntematonta suuretta ρ, p, e, T, u, v, w, µ, k. Näistä viskositeetti ja lämmönjohtavuus ovat virtaavan aineen materiaaliominaisuuksia. Tarvitaan siis vielä kaksi yhtälöä, jotta yhtälöryhmä ratkeaisi. Lisäehdot saadaan termodynamiikan avulla, josta tiedetään kahden tilasuureen määräävän minkä tahansa kolmannen suureen arvon. Yhteyttä nimitetään tilayhtälöksi ja suoraviivaisin - vaikkei aina paras - valinta on p = p(ρ, e) T = T (ρ, e) (1.24) Jos virtauksessa tapahtuu kemiallisia reaktioita, tilayhtälöstä tulee monimutkaisempi. Palauttamalla mieleen edellisessä kappaleessa esitetyt yhtälöt, on mahdollista konstruoida niiden suoraviivainen ratkaisu: Integroidaan ajan suhteen aika-askel 1.4. YHTÄLÖIDEN RATKAISU 14 kerrallaan kaikkia viittä yhtälöä, jolloin saadaan ratkaistuksi ρ, ρV~ ja ρE. Jakamalla liikemäärä tiheydellä saadaan nopeuskomponentit ja pienellä manipuloinnilla ominaissisäenergia e. Tämän jälkeen tilayhtälön avulla voidaan paine ja lämpötila ratkaista ja edetä seuraavalle ajanhetkelle. Käyttämällä implisiittistä menetelmää ja peruskurssilla opittuja tapoja, ratkaisua saadaan huomattavasti nopeutetuksi eksplisiittisestä aikaintegroinnista. Tasapainotila, mikäli sellainen löytyy, saavutetaan integroimalla yhtälöitä ajan suhteen. Ratkaisutapaa nimitetään tiheyspohjaiseksi. Edellä kuvattu suoraviivainen ratkaisu toimii, jos virtaus on kokoonpuristuvaa, ts. Machin luku on ainakin suurempi kuin 0,1. Kokemus on osoittanut, että kun nopeus pienenee, menetelmän konvergenssi alkaa huonontua ja hitaille virtauksille ei konvergoitunutta tulosta yleensä saada ollenkaan. Selkeää syytä konvergenssin huononemiseen ei ole esitetty. Kun Ma → 0, tiheyden muutokset myös pienenevät ja paineen määritys tilayhtälön kautta tulee epätarkaksi. Periaatteessa tämä pitäisi ol- la korjattavissa käyttämällä laskennassa kaksinkertaista tarkkuutta, mutta tilanne ei sillä korjaannu. Viime aikoina on esitetty paljonkin menetelmiä alhaisen Machin luvun virtaukselle. Ainakin yksidimensioisessa tapauksessa on osoitettu, että muotoilemalla reunaehdot sopivasti, aikaintegrointimenettely toimii hyvinkin alhaiselle Machin luvulle. Konvergenssin heikkenemisellä on selvästi jotain tekemistä karakterististen nopeuksien, joihin palataan myöhemmin, sekä sisään- ja ulosvirtausreunojen keskinäisellä vuorovaikutuksella. Tähän vuorovaikutukseen karakteristiset nopeudet vaikuttavat. Nyrkkisääntönä voidaan pitää, että kun suurimman ja pienimmän karakteristisen nopeuden suhde on yli kymmenen, aikaintegrointimenetelmän konvergenssi huononee. Varma tapa parantaa konvergenssia on karakterististen nopeuksien manipuloiminen. Tämä voidaan tehdä pohjustamalla (preconditioning) virtausyhtälöitä. Nämä voidaan kirjoittaa vektorimuotoon ∂U ∂F ∂G ∂H + + + =0 ∂t ∂x ∂y ∂z (1.25) missä U = (ρ, ρu, ρv, ρw, ρE)T on ratkaistavien konservatiivisten suureiden muodostama vektori ja F, G, H ovat vuovektoreita x, y, z-suunnissa. Erityisesti kokoonpuristumattoman virtauksen tapauksessa käytetään ratkaisualgoritmissa primitiivisuureita, jotka voidaan valita usealla tavalla. Yleisimmin käytetty valinta on ehkä u = (p, u, v, w, T ). Ominaisarvojen manipulointiin riittää lisätä yhtälöön näennäi- 1.4. YHTÄLÖIDEN RATKAISU 15 saikaderivaattatermi Ap ∂u ∂U(u) ∂F(u) ∂G(u) ∂H(u) + + + + =0 ∂τ ∂t ∂x ∂y ∂z (1.26) missä τ on näennäisaika ja Ap on sopivasti valittu Jacobin matriisi. Tässä tavassa varsinainen aikaderivaatta, mikäli sitä edes tarvitaan, käsitellään lähdeterminä ja integrointi tapahtuu suuren τ suhteen. Uudella Jacobin matriisilla manipuloidaan karakteristisia nopeuksia ja saavutetaan hyvä konvergenssi. Menetelmä on kuvattu hyvin Tannehill-Anderson-Pletcherin kirjassa. Yllä kuvattu konvergenssin parannuskeino on melko uusi eikä se ole kovin laajalle levinnyt. Menetelmää nimitetään tiheyspohjaiseksi, vaikka siinä tiheys voikin olla vakio eikä jatkuvuusyhtälö olen ilman lisätermiä integroitavissa ajan suhteen. 1.4.2 Painepohjainen ratkaisu Numeeristen ratkaisujen kehityshistorian aamuhämärissä alhaisen Machin luvun virtauksen simulointi ryhdyttiin perustamaan täydellisten yhtälöiden sijaan yhtälöihin (1.19) ja (1.22), siis oletukseen ρ = vakio. Paitsi, että yhtälöt näyttävät yksinkertaisemmilta, niihin liittyy erityisesti eksplisiittisessä ratkaisumaailmassa selkeä etu. Karakteristisia nopeuksia on vain yksi λ = u (yksidimensioisessa tilanteessa). Täydellisillä virtausyhtälöillä näitä nopeuksia on kolme λ1 = u ja λ2,3 = u±c. Kun virtausnopeus pienenee äänen nopeuteen verrattuna, nähdään edellä mainittu ominaisarvojen suhteiden epäedullinen kehitys. Lisäksi eksplisiittisellä aikaintegroinnilla Courantin kriteeri, joka määrittää aika-askeleen pituuden on ∆t|λmax | ≤1 ∆x (1.27) Peruskurssin yhteydessä konvektioyhtälöllä ominaisarvo λ oli aina nopeus. Nyt oletuksella ρ = vakio päästään tähän samaan ominaisarvoon, joka esimerkiksi vedellä saattaa olla kaksi dekadia pienempi kuin täydellisiin yhtälöihin perustuva ominaisarvo, joka sisältää äänen nopeuden. Tällä seikalla oli huomattava merkitys aikana, jolloin ratkaisut olivat käytännössä aina eksplisiittisiä. Ratkaisumenetelmiä ryhdyttiin kehittämään yhtälöille (1.19) ja (1.22) ja samalla eri nopeusalueiden ratkaisumaailmat erkanivat toisistaan niin paljon, että niiden asiantuntijatkaan eivät tunnu täysin puhuvan samaa kieltä. Useat merkintätavat ja nimitykset ovat erilaistuneet. 1.4. YHTÄLÖIDEN RATKAISU 16 Esimerkkinä voidaan mainita malliyhtälö (1.3), jossa Ferziger-Peric systemaattisesti käyttää diffuusiokertoimena Γ:aa. Peruskurssilla oli puhetta laskentatilavuuteen referoidusta Reynoldsin luvusta, joka malliyhtälön tapauksessa itse asiassa onkin Peclet:n luku. Virtausratkaisussa tärkein yhtälö on liikemääräyhtälö, jolloin diffuusiota kuvaava dimensioton suure on nimetty Reynoldsin mukaan. Tällä kurssilla käytetään CFD-kirjoista (Fletcher, Hirsch, Tannehill-Anderson-Pletcher) peräisin olevia merkintöjä ja annetaan niille rinnakkaistapa Ferziger-Peric:in mukaan. Eräissä kohden käytetään painekorjausmenetelmän yhteydessä täysin vakiintuneita merkintöjä, kuten ns. ’ilmansuuntia’. Ongelmaksi alhaisella Machin luvulla tulee paineen määritys. Liikemääräyhtälöistä voitaisiin periaatteessa ratkaista nopeudet, jos paine tunnettaisiin. Tilayhtälöä ei voida käyttää, koska sellaista ei aina edes ole. Ainoaksi mahdollisuudeksi jää siis jatkuvuusyhtälön ∇ · V~ käyttö, mikä ei ole täysin triviaalia. Vuosien varrella mene- telmiä on kuitenkin esitetty useita ja niiden perusteet tulevat tällä kurssilla esille. Ilmeisesti ensimmäinen todella toimiva tapa oli eliminoida paine pois yhtälöistä (1.19) ja (1.21). Tämä käy päinsä uusien muuttujien virtafunktion ψ ja pyörteisyyden ~ = ∇ × V~ Ω (1.28) avulla (usein pyörteisyyttä merkitään myös pienellä omegalla). Pyörteisyysvektori määrittelee myös pyörteisyystensorin (1.11) komponentit. Kaksidimensioisessa tapauksessa on helppo jatkuvuus- ja liikemääräyhtälöiden avulla johtaa ajasta ja paikasta riippuva yhtälö pyörteisyyden itseisarvolle ja toinen ns. Poisson-yhtälö virtafunktiolle. Virtafunktion avulla saadaan nopeuskomponentit. Paine ei ratkaisussa esiinny ollenkaan. Jos sitä tarvitaan, voidaan sille laatia erillinen, suhteellisen hankalasti ratkaistava yhtälö. Virtafunktio-pyörteisyysmenetelmä oli aikaisemmin niin yleinen, että 70-luvun alussa ilmestyneessä Roachen klassisessa Computational Fluid Dynamics-kirjassa pyörteisyysyhtälöä käytetään malliyhtälönä, jolle erilaisia diskretointeja esitetään. Menetelmää käytetään ja kehitetään edelleen, vaikka se on hankala kolmidimensioisessa tapauksessa. Viime vuosisadan lopulla yleistyi myös ns. näennäispuristuvuuskeinon (artificial compressibility method) käyttö. Siinä jatkuvuusyhtälöön lisätään aikaderi- 1.4. YHTÄLÖIDEN RATKAISU 17 vaatta 1 ∂p + ∇ · V~ = 0 β ∂τ (1.29) Tällä tavoin jatkuvuusyhtälö muuttuu ’oikeaksi’ yhtälöksi, josta paine voidaan integroida yhdessä liikemääräyhtälöiden nopeuksien kanssa. Temppu on sallittua tasapainotilan virtaukselle, koska tasapainotilassa aikaderivaattatermi häviää ja ratkaisuksi tulee kokoonpuristumattoman virtauksen yhtälöt. Ajasta riippuva tilanne voidaan ratkaista lisäämällä oikea aikaderivaatta lähdeterminä ja pseudointegroimalla aika-askeleen sisällä. Menetelmä on selvästikin läheistä sukua matriisin pohjustamiskeinolle (1.26). Itse asiassa ero tulee vain siitä, että yhtälössä (1.26) oletetaan käytettäväksi täydellisiä virtausyhtälöitä. Soveltamalla näennäispuristuvuusmenetelmää tapaukselle ρ 6= vakio, päädytään varsin samanlaiseen formalismiin kuin matriisin pohjustamis -menettelyllä, joka on itse asiassa huomattavasti vähemmän käytetty. Näennäispuristuvuuskeinon esitti Chorin jo vuonna 1968, mutta se- kin yleistyi vasta viime vuosituhannen lopulla. Motivaationa oli saada erityisesti aerodynaamisiin sovelluksiin kehitettyjä ohjelmia toimimaan myös kokoonpuristumattomassa tapauksessa tai alhaisella Machin luvulla. Näennäispuristuvuuskeino on tavallaan tiheyspohjainen menetelmä, mutta kuten myöhemmin tulee esille, se voidaan tulkita myös yksinkertaiseksi painekorjausmenetelmäksi. Chorinin menetelmä on painekorjausmenetelmistä poikkeava esimerkki varhaisesta primitiivisuureiden käytöstä. Tässä yhteydessä primitiivisuureilla viitataan erityisesti paineeseen ja nopeuksiin, kun aiemmin ns. standardiratkaisu pohjautui virtafunktioon ja pyörteisyyteen. Paineen määräytyminen primitiivisuureiden avulla säilyi pitkään ongelmana, kunnes hieman Chorinia aiemmin, vuonna 1965, Harlow ja Welch Los Alamosin laboratoriosta esittivät marker and cell -menetelmän (MAC), jota voidaan pitää kaikkien varsinaisten painepohjaisten menetelmien esikuvana. Menetelmässä otettiin käyttöön ns. limitetty hila ja paine ratkaistiin Poissonyhtälöstä. Painepohjaisissa menetelmissä voidaan ratkaista joko suoraan painetta tai paineen muutosta, tehdään siis ’paienkorjaus’. Tällä kurssilla keskitytään painekorjausmenetelmän ominaisuuksiin. Muihin ratkaisumenetelmiin palataan vielä luvussa 13. 1.5. MENETELMIEN TARKASTELUA 18 1.5 Menetelmien tarkastelua Limitetyn hilan myötä eri nopeusalueiden ratkaisumenetelmät lähtivät primitiivisuureillakin eri teilleen. Implisiittisen menetelmän sisällä yleensä käytetään sopivasti valittuja primitiivisuureita, mutta lopullinen ratkaisuvektorin muutos on aina konservatiivisten suureiden avulla muodossa ∆U. Paine ratkaistaan tämän jälkeen tilayhtälöstä. Painepohjaisilla menetelmillä ratkaistaan yleensä primitiivisuureita, joskus liikemäärän osalta myös konservatiivisia. On syytä muistaa, että ratkaistavien suureiden valinnalla ei ole mitään tekemistä säilymisominaisuuden kanssa. Säilymisominaisuus pohjautuu yhtälön (1.2) oikean puolen diskretointiin. Vasemmalla puolella numeriikka-osassa voidaan käyttää mitä tahansa sopivia muuttujia. Kuten aiemmin todettiin eri kehityssuunnat ovat aikaansaaneet tiettyjä eroja yhtälöiden esittämisformalismissa ja myös menetelmien kehityshistoriassa. Aerodynamiikassa pyritään laskemaan kappaleeseen kohdistuvia voimia ja niiden osalta on oleellisen tärkeää, että kappaleen muoto on oikein. Tällöin on aluksi luovuttiin Navier–Stokes-yhtälöiden käytöstä ja sovellettiin kitkattoman virtauksen teoriaa ja siihen liittyviä ns. paneelimenetelmiä. Analyysiin voidaan yhdistää joko erikseen tai kiinteänä osana rajakerrosyhtälöiden ratkaisu, jolloin saadaan myös kappaleeseen vaikuttava kitkavoima. Tämä laskentatapa on edelleen käytössä lentokoneiden suunnittelussa nopeutensa vuoksi. Navier–Stokes-yhtälöiden käyttö oli huomattavan suppeaa eikä niitä aiemmin käytetty suunnittelussa. Vasta ns. supertietokoneiden (Cray-1 vuonna 1976) myötä laskentaresurssit olivat sillä tasolla, että Navier–Stokes-pohjaiseen virtausratkaisuun ryhdyttiin kiinnittämään enemmän huomiota. Ratkaisumenetelmät kehittyivät implisiittisiksi (Beam ja Warming 1978) ja niiden tehoa edelleen parannettiin monihila-algoritmin avulla (A. Jameson 1984). Myöhemmin otettiin käyttöön länsimaissa uusi vuon laskentatapa, josta käytetään nimitystä vuovektorin ositusmenetelmä (flux-vector splitting, Bram van Leer 1982) ja sille läheistä sukua oleva approksimatiivinen Riemann-ratkaisu (myös flux-difference splitting, P. Roe 1981). Kummatkin menettelyt pohjautuvat venäläisen S. K. Godunovin 1959 esittämään Riemann-ratkaisuun perustuvaan vuon laskentaan. Uusien menetelmien ja jatkuvasti kehittyvien supertietokoneiden myötä arveltiin virtausratkaisun 80-luvun taitteessa olevan hyvinkin pian suunnittelussa vaa- 1.5. MENETELMIEN TARKASTELUA 19 ditulla tasolla. Käytännön virtauksia ei voida kuitenkaan vielä ratkoa turbulentissa tapauksessa ajan suhteen tarkasti, vaan käytetään ns. Reynolds-keskiarvotettuja yhtälöitä, joita varten tarvitaan turbulenssin kuvausta varten erillinen turbulenssimalli. Aerodynaamisissa sovelluksissa ajatuksena oli käyttää aiemmin rajakerrosyhtälöiden yhteydessä käytettyjä yksinkertaisia ns. algebrallisia malleja. Vähitellen selvisi, ettei virtaus ole ratkaistavissa pelkällä numeron murskauksella, ainakaan nykyisellä tietokoneiden teholla. Algebralliset mallit eivät toimineetkaan monimutkaisissa tilanteissa ja erityisen heikosti ne toimivat tapauksissa, joissa virtaus irtoaa pinnalta. CFD:n perusongelma onkin siirtynyt lähinnä turbulenssin kuvaamisen tutkimiseen. Myöhemmin aerodynamiikassakin on otettu käyttöön monimutkaisempia malleja, joista tunnetuin on k − ǫ-malli. Lisäksi sinänsä tehokkaita koodeja on modifioitu aiemmin esitetyillä tavoilla kokoonpuristumattomien virtauksien laskentaan. Unel- ma turbulenssin kuvauksen selvittämisestä numeron murskauksella on kokemassa renessanssia tietokoneiden lähes käsittämättömän kapasiteetin kasvun myötä. Suurimpia toiveita asetetaan ns. isojen pyörteiden menetelmään, jossa osa turbulenssin spektristä kuvataan ajasta riippuvana ja vain osa mallinnetaan. Myös Navier–Stokes yhtälöiden suoraa ratkaisua ilman keskiarvottamista voidaan käyttää alhaisilla Reynoldsin luvuilla (Re < 105 ). Kokoonpuristumattoman virtauksen ratkaisuja ryhdyttiin soveltamaan erilaisten teollisuusprosessien kuvaukseen ja tärkeä osa-alue oli lämmönsiirto. Ratkaisumenetelmien raportoinnissa keskeinen foorumi on ollut Numerical Heat Transfer -lehti. CFD-termi on tällä alueella yleistynyt vasta 90-luvulla, sen liityttyä aiemmin lähinnä supertietokoneilla tehtyihin aerodynaamisiin simulointeihin. Yleensä teollisuusprosessien simuloinnissa tavoitteena ei ole ollut saada selville rakenteisiin vaikuttavia voimia, vaan virtausjakautuma ja virtauksen linkittyminen erilaisiin prosesseihin lähinnä turbulenssin aika- ja pituusskaalojen kautta. Tämän vuoksi heti aluksi kiinnitettiin erityistä huomiota turbulenssin mallinnukseen. Ns. kaksi-yhtälömalleja oli esitetty jo aiemmin (Kolmogorov 1942), mutta virtaussimulointien yhteydessä ne tulivat esille 60-luvun lopulla (Harlow ja Nakayama 1968). Standardi k −ǫ-malli on puolestaan esitetty hieman myöhemmin ja se on ollut alku sekä teollisuusprosessien virtaussimuloinneille että kaupallisille virtausratkaisijoille (Jones ja Launder 1972). MAC-menetelmästä kehitettiin tehokkaampi versio (SIMPLE, Patankar ja Spalding 1972), mutta yhtälöiden diskretointitarkkuudesta tai kappaleiden muo- 1.6. KURSSIN SISÄLLÖSTÄ 20 doista ei välitetty käytännössä juuri mitään. Itse asiassa tarkkuus eräissä laskentakoulukunnissa vain aleni. MAC-menetelmässä käytetään keskeisdifferenssiä, jolla on toisen kertaluvun tarkkuus. SIMPLE-menetelmän yhteydessä ryhdyttiin soveltamaan ensimmäisen kertaluvun ylävirtadiskretointia, jolla on globaalia Reynoldsin lukua tuhoisasti alentava vaikutus, kuten peruskurssilla on esitetty. Laskentahilat olivat suorakulmaisia ja vinot seinät kuvattiin sahalaitoina, jolloin mistään tarkkuudesta seinien lähellä ei kannattanut puhua. Vasta tultaessa 90-luvulle kokoonpuristumattoman virtauksen yhteydessä käytetyt menetelmät ja myös runsaslukuisesti markkinoilla olevat kaupalliset koodit alkoivat nopeasti kehittyä. Merkittävä virstanpylväs on ollut limitetystä hilasta luopuminen (Rhie ja Chow 1983). Sekin yleistyi melko hitaasti ja vasta 90-luvulle tultaessa erilaiset menetelmän modifikaatioehdotukset ovat täyttäneet mm. Numerical Heat Transfer-lehden. Näistä on tehty varsin kattava kirjallisuustutkimus (A. Miettinen, muistio CFD/TERMO-24-97). Limitetystä hilasta luopuminen on oleellisen tärkeä edistysaskel siirryttäessä käyräviivaiseen laskentahilaan, sovellettaessa monihila-algoritmia jne. Myös tarkemmat diskretointimenetelmät ovat lopulta yleistyneet, mukaan lukien TVD-menetelmät, joita käsiteltiin peruskurssilla. Viime aikoina ovat myös uudenlaiset hilatyypit (tetraedrit, prismat) nopeasti vallanneet alaa. Painepohjaisiin menetelmiin on yhdistetty myös piirteitä, joilla ne saadaan toimimaan suurella Machin luvulla, vastaavasti todettiin aikaintegrointipohjaisten algoritmien vuosituhannen lopulla laajentuneen alhaiselle nopeusalueelle. Kehityksen myötä on nähtävissä, että erilaiset virtausyhtälöiden ratkaisutavat ovat hitaasti konvergoitumassa yhdeksi laajemmaksi kokonaisuudeksi. 1.6 Kurssin sisällöstä Edellä on usein viitattu Ferziger-Pericin kirjaan Computational Methods for Fluid Dynamics, jota käytetään kurssilla pohjana. Teos on ensimmäinen laajempi esitys painekorjausmenetelmästä sitten S. V. Patankarin klassisen kirjan Numerical Heat Transfer and Fluid Flow. Tuskin mikään yksittäinen kirja on yhtä paljon referoitu ja vaikuttanut niin suuresti tieteenhaaraansa kuin Patankarin kirja. Pääsyynä lienee teoksen poikkeuksellisen selkeä ja ytimekäs esitystapa, jolla vaikeatkin asiat on saatu näyttämään helpoilta. Pedagogisessa mielessä Patankarin kirja on edelleen 1.6. KURSSIN SISÄLLÖSTÄ 21 ylittämätön, mutta itse sisällön kannalta se oli jo ilmestyessään osittain vanhentunut ja erityisesti diskretointivirheen tarkastelun kannalta liian suppea. Kirjaa voi ja kannattaa käyttää edelleen, jos haluaa selkeää kuvausta painekorjausmenetelmän ideoista ja taustoista, mutta itse menetelmän kuvauksessa se on vanhentunut. Painekorjauksesta on ilmestynyt joitakin kirjoja, jotka lähinnä on tarkoitettu oppaaksi kaupallisten ohjelmien käyttäjille manuaalien rinnalla. Vasta Ferziger-Pericin kirja on jossain määrin vakava yritys alan kurssikirjaksi. Valitettavasti se ei nouse tyyliltään edeltäjänsä tasolle eikä sisällöltään läheskään vastaa monia laajempia CFD-kirjoja (Hirsch, Fletcher, Tannehill-Anderson-Pletcher). Pelkästään FerzigerPericin varassa alasta ei saa kunnollista kuvaa. Kirjasta puuttuu esimerkiksi TVDmenetelmät kokonaan. Eräissä kohdin kirjoittajien mielipiteet eivät myöskään vastaa CFD-yhteisössä vallitsevaa käsitystä asioista. Esimerkkinä voidaan mainita keskeisdifferenssin käyttö aina oletusarvodiskretointina. Käsitys on siinä mielessä puhdasoppinen, että kuten peruskurssin pohjalta muistetaan, ylävirtapainotteinen menetelmä lisää aina numeerista vaimennusta ratkaisuun. Vaikka ylävirtamenetelmän kertalukua kuinka kasvatettaisiin, mitä monidimensioisessa tapauksessa ei käytännössä pystytä tekemään toista kertalukua pitemmälle, modifioituun yhtälöön jää parillisia derivaattoja, jotka ovat vaimentavia. Keskeisdifferenssillä vaimennus tulee vain fysikaalisesta diffuusiosta, vaikka käytännössä yleensä joudutaankin lisäämään ns. Jameson-tyyppinen 4. kertaluvun vaimennustermi. Riittävän tiheällä diskretoinnilla voidaan kuitenkin väittää keskeisdifferenssin tarkkuuden olevan ylävirtamenetelmiä parempi. Ferziger-Pericin lähtökohtana on, että tämä hilatiheys on myös käytännössä vaadittava. Valitettavasti käytännön simulointitehtäviltä vaaditaan varmatoimisuutta (’robustisuutta’), missä ylävirtamenetelmät ovat ylivoimaisia. Niiden tarkkuus kokoonpuristuvan virtauksen yhteydessä sovellettavien Riemann-ratkaisijoiden yhteydessä on myös selkeästi keskeisdifferenssipohjaisia tapoja parempi, koska tarkkuuden saavuttaminen epäjatkuvuuskohdan lähellä ei tällöin riipu keinotekoisesti lisätystä vaimennuksesta. Tällä kurssilla oletetaan konvektiotermi diskretoitavaksi MUSCL-kaavalla, mikä ei sinänsä sulje pois valintaa κ = 1, mikä vastaa keskeisdifferenssiä. Mainittakoon, että MUSCL-kaavaakaan ei Ferziger-Pericissä ole, vaikka siihen pohjautuvia diskretointitapoja esitetäänkin. Kirjan puutteet eivät ole katastrofaalisia, koska varsinaiset diskretointiasiat ovat tulleet esillä peruskurssilla ja ne oletetaan tässä yh- 1.6. KURSSIN SISÄLLÖSTÄ 22 teydessä tunnetuiksi esitiedoiksi. Puutteita poistamaan on kirjoitettu tämä moniste, jonka käsillä olevassa johdanto-osassa tuodaan esille käytetty yhtälöjärjestelmä ja painekorjausmenetelmän taustaa. Tätä seuraa katsaus Navier–Stokes-yhtälöiden ominaisuuksiin, jotka ovat tärkeämpiä kokoonpuristuvan virtausratkaisun yhteydessä, mutta toimivat taustana myös painekorjausmenetelmälle. Kolmannessa luvussa käydään läpi kertauksena peruskurssin sisältö. Tarkoituksena on lähinnä verrata aiemmin opittua Ferziger-Pericin esitystyyliin sekä merkintöihin ja nimityksiin. Viimeksi mainituista saatetaan, kuten aiemmin jo todettiin, käyttää erilaista esitystapaa. Painekorjaus, joka sekin on enemmän eräänlainen strategia, kuin yksittäinen menetelmä, tuodaan esille hieman Ferziger-Pericistä poikkeavasti, mutta mitään suurta ristiriitaa ei ole. Ristiriitoja saattaa enemmän löytyä kirjan ja monille tutuiksi tulleiden kaupallisten ohjelmien ajatusmaailman välillä. Viimeksi mainituista on tarkoitus tuoda pääkohtia esille kurssin lopuksi. Ferziger-Pericistä käsitellään suoraan luku 6, joka käsittelee ajan suhteen tarkkoja menetelmiä. Myös luku 9 turbulenssista käsitellään sinällään ja luku 8 monimutkaisista geometrioista ehkä hieman täydennettynä. Luku 10 laskennan tehostamisesta on myös mukana täydennettynä. Kurssin sisältö on likimain seuraava: 1. Johdanto ja käytettävät yhtälöt 2. Virtausyhtälöiden ominaisuuksia 3. Diskretointimenetelmien kertaus (FP sivulle 84) 4. 1D painekorjaus limitetyllä hilalla, putkiverkot 5. Tavanomainen hila 6. Navier–Stokes yhtälöiden ratkaisu 7. Yhtälöryhmien ratkaisu (FP luku 5) 8. Ratkaisun tehostaminen (FP luku 11) 9. Monimutkainen geometria (FP luku 8) 10. Ajasta riippuvat tilanteet (FP luku 6) 11. Turbulenssi (FP luku 9) 1.7. KÄYTETYT YHTÄLÖT 23 12. Virtaussimulointeihin liittyvää käsitteistöä (FP taustamateriaalina) 13. Muut ratkaisumenetelmät 14. Virtaussimuloinneista ja kaupallisista ohjelmista Totuttuun tapaan tähänkin kurssiin liittyy 12 kappaletta harjoitustehtäviä. Nämä seuraavat löyhästi luentoja, koska harjoitustehtävissä keskitytään ainoastaan painekorjausalgoritmin rakentamiseen. Tämä on jaettu kahteentoista osatehtävään. Asioiden esittäminen luennolla ei kestä yhtä kauan ja jäljellä oleva aika käytetään muun virtauslaskentaan liittyvän tiedon esittämiseen. Esimerkiksi turbulenssin mallinnukseen käytetään kaksi tuntia. Tämä ei tietenkään korvaa varsinaista turbulenssikoulutusta, mutta antaa kuitenkin jonkinlaisen kokonaiskuvan siitä, mitä elementtejä tällä hetkellä numeeriseen virtaussimulointiin kuuluu. Tarve edes jossain määrin linkittää luentoja harjoitustehtävissä esillä olevaan asiaan, on puolestaan aikaansaanut Ferziger-Pericistä poikkeavan asioiden esilletulojärjestyksen. 1.7 Käytetyt yhtälöt Matemaattisessa mielessä kurssilla käsitellään tehtävää, jossa ratkaistaan yhtälöt (1.19) ja (1.22). Ne ovat uudelleenkirjoitettuna: ∇ · V~ = 0 ~ 1 DV + ∇p = ~b + ν∇2 V Dt ρ (1.30) Numeriikassa emme kuitenkaan käsittele liikemääräyhtälöä näin, vaan sovellamme säilymismuotoa (1.21) Z Z ∂ Z ~ ρudV + ρuV · ~ndS + pnx dS = ∂t S S Z Z V ∂u ∂u ∂u + ny + nz )dS + ρbx dV µ (nx ∂x ∂y ∂z V S (1.31) missä myös tiheys on mukana vuotermeissä ja liikemäärässä. Tekstiosuudessa tuodaan muoto (1.30) esille usein paitsi lyhyyden vuoksi, myös korostamaan sitä seikkaa, että ratkaisumenetelmä toimii nimenomaan vakiotiheydellä, ja että jatkuvuusyhtälö määrittelee liikemääräyhtälöissä esiintyvän painekentän eikä suinkaan tilayhtälö. Juuri tämä seikka on painekorjausmetodin ydin. Käytännössä ei ole mikään 1.7. KÄYTETYT YHTÄLÖT 24 ongelma lisätä menetelmään erilaisia piirteitä, esimerkiksi tiheyden riippuvuus paineesta ja lämpötilasta. Edellä esitetty tilayhtälö (1.24) tulee tällöin käyttöön, mutta muodossa ρ = ρ(p, e) tai (1.32) ρ = ρ(p, T ) Yhtälö (1.31) on käytössä sekä yksi- että kaksidimensioisessa muodossa. Varsinainen virtausratkaisija tehdään kaksidimensioisena, jolloin kaikki kolmidimensioisessa tapauksessa esille tulevat piirteet saadaan jo esille. Painekorjaus voidaan kuitenkin suorittaa jo yksidimensioisilla yhtälöillä, jotka ovat alussa paljon helpommin käsiteltäviä. Yhtälön (1.31) yksidimensioinen muoto on ∂ ∂t Z V Z 2 Z ρudV + ρu dS + pnx dS = S S Z Z ∂u dS + ρbx dV µ V S ∂x (1.33) Tämän diskretointi kontrollitilavuusmenetelmällä on suoraviivaista. Ainoa huopn x i S i −1/2 S i +1/2 p n Kuva 1.2: Yksidimensioinen putkielementti, jossa nähdään paineesta aiheutuva voima putken seinämällä. mionarvoinen asia on painetermi, johon on otettava myös putken pinnalla vallitseva paine mukaan (kts. kuva 1.2). Yksidimensioisessa tapauksessa putken pinnan x-suuntainen komponentti on tilavuutta rajaavien x-suuntaisten pinta-alojen erotus Si+1/2 − Si−1/2 . Muilla kuin painetermillä pintaintegraalit ovat nollasta poikkeavia vain pinnoilla Si+1/2 ja Si−1/2 eikä niissä pinnan normaalin x-komponenttia nx = 1 ole merkitty eksplisiittisesti näkyviin. Mikäli putken poikkipinta on vakio, kyseinen painekomponenttikin häviää. Tällöin voidaan kitkattomalle ja lähdetermittömälle virtaukselle kirjoittaa yhtälö ∂ ∂t Z V ρudV + Z 2 S ρu dS + Z S pdS = 0 (1.34) 1.7. KÄYTETYT YHTÄLÖT 25 mistä saadaan yksidimensioinen differentiaaliyhtälö ∂ρu ∂ρu2 ∂p + + =0 ∂t ∂x ∂x (1.35) Jo peruskurssissa tuotiin esille epälineaarisuuteen liittyviä ongelmia. Tämä asia tulee hyvin esille vakiotiheydellä, koska useat muut hankaluudet on vältetty. Edellä olevan yhtälön ominaisuuksien tutkiminen voidaan aloittaa olettamalla painegradientti nollaksi. Derivoimalla saadaan tällöin u ∂ρ ∂u ∂u ∂ρu +ρ + ρu +u =0 ∂t ∂t ∂x ∂x (1.36) Massan säilymisen perusteella ensimmäinen ja viimeinen termi ovat yhdessä = 0. Virtausyhtälöitä muutettaessa erilaisiin primitiivimuotoihin (primitiivisuureet voidaan valita usealla tavalla), on usein käytetty temppu identifioida yhtälöistä termi: suure × jatkuvuusyhtälö, joka on identtisesti nolla. Yllä oleva yhtälö redusoituu siis lopulta Burgersin yhtälöksi, joka on primitiivimuodossa ∂u ∂u +u =0 ∂t ∂x (1.37) Koska epälineaarisuutensa Burgersin yhtälö on hyvä aloituskohta painekorjausratkaisijan tekemiselle, tarkastellaan seuraavassa eräitä yhtälön ominaisuuksia. Säilymismuotoisen yhtälön vuoksi saadaan siis f = u2 /2. Burgersin yhtälöllä on yksi karakteristika dx =u (1.38) dt jota pitkin ratkaisu u pysyy vakiona. Burgersin yhtälöllä ratkaisussa esiintyy epäjatkuvuuskohtia, joiksi mikä tahansa kulkusuuntaan vähenevä jakautuma tiivistyy. Epäjatkuvuuskohdan nopeudeksi C saadaan ns. yleisten yksidimensioisten RankineHugoniot ehtojen ∆F = C∆U (1.39) avulla saadaan Burgersin yhtälölle C = (uL + uR )/2. Yllä ∆F = FL − FR on vuo- arvojen erotus epäjatkuvuuskohdan kahden puolen ja ∆U vastaava erotus ratkaistavien suureiden muodostamalle vektorille. Epäjatkuvuuskohdan ratkaisu on esitetty kuvassa 1.3 Jos tarkastellaan alunperin jatkuvaa jakautumaa, kuten kuvan 1.4 siniaaltoa, se lopulta terävöityy kuten kuvassa on esitetty. Terävöitymisen jälkeen aallon nopeus on C = u0 t + √ Bt (1.40) 1.7. KÄYTETYT YHTÄLÖT 26 u u = Lu uL t t = 0 uR u = R u x ( uL + uR) t/2 x = 0 Kuva 1.3: Burgersin yhtälön ratkaisu shokkiaallolle g(x) A t t = 0 C B/t u0 x 0 L u0t u0t + Bt Kuva 1.4: Burgersin yhtälön ratkaisu siniaallolle ja sen korkeus on q B/t, missä B/2 on siniaallon pinta-ala. Aallon pinta-ala ei muutu, koska tilanne on häviötön. Jos suureen arvo on menosuunnassa kasvava, karakteristikat suuntautuvat x, ttasossa, kuten kuvassa 1.5 on esitetty. Ilmiötä sanotaan ekspansioviuhkaksi (expansion fan) ja se johtaa aallon loivenemiseen edelleen. Ratkaisu on saman kuvan yläosassa ja se voidaan esittää muodossa u(x, t) = u1 x/t u2 x/t < u1 u1 < x/t < u2 x/t > u2 (1.41) Periaatteessa ratkaisu voisi olla myös epäjatkuva (expansion shock), mikä olisi epäfysikaalista. Tarvitaan entropiaehto, josta peruskurssilla oli puhetta, jonka avulla epäfysikaaliset ratkaisut voidaan matemaattisessa mielessä sulkea pois. Entropiaehdon toteuttavat ratkaisut voidaan löytää myös raja-arvona diffuusiotermin sisältävästä Burgersin yhtälön ratkaisusta antamalla diffuusiokertoimen lähestyä nollaa. Burgersin yhtälön numeerisesta ratkaisusta oli myös puhetta peruskurssilla. Mi- 1.7. KÄYTETYT YHTÄLÖT 27 u u2 t = 0 t u1 x 0 u1t u2t t t a nα1 = 1 / 1u t a nα2 = 1 / 2u α1 − u1t α2 0 x u2t Kuva 1.5: Burgersin yhtälön ratkaisu harvennusaallolle käli diskretointi on huonosti tehty, epäjatkuvuuskohdan luona esiintyy ’ylilyönti’. Epäjatkuvuuskohdan ratkaisu onnistuu varsin tarkasti ns. Riemannin ratkaisun avulla. Roen approksimatiivinen Riemann-ratkaisija voidaan skalaariyhtälölle kirjoittaa muodossa ∗ missä fi+1/2 1 1 ∗ ¯i+1/2 |(uR − uL ) (1.42) fi+1/2 = (fR + fL ) − |a 2 2 on numeerisen vuon lauseke ja etenemisnopeus a¯i+1/2 määritetään si- ten, että yhtälö fR − fL = a¯i+1/2 (uR − uL ) (1.43) ¯i+1/2 = 1/2(uR + uL ), mikä on toteutuu. Burgersin yhtälöllä tämä johtaa valintaan a Rankine-Hugoniot ehdon mukainen epäjatkuvuuskohdan nopeus. Tällä valinnalla ∗ voidaan helposti myös havaita, että yhtälön (1.42) mukainen numeerinen vuo fi+1/2 voidaan myös kirjoittaa muotoon ∗ fi+1/2 = ( 1 2 u 2 R 1 2 u 2 L a ¯i+1/2 ≤ 0 ¯i+1/2 ≥ 0 a (1.44) Tämän ylävirtadiskretoinnin on aiemmin peruskurssilla todettu tuottavan ylilyönneistä vapaan ratkaisun ja nyt sen voidaan todeta tuottavan myös oikealla nopeudella etenevän epäjatkuvuuskohdan. Roen menetelmä voidaan yhdistää sopivan aikaintegrointimenetelmän kanssa. Menetelmä on luonteeltaan sellainen, että se ikään 1.7. KÄYTETYT YHTÄLÖT 28 kuin olettaa kahden kopin välissä olevan epäjatkuvuuskohdan. Tämä aiheuttaa sen, että mikäli muutos onkin koppien välillä jatkuva, kuten harvennusaallossa, saattaa siihen muodostua epäfysikaalinen harvennusaaltoshokki. Kokemuksen mukaan tämä voidaan poistaa ns. entropiakorjauksella (entropy fix), mutta myös kitkatermi on yleensä riittävä tae fysikaalisesti mielekkäälle ratkaisulle. Yllä oleva epäjatkuvuuskohdan käsittely tavallaan liittyy läheisemmin kokoonpuristuvien virtausten ratkaisuun. Alhaisella nopeudella voi esiintyä ns. kontaktiepäjatkuvuus esimerkiksi lämpötilassa ja tiheydessä. Painekorjausohjelman kehittäminen on helpointa aloittaa Burgersin yhtälöstä. Yllä esitetyn pohjalla voidaan tuloksia verrata myös tarkkaan ratkaisuun. Liikemääräyhtälön diskretoinnille saadaan myös suunta yhtälön (1.44) perusteella. Tapa johtaa kuitenkin kokoonpuristumattomassa tapauksessa tiettyihin ongelmiin, joita selvitetään jatkossa. Tämän vuoksi virtausyhtälöillä liikemääräyhtälön ratkaisussa erotetaan vuo muotoon ρu × u eli muotoon massavirta × konvektoituva nopeus. 1.7. KÄYTETYT YHTÄLÖT 29 • Kokoonpuristumattoman virtauksen perusyhtälöt ovat ∇ · V~ = 0 1 D V~ + ∇p = ~b + ν∇2 V Dt ρ (1.45) • Numeerinen ratkaisu pohjautuu integraalimuotoon. Myös jatkuvuusehdossa ∇ · ρV~ = 0 tiheys on tällöin mukana. Liikemääräyhtälö on xsuunnassa Z Z Z ∂ ρudV + ρuV~ · ~ndS + pnx dS = ∂t V S S Z Z ∂u ∂u ∂u + ny + nz )dS + ρbx dV µ (nx ∂x ∂y ∂z V S (1.46) • painekorjausmenetelmän ydin: jatkuvuusyhtälön toteutuminen määrittää painejakauman • Burgersin yhtälö on hyvä lähtökohta liikemääräyhtälön tutkimiselle ∂2u ∂u ∂u2 /2 + =ν 2 ∂t ∂x ∂x (1.47) Yhtälön konvektio- ja diffuusiovuot muituttavat liikemääräyhtälön vastaavia termejä. • Virtausyhtälöt,R niiden eri muodot ja manipulointi. Hyödyllisiä yhteyksiä ~ ~ ndS = R ∇· φdV ja massansäilymisyhtälön käyttö. Gaussin lause S φ·~ V • Viskositeetti ja lämmönjohtavuus ovat ’aineominaisuuksia’. Kokoonpuristuvalle virtaukselle tarvitaan lisäksi tilayhtälö paineen määritystä varten. • Globaali säilymisperiaate Vtot ∆φ = ∆t(Fsis − Fulos ) • Ratkaisumenetelmät eri nopeusalueille 1. Aikaintegrointi ja paine tilayhtälöstä, kun Ma > 0,1 2. Paine jatkuvuusyhtälön perusteella, kun Ma < 0,2. Tilayhtälöä ei välttämättä edes tarvita. Ratkaisukeinot ovat matriisin pohjustus, näennäispuristuvuus, virtafunktio-pyörteisyys -menetelmä sekä painekorjaus. • Burgersin yhtälön ominaisuudet Päivitetty 8.1.2014 30 2 Virtausyhtälöiden ominaisuuksia 2.1 Navier–Stokes-yhtälöt Edellisessä luvussa tuotiin esille virtausyhtälöt. Aiemmin vektorimuotoista liikemääräyhtälöä on nimitettiin Navier–Stokes-yhtälöksi, mutta puhekielessä erityisesti CFD-alueella on yleistynyt tapa nimittää koko kitkallista virtausta kuvaavaa osittaisdifferentiaaliyhtälöryhmää tällä tavoin. Ilmeisesti tämä tapa pikkuhiljaa valtaa myös klassisen virtausmekaniikan. Yhtälöt kirjoitettiin kompaktissa muodossa seuraavasti: ∂U ∂F ∂G ∂H + + + =0 ∂t ∂x ∂y ∂z (2.1) missä U = (ρ, ρu, ρv, ρw, ρE)T on ratkaistavien konservatiivisten suureiden muodostama vektori ja F, G, H ovat vuovektoreita x, y, z-suunnissa. Vuovektorit ovat F= G= H= ρu ρu2 + p − τxx ρuv − τxy ρuw − τxz u(ρE + p) − uτxx − vτxy − wτxz + qx ρv ρuv − τxy ρv 2 + p − τyy ρvw − τyz v(ρE + p) − uτxy − vτyy − wτyz + qy ρw ρuw − τxz ρvw − τyz ρw 2 + p − τzz w(ρE + p) − uτxz − vτyz − wτzz + qz (2.2) (2.3) (2.4) Yllä kitkatermit τij saadaan yhtälöstä (1.9) ilman painetta, joka on siirretty kitkattomaan vuovektoreiden osaan. Usein Navier–Stokes-yhtälöt kirjoitetaan erottamal- 2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI 31 la kitka- ja lämmönsiirtotermit, s.o. diffuusiotermit erikseen. Vuovektorit yhtälössä (2.1) tulevat tällöin korvatuiksi vektoreilla F − Fv jne, missä alaindeksitön merkintä on varattu kitkattomalle vuon osalle. Navier–Stokes-yhtälöt ovat hankalan näköisiä ja eri termien merkityksen mieltäminen edellyttää jo jonkinasteista asiantuntemusta. Yhtälöissä on kuitenkin tiettyä säännönmukaisuutta. Poistamalla diffuusiovuot, saadaan Eulerin yhtälöt, jotka koostuvat konvektiosta ja painegradientista. Alunperin Euler johti vuonna 1753 vain kitkattoman virtauksen liikemääräyhtälön, mutta nykyisin tälläkin nimityksellä tarkoitetaan yleensä koko yhtälöryhmää kitkattomassa muodossa. Nimitystilanne on siis samankaltainen kuin Navier–Stokes-yhtälöilläkin. Peruskurssista voidaan palauttaa mieliin juuri konvektion diskretoinnin olevan hankalaa. Nyt vaikeudet lisääntyvät paineen määrityksen myötä. Paineen käsittely vaatii erilaista tekniikkaa eri nopeusalueilla tai pikemminkin Machin lukualueilla. Eulerin yhtälöt muodostavat hyvän pohjan ratkaisumenetelmien kehittämiselle. Kitkatermi erikseen on hankalannäköinen, mutta sen diskretointi ja liittäminen numeriikkaan ei tuota periaatteellisia ongelmia, koska voidaan käyttää symmetrisiä laskentamolekyylejä. Siihen palataan myöhemmin. Eulerin yhtälöt muodostavat hyperbolisen ryhmän, edellyttäen että tiheys riippuu paineesta. Hyperbolisella ryhmällä on eräitä mielenkiintoisia ominaisuuksia, jotka kuvaavat erilaisia virtausilmiöitä. Nämä ominaisuudet ovat myös tärkeitä konstruoitaessa ratkaisua kitkallisen virtauksen yhtälöille. Vaikka nyt tavoitteena onkin saada ratkaistuksi yksinkertaistetut yhtälöt (1.45), tarkastellaan ensin Eulerin yhtälöiden ominaisuuksia kokonaisuudessaan ja pohditaan miten yhtälöiden luonne muuttuu, kun Ma → 0 ja erityisesti rajalla Ma = 0. 2.2 Primitiivimuodot ja vuovektorin Jacobin matriisi Seuraavaksi tarkastellaan eräitä Eulerin yhtälöiden ominaisuuksia. Tässä yhteydessä riittää yksidimensioinen malliyhtälö, joka täydellisenä voidaan kirjoittaa dimensiottomaan muotoon ∂U∗ ∂F∗ 1 ∂F∗v + = ∂t∗ ∂x∗ Re∞ ∂x∗ (2.5) Tässä on kitkallinen vuo erotettu vasemmalle puolelle ja voidaan havaita yhtälön lähestyvän Eulerin yhtälöä, kun Re∞ = ρ∞ u∞ L∞ /µ∞ → ∞. Tässä Reynoldsin luku 2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI 32 on refereoitu johonkin sopivasti valittuun referenssitilaan. Havaitaan myös Eulerin yhtälöiden olevan samanmuotoisia dimensiollisessa ja dimensiottomassa muodossa. Eräs yksidimensioisten Eulerin yhtälöiden primitiivimuoto saadaan käyttämällä konservatiivisia muuttujia U = (ρ, ρu, ρE)T ja derivoimalla vuotermi auki ∂U ∂U +A =0 ∂t ∂x (2.6) missä A = ∂F/∂U on vuovektorin Jacobin matriisi. Tässä yhtälössä kyseessä on konservatiivisten suureiden suhteen muodostettu Jacobin matriisi. Yllä olevan yhtälön avulla voidaan kehittää implisiittinen menetelmä kokoonpuristuvalle virtaukselle, jossa ratkaistaan konservatiivisia suureita U. Yksidimensioisessa tapauksessa ρ ρ U = ρu = m ǫ ρE ja vuovektori on (2.7) m ρu m2 /ρ + p 2 F = ρu + p = m (ǫ + p) u(ρE + p) ρ (2.8) missä on otettu käyttöön merkinnät m = ρu ja ǫ = ρE. Huomataan, että Jacobin matriisin muodostaminen edellyttää paineen lausumista eksplisiittisesti suureiden (ρ, m, ǫ)T avulla. Tämä on mahdollista esimerkiksi jos tilayhtälöä voidaan hyvällä tarkkuudella approksimoida täydellisen kaasun tilayhtälöllä m2 1 ) p = (γ − 1)ρe = (γ − 1)(ρE − ρu2 ) = (γ − 1)(ǫ − 2 2ρ (2.9) missä γ = cp /cv . Ilma on hyvin lähellä täydellistä kaasua kohtuullisilla lämpötiloilla. Sijoittamalla paineen lauseke yhtälön (2.8) mukaiseen vuovektoriin, on Jacobin matriisin muodostaminen suoraviivaista. Jacobin matriisi saadaan yksinkertaisemmaksi ottamalla käyttöön sopivat primitiivisuureet. Tällöin voidaan matriisi sopivalla linearisoinnilla lausua myös mielivaltaiselle tilayhtälölle, yllä se vaati paineen lausumista analyyttisesta yhtälöstä (2.9). Primitiivisuureiden valinnassa pyritään yksinkertaisiin lausekkeisiin. Toinen asiaan vaikuttava seikka on käytetty tilayhtälö ja siinä tarvittavat muuttujat. Tarkastellaan 2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI 33 asiaa konkreettisesti lausumalla yhtälö suureiden (ρ, u, e)T avulla. Avuksi tarvitaan kineettisen energian yhtälö, joka saadaan liikemääräyhtälön primitiivimuodosta ρ ∂u ∂u ∂p + ρu + =0 ∂t ∂x ∂x (2.10) kertomalla se nopeudella u ja lisäämällä tulokseen nollan suuruinen termi u2 /2× massan säilymisyhtälö. (Ilman viimeksi mainitun kaltaista operaatiota yhtälöiden muuntaminen tuottaisi pitkiä ja virhealttiita lausekkeita). Yksidimensioiseksi kitkattomaksi kineettisen energian yhtälöksi saadaan ∂ρu2 /2 ∂ρu3 /2 ∂p + +u =0 ∂t ∂x ∂x (2.11) Kitkallinen kineettisen energian yhtälö on paljon monimutkaisempi. Kineettisen energian yhtälöstä ei ole säilymismuotoa, mikä tekee kineettisen energian säilymisen irrallaan kokonaisenergiasta hankalaksi. Ferziger-Pericissä pohditaan tätä seikkaa sivulta 152 lähtien. Asia on siinä mielessä hankala, että kokoonpuristumattomalla virtauksella sisäenergiaa ei ole määritelty ja ainoaksi energiamuodoksi jää kineettinen energia. Ilmeisesti paljon tärkeämpää on kuitenkin liikemäärän säilyminen. Kineettisen energian yhtälön avulla on usein hyödyllistä tehdä erilaisia tarkasteluja, esimerkkinä voidaan mainita virtaus turbokoneissa. Yhtälö on myös apuväline manipuloitaessa kokonaisenergian yhtälöä. Vähentämällä viimeksi mainitusta kineettisen energian yhtälö (2.11) saadaan sisäenergialle e säilymisyhtälö ∂u ∂ρe ∂ρue + +p =0 ∂t ∂x ∂x (2.12) Tästäkään ei ole olemassa säilymismuotoa, joten energian eri muotoja ei voida ratkaista säilymismuotoisella diskretoinnilla ilman lisäapproksimaatioita. Säilymismuoto on olemassa vain kokonaisenergialle e+u2/2 tai e+u2/2+gh. Näistä potentiaalienergian sisältävä vaihtoehto on sikäli ’voimakkaammassa’ säilymismuodossa, että energiayhtälöön ei tule gravitaatiovoimasta lähdetermiä. Differentiaaliyhtälössä kaikki suureet ovat tällöin nablan ’alla’. Yhtälö (2.12) voidaan edelleen yksinkertaistaa massan säilymisyhtälön avulla muotoon ρ ∂e ∂e ∂u + ρu +p =0 ∂t ∂x ∂x (2.13) 2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI 34 Nyt yhtälöt (2.10), (2.13) ja massan säilymisyhtälö voidaan kirjoittaa matriisimuodossa 1 0 0 ρ ∂ 0 1 0 u + ∂t 0 0 1 e u ρ 0 1 ∂p 1 ∂p u ρ ∂ρ ρ ∂e 0 p/ρ u ρ ∂ u =0 ∂x e (2.14) paikkaderivaattatermin kertojana on valittujen primitiivisuureiden Jacobin matriisi ˜ Karakteristiset nopeudet saadaan suoraan tämän matriisin ominaisarvoina, koska A. aikaderivaattaa kertoo yksikkömatriisi (kts. peruskurssi) |A˜ − λI| = det u−λ ρ 0 1 ∂p 1 ∂p u−λ ρ ∂ρ ρ ∂e 0 p/ρ u − λ =0 (2.15) Ominaisarvoiksi saadaan λ1,2 = u ± c ja λ3 = u. Kaksidimensioisessa tapauksessa saadaan ominaisarvoja λ3 kaksi ja kolmidimensioisessa tapauksessa kolme kappa- letta. Samaa ominaisarvoa vastaa kolme vasenta ominaisvektoria, joten ominaisarvoja tavallaan on yhteensä viisi kappaletta kuten ominaisvektoreitakin. Tällöin hyperbolisuuden määritelmä täyttyy. On huomattava, että kyse on nyt x-suuntaisen vuovektorin Jacobin matriisin ominaisarvoista, jotka määrittelevät karakteristiset nopeudet vain tässä suunnassa. Ottamalla huomioon yhtälön (2.1) kaikki suunnat, saadaan karakteristinen pinta, josta peruskurssilla oli puhetta yhtälöiden luokittelun yhteydessä. Ominaisarvot määrittelevät äänen nopeudeksi tässä tapauksessa c2 = ∂p p ∂p + ∂ρ ρ e (2.16) Kuten jo peruskurssilla on todettu, tämän tyyppinen yhtälöryhmä on hyperbolinen ja kuvaa siis eräiden suureiden etenemistä häviöttömänä pitkin karakteristikoita, jotka määräytyvät yhtälöistä dx = λi i = 1, 2, 3 dt (2.17) Jos nopeus ja äänen nopeus ovat vakioita, karakteristikat ovat aika-paikka-tasossa suoria, joiden kulku on hahmoteltu kuvassa 2.1. Koska sekä nopeus että äänennopeus muuttuvat ratkaisun edetessä, karakteristikat ovat käytännössä kaareutuvia. Primitiivisuureiden valinta voidaan tehdä monella tavoin, koska kahden termodynaamisen suureen avulla on aina lausuttavissa kolmas. Sopiva valinta on nyt käy- 2.3. MUUNNOKSET KONSERVATIIVISTEN JA PRIMITIIVISUUREIDEN VÄLILLÄ 35 t ylisooninen virtaus al i s o o n i n e n virtaus 88888 riippuvuus− 88888 alue 88888 P 888888888888 88888888 P ( x , t ) 888888888888 88888888 888888888888 88888888 888888888888 C+ C0 C− 88888888 888888888888 88888888 888888888888 88888888 888888888888 88888888 888888888888 x 88888888 888888888888 88888888 888888888888 P+ P0 P− P+ P0 P− 88888888 888888888888 Kuva 2.1: (a) karakteristikat ylisoonisessa tapauksessa u > c, (b) karakteristikat , kun u < c tetyn lisäksi (p, u, h)T , jolloin äänen nopeudeksi saadaan 1 = c2 ∂ρ ∂p ! 1 + ρ h ∂ρ ∂h ! (2.18) p Äänennopeuden lauseke luonnollisesti muuttuu aina käytössä olevien derivaattojen mukaan. Periaatteessa ne ovat kaikki manipuloitavissa samaan muotoon 2 c = ∂p ∂ρ ! (2.19) s missä paineen derivointi tiheyden suhteen tapahtuu vakioentropialla s. Yhtälöä (2.19) yleensä pidetään äänennopeuden määritelmänä. 2.3 Muunnokset konservatiivisten ja primitiivisuureiden välillä Kuten edellä mainittiin, eräs hyöty primitiivisuureiden käytölle on myös se, ettei tilayhtälöä tarvitse kirjoittaa eksplisiittisessä muodossa näkyviin. Sen sijaan selvitään linearisoinneilla. Käyttökelpoinen muunnos on myös konservatiivisista suureista primitiivisiin ρ ∂U ∂ ~ M= = ρV ∂u ∂u ρE (2.20) missä primitiivisuureiden muodostamaa vektoria on merkitty u:lla. Huomautettakoon, että aika usein (esim. Hirsch) primitiivisuureiden vektoria merkitään V :llä ja TAP, josta nyt esillä olevat merkinnät on lainattu, heiluu silloin tällöin lihavoitettujen ja tavallisten kirjainten välillä. Edellä olevassa yksidimensioisessa tapauksessa 2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 36 muunnosmatriisi on hyvin yksinkertainen M= ∂U ∂ρ ∂U ∂u ∂U ∂e ! = 1 u 0 ρ 0 0 u2 e+ ρu ρ 2 (2.21) Käänteismatriisi M −1 määrittelee muunnoksen primitiivisuureista konservatiivisiin. Valituilla primitiivisuureilla M −1 ρ ∂u ∂ ~ = = V ∂U ∂U e (2.22) Tässä tapauksessa derivointi on selvästi työläämpää, mutta koska MM −1 = I, saadaan M −1 myös suoraan kääntämällä matriisi (2.21). Yhteys konservatiivisten ja primitiivisuureiden Jacobin matriisien välillä saadaan yhtälöstä (2.6) ∂U ∂U ∂U ∂u ∂U ∂u ∂u ∂u +A = +A ≡M + AM =0 ∂t ∂x ∂u ∂t ∂u ∂x ∂t ∂x (2.23) Kertomalla matriisilla M −1 ∂u ∂u ∂u ∂u + M −1 AM ≡ + A˜ =0 ∂t ∂x ∂t ∂x (2.24) Tästä nähdään Jacobin matriisin toteuttavan similaarisuusmuunnoksen A˜ = M −1 AM ja ˜ −1 A = M AM (2.25) jolloin niillä on samat ominaisarvot. Eulerin yhtälöiden karakterististen ominaisuuksien tutkimiseen voidaan siten käyttää primitiivisuureiden avulla lausuttuja yhtälöitä, mikä on yksinkertaisempaa kuin konservatiivisten suureiden käyttö. Jacobin matriisilla on myös merkitystä yhtälöiden implisiittisessä ratkaisussa. Tämä saatiin nyt hajotettua kolmen matriisin tuloksi, mutta matriisi A˜ voidaan vielä hajottaa tekijöihin, mikä tekee implisiittisen menetelmän soveltamisesta käytännössä yksinkertaisempaa. 2.4 Ominaisvektorit ja Jacobin matriisin diagonalisointi Hyvin yksinkertainen Jacobin matriisi saadaan valitsemalla primitiivisuureiksi (ρ, u, p)T . ˜ löydetään vasempien ominaisvekMatriisi, jonka avulla voidaan diagonalisoida A, 2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 37 torien avulla. Vasen ominaisvektori vastaten ominaisarvoa λ(j) määritellään yhtälöllä ˜l(j) A˜ = λ(j) ˜l(j) (2.26) missä summausta indeksin j yli ei tapahdu. Yllä primitiivisuureiden avulla määriteltyyn Jacobin matriisiin liittyvää ominaisvektoria on merkitty ˜l(j) :lla. Kun sekaannusvaaraa ei ole, jatkossa aaltoviivaa ei ominaisvektorien yhteydessä käytetä. Tarkastellaan yksidimensioisen esimerkin avulla ominaisvektoreiden määritystä. Otetaan käyttöön primitiivisuureet (ρ, u, p)T , jolloin saadaan hyvin yksinkertainen Jacobin matriisi l1 l2 l3 u ρ 0 u 0 ρc2 0 1 ρ u =λ l1 l 2 l 3 (2.27) missä li ovat λ:a vastaavan ominaisvektorin komponentteja. Ominaisarvolle λ = u saadaan ul1 = ul1 ρl1 + ul2 + ρc2 l3 = ul2 1 l2 + ul3 = ul3 ρ (2.28) Ensimmäinen yhtälö toteutuu mielivaltaisella l1 :n valinnalla. Viimeisestä yhtälöstä saadaan l2 = 0. Valitsemalla l1 = 1, voidaan toisesta yhtälöstä ratkaista l3 = −1/c2 . Toiselle ja kolmannelle ominaisarvolle λ = u±c voidaan kirjoittaa yhtälöryhmä ul1 = (u ± c)l1 ρl1 + ul2 + ρc2 l3 = (u ± c)l2 1 l2 + ul3 = (u ± c)l3 ρ (2.29) Nyt ensimmäisestä yhtälöstä saadaan l1 = 0 ja kaksi muuta toteutuvat, kun l2 = ±ρcl3 . Valitsemalla taas l2 = 1 saadaan l3 = ±1/ρc. Vasemmat ominaisvektorit muodostavat matriisin, jota merkitään L−1 :llä L−1 1 1 0 − c2 1 0 1 = ρc 1 0 1 − ρc (2.30) 2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 38 Hyperbolisen yhtälön määritelmänä voidaan pitää reaalisia ominaisarvoja ja niitä vastaavia ominaisvektoreita (2.30). Ominaisvektoreiden ratkaisu sujuu kuten yllä esitettiin: Yleensä jokin vektorin komponentti = 0 ja muuta ratkeavat vakiokerrointa vailla. Esimerkiksi yllä olisi toiseksi ja kolmanneksi vasemmaksi ominaisvektoriksi voitu yhtä hyvin valita 0, ±ρc, 1. Ominaisvektoreiden muodostaman matriisin (2.30) käänteismatriisi on ρ ρ − 1 2c 2c L= 0 1 2 0 ρ ρ − 2c 2c 1 2 (2.31) Vasempien ominaisvektoreiden muodostaman matriisin merkitys on siinä, että sen ˜ Kirjoittamalla yhtälö (2.26) kaikille omiavulla voidaan diagonalisoida matriisi A. naisarvoille, saadaan matriisimuodossa L−1 A˜ = ΛL−1 (2.32) missä Λ on ominaisarvojen muodostama lävistäjämatriisi. Nyt saadaan seuraavat yhteydet A˜ = LΛL−1 (2.33) ˜ Λ = L−1 AL (2.34) Kun otetaan huomioon yhteys (2.25) saadaan konservatiivisten suureiden suhteen kirjoitettu Jacobin matriisi muotoon A = MLΛL−1 M −1 (2.35) Tämä muoto on erittäin hyödyllinen implisiittisen ratkaisun yhteydessä. Merkitsemällä P = ML, jolloin P −1 = L−1 M −1 voidaan primitiivimuodossa oleva yhtälö (2.6) lausua muodossa ∂U ∂U + P ΛP −1 =0 (2.36) ∂t ∂x Hyperbolisen yhtälöryhmän määrittelynä voidaan käyttää myös sitä, että on olemassa similaarisuusmuunnos A = P ΛP −1. Tähän muunnokseen pohjautuvat monet tiheyspohjaiset ratkaisumenetelmät, esimerkiksi vuovektorin (flux-vector splitting) 2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS 39 ja vuon erotuksen ositukset (flux-difference splitting, käytetään myös nimitystä approksimatiivinen Riemann-ratkaisu). Vasempien ominaisvektorien lisäksi voidaan määritellä oikeanpuoliset ominaisvektorit R ˜ = RΛ AR (2.37) A˜ = RΛR−1 (2.38) josta saadaan On huomattava, että vasemmat ominaisvektorit ovat matriisin L−1 vaakarivejä ja oikeat ominaisvektorit matriisin R pystyrivejä. Kumpikin matriisi toteuttaa muodollisesti samanmuotoisen yhtälön (2.38) tai (2.33), joten R = L. Yksidimensioisessa esimerkissämme oikeanpuoleiset ominaisvektorit ovat siis matriisin (2.31) pystyrivejä. Eri tavoin määritellyt ominaisvektorit ovat ortogonaalisia ˜l(j) · r˜(k) = δjk (2.39) Oikeiden ominaisvektoreiden merkitys on siinä, että ne ovat verrannollisia karakteristisella nopeudella λj etenevän häiriön intensiteettiin. Koska yhtälöt (2.38) ja (2.33) ovat muodollisesti identtisiä, merkintätavoissa esiintyy helposti horjuvuutta. 2.5 Karakteristiset suureet ja niiden merkitys Yhtälö (2.36) voidaan kirjoittaa myös muotoon ∂U ∂U P −1 + ΛP −1 =0 (2.40) ∂t ∂x mistä nähdään, että määrittelemällä uudet ns. karakteristiset suureet δW = P −1 δU = L−1 M −1 δU = L−1 δu yhtälö voidaan kirjoittaa muotoon ∂W ∂W +Λ =0 (2.41) ∂t ∂x Hyperbolisilla yhtälöillä on siis säilymis- ja primitiivimuodon lisäksi karakteristinen muoto. Näistä vain säilymismuoto on yksikäsitteisesti määrätty, muut muodot voidaan valita usealla tavalla. Primitiivisuureet saadaan karakteristisista muunnoksella δu = LδW. Konservatiivisia ja karakteristisia suureita puolestaan sitovat yhtälöt δW = P −1 δU (2.42) δU = P δW (2.43) 2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS 40 Jälkimmäinen yhtälö voidaan myös kirjoittaa matriisin A ominaisvektorien r (j) avulla muodossa δU = X δwk r (k) (2.44) k mistä nähdään, että konservatiivisten suureiden muutos koostuu matriisin A oikeiden ominaisvektoreiden kuvaamista aalloista, joiden amplitudit ovat karakteristiset suureet δwk . Ominaisvektorit r (k) saadaan helpoimmin yhteydestä P = MR = ML matriisin P pystyriveinä. Yksidimensioisessa tapauksessa karakteristisia nopeuksia t Vaikutus− alue Karakteristinen pinta P x P:n riippuvuusalue xy−tasossa y Kuva 2.2: Kaksidimensioisessa tapauksessa hyperbolisella yhtälöllä muodostuu ns. karakteristinen kartio. ja suureita on kolme kappaletta. Karakteristikat ovat x, t -tasossa käyriä. Itse asiassa useampidimensioisella virtauksella muodostuu karakteristisia pintoja kuten kuvassa 2.2. Tarkasteltaessa esimerkiksi x-suuntaa, kuten tässä, karakteristikat ovat karakteristisen pinnan projektioita x, t-tasoon. Tässä yhteydessä on huomautettava, että laskennallisessa virtausdynamiikassa karakteristisilla pinnoilla on vähän käyttöä. Tämä johtuu siitä, että ratkaisumaailma on käytännössä aina yksidimensioinen kullakin laskentatilavuuden pinnalla pinnan normaalin suuntaisessa koordinaatistossa. Tähän palataan kohdassa 2.8. Todellisesta yksidimensioisesta mallista poiketen numeerisessa ratkaisussa muuttujien lukumäärä onkin 3-5 ja Jacobin matriisi muodostetaan jokaiseen koordinaattisuuntaan erikseen. Tällöin kaksidimensioisessa tapauksessa saadaan kaksi ja kolmidimensioisessa kolme u:n suuruista karakte- 2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS 41 ristista nopeutta. Tätä samaa ominaisarvoa λ = u vastaa näissä tapauksissa kaksi tai kolme ominaisvektoria. Yksidimensioinen tapaus kolmella yhtälöllä on selkeä, koska ominaisarvot ovat erilliset. Siinä karakteristisiksi suureiksi saadaan määritelmän δW = L−1 δu avulla 1 δp c2 1 δw2 = δu + δp ρc 1 δw3 = δu − δp ρc δw1 = δρ − (2.45) Jos suure φ on ajan ja paikan funktio, on sen derivaatta ajan suhteen ∂φ dx ∂φ dφ = + dt ∂t dt ∂x (2.46) ∂φ ∂φ dφ = + λi dt ∂t ∂x (2.47) Tällöin voidaan tulkita, että on suureen φ derivaatta pitkin karakteristikaa dx = λi dt (2.48) Näin ollen yhtälö (2.41) voidaan tulkita tavalliseksi differentiaaliyhtälöksi pitkin t t + ∆t C + C − C0 t i−1 A U i B i+1 x Kuva 2.3: Karakteristikoiden kulku x, t-tasossa. Pisteiden A, B ja U arvot on interpoloitava hilapistearvoista i. karakteristikaa. Tähän perustuu ns. karakteristikamenetelmä, jota havainnollistaa kuva 2.3. Karakteristiset yhtälöt voidaan diskretoida seuraavasti ρt+∆t − ρU − i 1 t+∆t (p − pU ) = 0 c2 i 2.6. KARAKTERISTIKAT JA REUNAEHDOT 1 t+∆t (p − pA ) = 0 ρc i 1 − pB ) = 0 ut+∆t − uB − (pt+∆t i ρc i 42 ut+∆t − uA + i (2.49) missä yläindeksittömät suureet ovat aikatasolta t. Menetelmän ongelma on se, ettei suureita pisteissä A, B ja U tunneta. Nämä arvot on interpoloitava hilapistearvoista i, mikä johtaa numeeriseen virheeseen. Mikäli käytettäisiin lineaarista interpolointia, päädyttäisiin numeeriseen diffuusioon. Toinen karakteristikamenetelmän ongelma on, ettei se ole säilymismuodossa eikä näin ollen säilytä ratkaisualueen massaa, liikemäärää ja energiaa. Markku Rajamäen VTT:llä kehittämä PLIMmenetelmä pohjautuu siihen, että ratkaisu hilapisteiden välillä lausutaan tarkemmin tiettyjen paloittain lineaaristen jakautumien avulla. Tällöin esimerkiksi epäjatkuvuuskohtaan liittyvä numeerinen diffuusio saadaan häviämään lähes kokonaan. PLIM-menetelmää on myös modifioitu varsinaisesta karakteristika-menetelmästä poiketen siten, että ratkaistavat suureet säilyvät. Karakteristikamenetelmää on käytetty varsin paljon yksidimensioisten ajasta riippuvien ongelmien ratkaisuun. Kun sekä äänen nopeus että tiheys muuttuvat ratkaisun kuluessa, karakteristikat ovat käyriä, joita yhden aika-askeleen kuluessa approksimoidaan suorilla. Putkistoille menetelmää on käytetty ns. vesi-iskujen (waterhammer) analysointiin. Tällöin voidaan usein hyvällä tarkkuudella pitää tiheyttä ja äänennopeutta vakioina. Ensimmäinen yhtälöistä (2.49) putoaa tällöin pois. Mikäli halutaan laskea myös karakteristikaa ∆t/∆x = u pitkin vakiona pysyvää termodynaamista suuretta, tiheyden sijasta parempi valinta on esimerkiksi entalpia. Tiheys voidaan laskea joka aika-askeleella tilayhtälöstä ρ = ρ(p, h). Tämä karakterististen suureiden valinta on parempi, koska esimerkiksi vedelle tiheyden muutokset voivat olla hyvin pieniä jolloin menetelmän tarkkuus kärsii. 2.6 Karakteristikat ja reunaehdot Karakteristikamenetelmän laajennus useampaan dimensioon on hankalaa. Menetelmällä on rajattu käyttö yksidimensioisissa sovelluksissa. Kokoonpuristuvalla alueella (Ma > 0,1) vaaditaan toimivalta menetelmältä säilymisominaisuutta. Karakteristikoita voidaan kuitenkin käyttää hyödyksi reunaehtojen antamisessa. Kuvassa 2.4 on hahmoteltuina sisään- ja ulosvirtausreunoilla karakteristikoiden kulku. Yli- 2.6. KARAKTERISTIKAT JA REUNAEHDOT C− C 0 3333 3333 C+ P 3333 03333 t 3333y l i s o o n i n e n C 3333 sisäänvirtaus + 3333 3333 C 0 3333 3333 3333 3333 3333 x = x 0 C− 43 y l i s o o n i n e n u l toasuv si r 3333 3333 P 3333 3333 1 3333 3333 3333 3333 3333 C−3333 x 3333 3333 3333 x = 1x C 0 a l i s o o n i n e n u l toasuv si r 3333 3333 3333 3333 C− 3333 3333 P1 C+ P0 3333 3333 3333 3333 t C+ 3333 3333 3333 3333 3333 3333 C 3333 3333 0 alisooninen 3333 3333 sisäänvirtaus 3333 3333 3333 3333 x 3333 3333 3333 3333 x = x 0 x = 1x Kuva 2.4: Karakteristikoiden suuntautuminen reunoilla erilaisissa virtaustilanteissa soonisessa tapauksessa kaikki karakteristikat osoittavat laskenta-alueeseen päin. Tämä tarkoittaa sitä, että kaikki kolme (yksidimensioisessa tapauksessa) reunaehtoa on annettava. Tämä pätee silloinkin, kun ratkaistaan säilymismuotoisia yhtälöitä, koska yhtälöiden fysikaalinen luonne ei muutu siitä miksikään. Jos sisäänvirtaus on alisooninen, yksi karakteristikoista osoittaa laskenta-alueesta ulospäin. Tämä tarkoittaa sitä, että vain kaksi sisäänvirtausehtoa voidaan antaa, kolmas tekisi probleemasta ylispesifioidun eli huonosti asetetun. Koska reunalla tarvitaan kolme suuretta, on kolmas reunaehto jollain tavoin määrättävä ratkaisualueen sisällä vallitsevista arvoista. Yleisin tapa on ekstrapoloida jokin konservatiivinen tai primitiivisuure. Myös karakteristinen suure voidaan ekstrapoloida. Tälle olisi tavallaan olemassa fysikaalinen perustelu, mutta käytännössä konservatiivisen suureen ekstrapolointi johtaa likimain samaan tulokseen yksinkertaisemmin. Kolmatta reunaehtoa nimitetään usein numeeriseksi reunaehdoksi ja muita kahta fysikaalisiksi ehdoiksi. Vastaavasti ulosvirtausreunalla, jos kaikki karakteristikat osoittavat laskentaalueesta ulos, mitään reunaehtoa ei saa antaa. Ratkaisu määräytyy tällöin täysin laskenta-alueen ratkaisusta ja tapaukseen liittyy tällöin vain numeerisia reunaehto- 2.6. KARAKTERISTIKAT JA REUNAEHDOT 44 Taulukko 2.1: Tarvittavien reunaehtojen määrä yksidimensioisille ja kolmidimensioisille (suluissa) Eulerin ja Navier–Stokes-yhtälöille Sisäänvirtaus Ulosvirtaus Ylisooninen Alisooninen Ylisooninen Alisooninen 3 (5) 2 (4) 0 (0) 1 (1) Euler 3 (5) 3 (5) 2 (4) 2 (4) Navier–Stokes ja. Yleisin tapa on jälleen suureiden ekstrapolointi muodossa tai toisessa. Alisoonisessa tapauksessa yksi karakteristika on ratkaisualueeseen päin, joten yksi suure on annettava fysikaalisena reunaehtona. Usein luonteva suure on paine ja sen kanssa yhteensopivia sisäänvirtaussuureita ovat tiheys ja nopeus. Tällöin massavirta ρu laskenta-alueeseen on kiinnitetty. Jos sisäänvirtausehdoksi annettaisiin paine, paineero tulisi kiinnitetyksi ja nopeus määräytyisi ratkaisun mukana. Eräät ratkaisumenetelmät, mukaan lukien karakteristikamenetelmä, toimivat siten, että vaikka reunoilla annettaisiin ylimääräisiä ehtoja, ne menetelmän luonteen vuoksi automaattisesti kytkeytyvät pois. Esimerkiksi van Leerin vuon ositusmenetelmässä havaitaan helposti vuon olevan alisoonisessa sisäänvirtaustapauksessa funktio vain kahdesta annetusta suureesta, jotka kuitenkin riippuvat monimutkaisella tavalla kaikista primitiivisuureista ja yhdestä laskenta-alueesta määräytyvästä suureesta. Edellä on tarkasteltu Eulerin yhtälöitä ja on syytä pohtia miten reunaehdot olisi annettava Navier–Stokes-yhtälöille ja erityisesti mitä tapahtuu yhtälöiden (1.45) määrittelemässä idealisoidussa tilanteessa. Aiemmin on todettu Navier–Stokes-yhtälöiden muodostavan vaillinaisesti parabolisen ryhmän. Reunaehtojen määrän pitäisi matemaattisessa mielessä olla tällöin taulukon 2.1 mukainen. Taulukossa on myös edellä esitetty reunaehtojen määrä Eulerin yhtälöille ja suluissa määrät kolmidimensioisessa tilanteessa. On syytä vielä korostaa, että tarkastelu pätee kokoonpuristuvalle tilanteelle ∂ρ/∂p 6= 0, mutta jos esimerkiksi vedellä pyritään laskemaan paineaaltojen kulkua, reunaehdot on silloinkin annettava taulukon mukaisesti. Aiemmin todettiin Eulerin yhtälöiden olevan idealisointi tilanteelle, jossa probleeman globaali Reynoldsin luku on suuri. Käytännössä on havaittu, että reunaehdot on syytä lähes aina antaa kuten Eulerin yhtälöille ei siis kuten taulukossa 2.1 on esitetty Navier–Stokes-yhtälöille. Reynoldsin luvut teknillisissä sovelluksissa vaihtelevat miljardista (laivat), sataan miljoonaan (liikennelentokone) ja alapäässä ehkä muu- 2.6. KARAKTERISTIKAT JA REUNAEHDOT 45 tamaan tuhanteen. Mitään osoitusta asialle ei ole olemassa, mutta saattaa olla mahdollista, että vasta kun Reynoldsin luku on suuruusluokkaa O(1), käytännössä ehkä Re ≈ 10, virtaus alkaa fysikaalisessa mielessä reunaehtojen suhteen vaatimaan taulukon mukaista käsittelyä Navier–Stokes-yhtälöille. Reunaehtojen ja erityisesti numeeristen reunaehtojen antamisen tärkeyttä korostetaan kaikissa CFD-kirjoissa, mutta kovin vähän konkreettista tietoa asiasta annetaan. Reunaehtojen antaminen on eräs tärkeä virtauslaskennan osa-alue, jossa käytännön kokemus on tärkeää ja johon viime kädessä asia pohjautuu. Eräs kokeilematta oleva ajatus tukeutuu kontrollitilavuusmenetelmän luonteeseen. Varsinainen reunaehtohan on vuo laskenta-alueen pinnalla. Tämä suo periaatteellisen mahdollisuuden antaa erikseen reunaehdot kitkattomalle vuon osalle ja kitkalliselle. Käytetyt ekstrapolaatiot saattavat toimia tällä tavoin: Eulerin yhtälöiden perusteella tehdään tarvittavat ekstrapoloinnit. Nämä puolestaan johtavat nollagradientteihin eli diffuusiovuo häviää laskenta-alueen ulkoreunalla. Tämä voidaan tulkita myös siten, että diffuusiovuolle on tällöin erikseen annettu arvo. Eulerin yhtälöt ovat siis idealisointi tilanteesta, jossa Re∞ → ∞. Vakiotiheyttä ja siitä seuraavaa yhtälöä ∇ · V~ = 0 voidaan puolestaan pitää idealisointina tilanteesta, jossa Ma∞ → 0. Jos tarkastellaan tilannetta, jossa ∇ · V~ = 0, niin aiem- min todettiin, että jäljelle jää vain liikemääräyhtälö, jossa nyt on kaksi suuretta: nopeus ja paine. Karakteristikoiden määräämiseen tarvitaan joku lisäehto, jolla painegradientista päästään eroon. Käytännössä ei ole (ainakaan tiedossa) muuta keinoa, kuin käsitellä painegradientti ’lähdeterminä’ ja siirtää se tavallaan ’yhtälön oikealle puolelle’. Tällöin nähdään suoraan, että liikemääräyhtälöllä on (yksidimensioisessa tapauksessa) yksi karakteristika dx =u dt (2.50) Sisäänvirtauskohdassa on nyt siis annettava yksi suure, nopeus. Paineelle ei siis näytettäisi tarvittavan reunaehtoa ollenkaan! Tämä tavallaan järjetön tilanne seuraa siitä, ettei jatkuvuusyhtälö ∇ · V~ = 0 määrittele paineen tasoa mitenkään, ainoas- taan paine-erot eli painegradientin. Näin ollen laskentamenetelmätkin, painekor- jaus, näennäispuristuvuus tai virtafunktio-pyörteisyys -menetelmä, antavat tulokseksi vain paine-eroja. Laskenta-alueessa siis tavallaan vallitsee eräänlainen ’systeemipaine’ ja virtausratkaisu antaa erot tähän referenssitasoon sekä nopeusjakau- 2.6. KARAKTERISTIKAT JA REUNAEHDOT 46 tuman. Jos paine ja tiheys eivät linkity toisiinsa tilayhtälön kautta, painekorjausmenetelmässä ei ole sisäänrakennettuna mitään keinoa painetason säätelemiseksi, laskennasta saadaan ainoastaan paine-erojakautuma. Paineen tason kiinnittäminen voidaan hoitaa kahdella tavalla. Tässä suositeltava tapa on näennäinen reunaehtojen käyttö. Tarkastelemalla tilannetta, jossa Ma → 0, käytössä onkin kaksi karakteristikaa (ilman energiayhtälöä) ja jos sisääntulossa an- netaan nopeus, luonteva valinta ulosvirtaukselle on paine. Jos täysin kokoonpuristumattomassa (käytössä on yksi karakteristika) tilanteessakin annetaan ulosvirtausreunalla paineen arvo, on painetaso kiinnitetty koko laskenta-alueessa fysikaalisesti mielekkäällä tavalla. Reunaehto ei ole todellinen reunaehto, koska tilanne ei vaadi sitä. Reunaehtopisteessä painekorjaus on = 0. (Reunaehtojen laskentaan palataan viidennessä luvussa). Voidaan lisäksi todeta, että vaikka kokoonpuristuvalla virtauksella ja esimerkiksi karakteristikamenetelmällä on mahdollista antaa myös nopeus ulosvirtausehtona, niin side-ehdolla ∇ · V~ = 0 tilanne tulisi sillä valinnalla huonosti asetetuksi, koska tällöin aina, myös ajasta riippuvassa tilanteessa, on ulos- virtauksen oltava yhtä suuri kuin sisäänvirtaus. Tämä on helppo nähdä integroimalla jatkuvuusyhtälö laskenta-alueen yli ja käyttämällä Gaussin lausetta Z V ∇ · V~ dV = Z S V~ · ~ndS = Z sis |V~ · ~n|dS − Z ulos |V~ · ~n|dS = 0 (2.51) Toinen tapa, joka on käytössä kaupallisissa ohjelmissa, on kiinnittää painetaso johonkin mielivaltaiseen pisteeseen laskenta-alueessa. Todellisessa tilanteessa tällä ei ole fysikaalista perustaa, mutta se toimii idealisoidussa tilanteessa. Vaikka käytännön laskennassa tiheyden annettaisiinkin muuttua, se ei kuitenkaan muuta tilannetta niin paljon, ettei laskenta silloinkin tiettyyn rajaan saakka onnistuisi tällä keinolla. On mielenkiintoista todeta, että jos virtaus käsitellään alhaisen Machin luvun virtauksena, on Eulerin yhtälöiden reunaehdot periaatteessa annettava, mutta laskenta ilmeisesti toimii myös kokoonpuristumattoman virtauksen ehdoilla. Tilanne on analoginen kitkallisen virtauksen reunaehdoille, joita kokemuksen mukaan ei edes pidä käyttää ennen kuin Reynoldsin luku on tarpeeksi pieni. Nyt voidaan samoin ajatella reunaehdoista, jotka tarvitaan vasta riittävän isolla Machin luvulla. Suosituksena tässä siis annetaan ensimmäinen reunaehtopaineeseen nojaava tapa, koska sillä on myös fysikaalinen perusta. On syytä vielä kerran korostaa, että kokoonpuristumattomuusoletuksella ∇ · V~ = 0 kyseessä ei ole oikea reunaehto, 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 47 vaan ainoastaan mielekäs tapa kiinnittää paine jossain kohtaa laskenta-aluetta. Tällä hetkellä on epäselvää onko reunaehtotyypillä sinänsä merkitystä ratkaisun stabiilisuuden kanssa. Usein käytetään ns. konvektiivista ulosvirtausehtoa, jolloin kaikki suureet ekstrapoloidaan ja paine sen sijaan kiinnitetään jossain mielivaltaisessa pisteessä. Mikäli jatkuvuusyhtälö toteutuu eksaktisti, paineen määräämistavoilla ei ole merkitystä. Käytännössä jatkuvuusyhtälö ei kuitenkaan toteudu eksaktisti painekorjauksen jälkeen. Tämä aiheutuu ratkaisun konvergoinnille välttämättömästä alirelaksoinnista. Onko tällöin merkitystä sillä seikalla, että ulosvirtausreuna on ’kiinteämpi’ paineen kiinnittämisen johdosta, on tällä hetkellä epäselvää. Jos ajatellaan reunoiltaan suljetun säiliön laskemista, paine on kuitenkin pakko kiinnittää keinotekoisesti jossain kohdassa laskenta-aluetta, mikä kuvaa myös sitä, ettei paineen antaminen jollain avoimen alueen reunalla ole varsinainen reunaehto. 2.7 Implisiittinen menetelmä Eulerin yhtälöillä Kun Machin luku on riittävän suuri, yhtälöryhmä (2.1) voidaan ratkaista eksplisiittisellä aikaintegroinnilla. Ensimmäiset tiheyspohjaiset menetelmät olivat eksplisiittisiä. Paljon käytetty oli peruskurssilla mainittu MacCormack-menetelmä. Konstruoidaan seuraavaksi implisiittinen vaihe Eulerin yhtälöille. Ratkaisussa voidaan käyttää avuksi karakteristisia suureita ja Jacobin matriisin A diagonalisointia. Yksidimensioisessa tapauksessa kontrollitilavuusmenetelmällä voidaan säilymisyhtälö diskretoida seuraavasti Vi ∆U ˆ n+1 + F ˆ n+1 = −Si+1/2 Fn+1 + Si−1/2 Fn+1 = −F i+1/2 i−1/2 i+1/2 i−1/2 ∆t (2.52) Koska vuovektori F riippuu vain ratkaistavien suureiden vektorista U, voidaan se linearisoida seuraavasti Fn+1 = Fn + ∂F ∆U ∂F ∂F ∆t = Fn + ∆t = Fn + ∆U = Fn + A∆U (2.53) ∂t ∂U ∆t ∂U Jos vuossa on diffuusio-osa, niin sekin voidaan linearisoida vuovektorin suhteen, jolloin saadaan toinen Jacobin matriisi. Tätä voidaan huomattavasti yksinkertaistaa ja siihen palataan jatkossa. 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 48 Yhdistämällä yllä olevat saadaan Vi ∆U = −Si+1/2 Fni+1/2 + Si−1/2 Fni−1/2 −Si+1/2 Ai+1/2 ∆Ui+1/2 +Si−1/2 Ai−1/2 ∆Ui−1/2 ∆t {z } | = Ri = explisiittinen vaihe (2.54) Yhtälössä esiintyy ratkaistavia suureita tilavuuksien pinnoilla i ± 1/2. Nämä arvot voidaan lausua joko keskeisdifferenssillä tai ylävirtapainottamalla. Koska ylävirtapainotus johtaa robustiin lävistäjävaltaiseen implisiittiseen vaiheeseen, käytetään tällä kurssilla vain sitä. Jacobin matriisi voidaan ylävirtapainottaa approksimatiivisesti ottamalla huomioon karakteristikoiden kulkusuunnat. Ensimmäisen kertaluvun diskretoinnilla (implisiittisessä vaiheessa ei juuri kannata käyttää korkeamman kertaluvun tarkkuutta, koska se ei vaikuta lopputulokseen) Jacobin matriisi ylävirtapainotetaan seuraavasti − Ai+1/2 ∆Ui+1/2 = A+ i+1/2 ∆Ui − Ai+1/2 ∆Ui+1 (2.55) missä A+ = P |Λ+ |P −1 A− = P |Λ− |P −1 (2.56) Yllä diagonaalimatriisit Λ± sisältävät positiiviset ja negatiiviset A:n ominaisarvot. On huomattava, että eksplisiittisen vaiheen residuaali Ri voidaan laskea tarkemmalla paikkadiskretoinnilla, jopa keskeisdifferenssillä, vaikka implisiittinen vaihe käsitellään ensimmäisen kertaluvun menetelmällä. Kokoamalla yllä olevat saadaan Vi ∆U − + − = Ri −Si+1/2 (A+ i+1/2 ∆Ui −Ai+1/2 ∆Ui+1 )+Si−1/2 (Ai−1/2 ∆Ui−1 −Ai−1/2 ∆Ui ) ∆t ⇒ −∆Ui+1 Si+1/2 A− i+1/2 + ∆Ui (I Vi − + Si+1/2 A+ i+1/2 + Si−1/2 Ai−1/2 ) ∆t −∆Ui−1 Si−1/2 A+ i−1/2 = Ri Ottamalla käyttöön peruskurssilla olleet merkinnät L+ x (ai ∆Ui ) ≡ ai+1/2 ∆Ui+1 − ai−1/2 ∆Ui L− x (ai ∆Ui ) ≡ ai+1/2 ∆Ui − ai−1/2 ∆Ui−1 (2.57) Tämä voidaan myös kirjoittaa siistimpään muotoon: ∆t − ∆t + − I+ Lx Si A+ ∆Ui = Ri i − Lx Si Ai Vi Vi (2.58) 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 49 Yhtälö (2.58) muodostaa blokkitridiagonaalisen ryhmän, kun peruskurssilla saatiin skalaariyhtälöille aina tridiagonaalisia ryhmiä. Matriisioperaatioita voidaan huomattavasti yksinkertaistaa, jos pidetään matriisi P paikallisesti vakiona. Tällöin se voidaan ottaa differenssioperaattoreiden ulkopuolelle ∆t ∆t − + − Lx Si Λ+ P −1 ∆Ui = Ri P I+ i − Lx Si Λi Vi Vi (2.59) Kertomalla matriisilla P −1 ja ottamalla huomioon karakterististen suureiden määritelmä W = P −1 δU ∆t − ∆t + − I+ Lx Si Λ+ ∆Wi = P −1 Ri i − Lx Si Λi Vi Vi (2.60) Karakteristisille suureille saadaan siis tridiagonaalisten yhtälöiden ryhmä, jotka voidaan ratkoa kukin erikseen. Eulerin yhtälöillä tämä vastaa skalaariyhtälön tridiagonaalista implisiittistä vaihetta ja se nopeuttaa huomattavasti laskentaa verrattuna blokkitridiagonaaliseen ratkaisuun. Yhtälöryhmä (2.58) voidaan yksinkertaistaa myös faktoroimalla se kahdeksi erilliseksi yhtälöksi, toinen pitkin positiivisia karakteristikoita ja toinen negatiivisia. Kun tähän yhdistetään eri suuntiin tehty approksimatiivinen faktorointi, saadaan LU-faktoroinnin (lower-upper) nimellä kulkeva menetelmä, josta on useita versioita. LU-faktorointi voidaan tulkita myös eräänlaiseksi Gauss-Seidel -iteraatioksi, josta tulee myöhemmin puhetta. Kun otetaan vielä huomioon, että matriisi P on hajotettavissa osatekijöihinsä, voidaan implisiittinen menetelmä Eulerin yhtälöillä purkaa osamatriisioperaatioihin, joita tulee useita. Aalto-yliopistossa kehitetyssä FINFLO-ohjelmassa käytetään diagonaalisesti dominoivaa LU-faktoroinnin versiota, jossa eri koordinaattisuunnissa tehtävien matriisioperaatioiden lukumäärä nousee yhteensä yli viidenkymmenen. Operaatiot ovat nopeita ja ne voidaan myös ohjelmoida kompaktissa muodossa. Eulerin yhtälöiden implisiittinen ratkaisu ei Jacobin matriisin diagonalisointiominaisuuksien vuoksi ole siis niin hankala operaatio kuin yhtälön (2.54) perusteella saattaisi näyttää. Diffuusio-osa käsitellään erikseen ja se voidaan joko faktoroida erikseen konvektioosasta tai yhdistää siihen. Ottaen huomioon että diffuusiovuo paikassa i + 1/2 on riippuvainen vain kahdesta laskentapisteestä Fv ,i+1/2 = Fv (Ui , Ui+1 ) (2.61) 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 50 se voidaan linearisoida kaikkien argumenttiensa suhteen Fv n+1 ,i+1/2 = Fv n,i+1/2 + ∂Fv ∂Ui ! ∂Fv ∆Ui + ∂Ui+1 i+1/2 ! ∆Ui+1 + O(∆U2 ) (2.62) i+1/2 Liikemääräyhtälön diffuusio-osan täydellinen linearisointi johtaa varsin täyteen ja monimutkaiseen matriisiin. Joskus sitäkin käytetään, mutta yleensä diffuusiovuon linearisointi yksinkertaistetaan. Se voidaan kaikissa tapauksissa perustaa kokoonpuristumattomuusoletukseen. Tällöin kaikkien yhtälöiden diffuusiovuot voidaan implisiittistä vaihetta varten approksimoida muodossa Fv,i+1/2 = −αi+1/2 Ui+1 − Ui ∆x (2.63) ja käyttäen linearisointia pisteessä i + 1/2 n Fv n+1 ,i+1/2 = Fv ,i+1/2 + αi+1/2 αi+1/2 ∆Ui − ∆Ui+1 ∆x ∆x (2.64) sijoittamalla tämä diskretoituun yhtälöön Vi ∆Ui n+1 = −Si+1/2 Fv n+1 ,i+1/2 + Si−1/2 Fv ,i−1/2 ∆t saadaan Vi αi+1/2 αi+1/2 αi−1/2 αi−1/2 ∆Ui = Ri −Si+1/2 ( ∆Ui − ∆Ui+1 )+Si−1/2 ( ∆Ui−1 − ∆Ui ) ∆t ∆x ∆x ∆x ∆x ⇒ −∆Ui+1 Si+1/2 αi+1/2 αi+1/2 αi−1/2 Vi + ∆Ui ( + Si+1/2 + Si−1/2 ) ∆x ∆t ∆x ∆x αi−1/2 = Ri −∆Ui−1 Si−1/2 ∆x (2.65) Periaatteessa diffuusiokerroin α on eri suuruinen eri yhtälöille ja massayhtälöllä diffuusiota ei ole ollenkaan. Jos tämä seikka halutaan ottaa huomioon ja silti selvitä tridiagonaalisilla yhtälöillä, vaihtoehdoksi jää diffuusion ja konvektion faktoroiminen toisistaan erilleen. Yleisemmin käytetty tapa on korvata diffuusiokerroin suurimmalla yhtälöissä esiintyvällä diffuusiokertoimella ja käyttää kaikille yhtälöillä sitä. Tämän vaikutus on sama kuin alirelaksaatiolla, koska muihin yhtälöihin tulee tällöin lisätyksi numeerista vaimennusta implisiittisessä vaiheessa (lisätty vaimennus ei tietenkään vaikuta ratkaisuun). Merkitsemällä k = αmax /∆x ja ottamalla 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 51 huomioon yhteys k = P kP −1 voidaan konvektio-osan ja diffuusio-osan Jacobin matriisit yhdistää A± = P (|Λ±| + kI)P −1 (2.66) Määrittelemällä Jacobin matriisi näin, voidaan yhtälöä (2.58) käyttää myös kitkallisen virtauksen yhtälöiden ratkaisun implisiittisenä vaiheena. Edellä oletettiin tilanne yksidimensioiseksi. Asia ei juuri monimutkaistu sovellettaessa kontrollitilavuusmenetelmää useammassa dimensiossa. Tällöin ratkaisevassa asemassa on kunkin laskentatilavuuden seinällä oleva paikallisesti määritelty suorakulmainen koordinaatisto. Muuntamalla yhtälöt tähän koordinaatistoon, ne säilyvät muodoltaan samanlaisina kuin karteesisessa koordinaatistossa. Karakteristiset suureet voidaan myös määritellä tässä koordinaatistossa, kun otetaan käyttöön pintaa vastaan kohtisuora nopeus u¯ = ~n · V~ = nx u + ny v + nz w (2.67) Korvaamalla tässä luvussa olevissa yhtälöissä nopeus u skaalatulla kontravarian- a) b) u u u T Kuva 2.5: (a) Kaksidimensioisen laskentakopin pintaa vasten kohtisuorassa koordinaatistossa lausutut nopeuskomponentit, (b) kolmidimensioisessa tapauksessa pinnan suuntaiset komponentit voidaan valita vapaasti. tilla nopeuskomponentilla u¯, ne säilyvät muodollisesti ennallaan. Kaksidimensioisessa tapauksessa voidaan yksikäsitteisesti määrittää myös tangentiaalinopeus uT kuten kuvassa 2.5. Kolmidimensioisessa tilanteessa on kaksi toisiaan vasten kohtisuorassa olevaa kopin pinnan suuntaista nopeuskomponenttia, jotka eivät ole yksikäsitteisesti määritellyt. Mikä tahansa valinta on käyttökelpoinen. Uudet paikalliset nopeuskomponentit saadaan globaalissa karteesisessa koordinaatistossa lausutuista 2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ 52 nopeuskomponenteista muunnosmatriisin avulla. Ratkaisua varten kannattaa yhdistää muunnokseen kaikki primitiivisuureet, joista vain nopeuskomponentit todellisuudessa muuntuvat. (2.68) u ¯ = Tu missä u¯ on pintaa vasten kohtisuorassa koordinaatistossa lausuttujen primitiivisuureiden muodostama pystyvektori. Kaksidimensioisessa tapauksessa T = 1 0 0 0 nx ny 0 −ny nx 0 0 0 0 0 0 1 (2.69) Primitiivisuureet saadaan käänteismatriisin T −1 avulla. Kolmidimensioisessa tapauksessa on löydettävä kaksi pinnan normaalia vasten kohtisuoraa vektoria. Vaikka näitä on ääretön määrä, niiden yksinkertainen määrittely on hankalaa. Valinnassa on varottava, ettei matriisia (2.69) vastaava matriisi ole singulaarinen millään kopin pinnan orientaatiolla. On myös huomattava, että pinnan normaalista puhuttaessa tarkoitetaan aina yksikkönormaalia, jolloin muunnoksissa nopeuden itseisarvo säilyy. Myös muunnosmatriisin determinantti on aina = 1. Jacobin matriisi voidaan saattaa vielä kaikkeen yleisimpään muotoon A± = MT L(|Λ± | + kI)L−1 T −1 M −1 (2.70) Matriisi saadaan siis jaetuksi kuuden matriisin ja yhden lävistäjämatriisin tuloksi. Kaikki matriisit ovat suhteellisen yksinkertaisia alkuperäiseen verrattuna. Kuten edellä mainittiin, on vielä mahdollista tehdä faktorointi positiivisten ja negatiivisten karakteristikoiden mukaan, jolloin lopullisten matriisien määrä kasvaa jo toiselle kymmenelle. Jos ajatellaan implisiittistä vaihetta, jossa matriisilla A kerrotaan eksplisiittisen vaiheen residuaalia, niin yhtälöstä (2.70) nähdään ensin residuaali muunnettavan primitiivisuureiden avulla lausutuksi, sitten kontravarianttien (tarkasti ottaen skaalattujen kontravarianttien), ja sen jälkeen karakterististen suureiden avulla lausutuksi. Tässä muodossa yhtälöistä on tullut skalaarimuotoisia ja implisiittiset operaatiot suoritetaan. Tämän jälkeen tehdään muunnokset toiseen suuntaan. On huomautettava, että implisiittinen vaihe voidaan suorittaa suoremminkin matriisiin A pohjautuen, mutta tällöin se on paljon monimutkaisempi. 2.8. AJAN SUHTEEN TARKKA LASKENTA 53 Jos yhtälöt käsitellään kokoonpuristumattomina yllä oleva alunperin blokkitridiagonaalinen ryhmä redusoituu skalaariyhtälöiden ryhmäksi, joilla on vain heikko riippuvuus toisistaan. Yleensä yhtälöt ratkaistaankin tällöin irrallaan toisistaan. Kun paineen ja muiden termodynaamisten suureiden välillä ei ole kytkentää, karakteristisia nopeuksiakin tulee vain yksi ja painetta ei voida linearisoida. Viimeksi mainitusta poikkeuksen tekee näennäispuristuvuuskeino, jossa matriisioperaatiot vastaavat edellä esitettyjä, mutta modifioiduilla matriiseilla. Skalaariyhtälöiden linearisointi käy hyvin esille Burgersin yhtälön avulla. Siinä tapauksessa vuo on 1 ∂u f = u2 − α 2 ∂x (2.71) ja U = u; A+ = max(u, 0) + α α ; A− = max(−u, 0) + ∆x ∆x (2.72) Joten implisiittinen vaihe saadaan seuraavaan muotoon −∆Ui+1 Si+1/2 [max(−u, 0) + +∆Ui [I α ]i+1/2 ∆x α α Vi + Si+1/2 (max(u, 0) + )i+1/2 + Si−1/2 (max(−u, 0) + )i−1/2 ] ∆t ∆x ∆x −∆Ui−1 Si−1/2 [max(u, 0) + α ]i−1/2 = Ri ∆x (2.73) Tässä olevat ∆U:n kertoimet ovat tärkeässä asemassa painekorjausmenetelmässä ja niihin ja niiden merkitsemistapaan ja Jacobin matriisin johtoon palataan seuraavissa luvuissa. 2.8 Ajan suhteen tarkka laskenta Peruskurssilla oli esillä, että kaikki MUSCL-kaavaan pohjautuvat vuon laskentatavat voidaan integroida Lax-Wendroff-tyyppisellä toisen kertaluvun aikaintegroinnilla. Yksinkertainen eksplisiittinen Eulerin menetelmä antaa huonoja tuloksia ja on tasapainotilan tyyppisiin tehtäviin tehoton lyhyen aika-askeleen vuoksi. Toisaalta taas Lax-Wendroff-integrointi tuottaa aika-askeleen pituudesta riippuvan ratkaisun, mikä ei sovellu tasapainotilan laskentaan. 2.8. AJAN SUHTEEN TARKKA LASKENTA 54 Implisiittisellä menetelmällä päästään aika-askeleen rajoituksista irti. On silti muistettava, että usein CF L = 1 on kuitenkin tarkkuuskriteeri, jota ei ainakaan kovin suuressa osassa laskenta-aluetta saa huomattavasti ylittää. Mikäli pitkää aika-askelta halutaan kuitenkin hyödyntää, mikä tasapainotilan tehtävässä tietysti on tarkoituskin, tulee yhtälöiden epälineaarisuus ongelmaksi. Implisiittiset vaiheet (2.65) ja (2.73) perustuvat linearisointiin ja tällöin jää epälineaarisuudesta aiheutuvaa virhettä lopputulokseen. Se näkyy mm. Burgersin yhtälössä ylilyöntinä epäjatkuvuuskohdassa. Epälineaarisuuden sisältämä virhe saadaan pois suorittamalla aika-askeleen sisällä iterointia (kts. peruskurssi). Iteroinnissa on jokainen aika-askel käsiteltävä kuten tasapainotilan tehtävä ja siirrettävä aikaderivaattatermi residuaaliosaan. Tarkastellaan asiaa yksidimensioisella esimerkillä. Konvektioyhtälö, esimerkiksi Burgersin yhtälö, voidaan diskretoida implisiittisellä Eulerin menetelmällä Uin+1 − Uin n+1 n+1 = −Fi+1/2 + Fi−1/2 (2.74) ∆t Mikäli halutaan iteroida, on linearisointi suoritettava olemassa olevan uuden ajanVi hetken suureen Uin+1,ν+1 suhteen, jossa yläindeksi ν viittaa iteraatiokierrokseen. Ensimmäisellä kierroksella sijoitetaan supennut arvo edelliseltä ajanhetkeltä Uin+1,1 = Uin . Tällöin aikaderivaattatermiksi tulee Eulerin menetelmällä Ut = Uin+1,ν+1 − Uin U n+1,ν + ∆Uin+1,ν − Uin = i ∆t ∆t (2.75) Jo tunnetut termit voidaan yhdistää residuaaliin joksi saadaan Riν = −Vi Uin+1,ν − Uin n+1,ν n+1,ν − Fi+1/2 + Fi−1/2 ∆t (2.76) vuotermit lasketaan jokaisella iteraatiokierroksella käyttäen edellisen iteraatiokierroksen arvoja. Kun iteraatio on supennut, residuaalin arvoksi tulee nolla ja implisiittisen menetelmän linearisoinnista aiheutuva virhe on nolla. Iteraatiokierrosten välillä päivitetään ratkaisuvektorin arvoa Uin+1,ν+1 = Uin+1,ν + ∆Uin+1,ν (2.77) ja lasketaan sen jälkeen uusi residuaali. Implisiittinen vaihe saadaan yhtälöstä (2.65), ainoastaan residuaalin määritys muuttuu. Yleensä jo muutama, joskus jopa vain kaksi, iteraatiokierrosta aika-askeleen sisällä parantaa tulosta huomattavasti. Kuitenkin monimutkaisessa tapauksessa turbulentilla virtauksella on mahdollista, että 2.9. EULERIN YHTÄLÖIDEN TARKASTELUA 55 joudutaan ottamaan jo pelkän stabiilisuuden vuoksi kymmeniä iteraatiokierroksia / aika-askel, mikä tekee ajan suhteen tarkoista laskuista erittäin aikaa vieviä. Aika-askeleen sisällä tapahtuva iterointi on myös mahdollista muilla kuin yksinkertaisella Eulerin menetelmällä. Peruskurssilla oli esimerkkinä kolmen aikatason integrointi. Tällöinkin siirretään aikaderivaattatermi residuaaliin. Joskus fysikaalinen aika-askel on niin pitkä, että aika-askeleen sisäistä iterointia on tarvetta alirelaksoida. Tämä käy päinsä käyttämällä ns. näennäisaika-askelta. Tällöin varsinaisen aikaderivaatan lisäksi käytetään aika-askeleen sisäistä näennäisaikaintegrointia. Yhtälö voidaan kirjoittaa muotoon Uτ + Ut + F(U)x = 0 (2.78) jolloin linearisoinnissa saadaan fysikaalisen aika-askeleen ∆t lisäksi näennäisaikaaskel ∆τ implisiittisen vaiheen diagonaalille. Pienentämällä sopivasti näennäisaikaaskelta saadaan ratkaisua alirelaksoiduksi. Tällöin stabiilisuus paranee, mutta tarvittavien iteraatiokierrosten määrä kasvaa. Myös näennäisaika-askeleen yhteydessä voidaan käyttää korkeamman kertaluvun diskretointeja fysikaaliselle aikaderivaatalle Ut . Termille Uτ käytetään aina implisiittistä Eulerin menetelmää. 2.9 Eulerin yhtälöiden tarkastelua Edellä on tarkasteltu Eulerin yhtälöiden ominaisuuksia, joiden kokemuksen mukaan tiedetään noudattavan Navier–Stokes-yhtälöiden ominaisuuksia. Tämän voidaan katsoa aiheutuvan siitä, että teknillisissä sovelluksissa globaali Reynoldsin luku on aina suuri. Tilanne on myös oletettu ajasta riippuvaksi, mutta erillinen tasapainotilan tarkastelu ei toisi esimerkiksi reunaehtoihin mitään uutta. Kokoonpuristuvia yhtälöitä ratkottaessa lisäksi aikaderivaatta on yhtälöissä muodossa tai toisessa mukana. Lähdettäessä ratkomaan virtausta yhtälöiden ∇ · V~ = 0 ja D V~ 1 + ∇p = ~b + ν∇2 V Dt ρ pohjalta, tilanne muuttuu. Paine on käsiteltävä lähdeterminä ja karakteristisia nopeuksia on vain yksi. Reunaehtojen määrä myös muuttuu ja paine ei määräydy yksikäsitteisesti. Laskennan suorittajan on silloin ymmärrettävä oletuksen merkitys. Reunaehtoja voidaan käyttää painetason määritykseen ja reunojen fysikaalinen 2.9. EULERIN YHTÄLÖIDEN TARKASTELUA 56 vaikutus todellisuudessa tapahtuu karakteristikoiden määrittelemällä tavalla. Mikäli ratkaisussa tiheys riippuu paineesta, myös ratkaisumaailma muuttuu hyperboliseksi ratkaisumenetelmästä riippumatta. Tällöin reunaehdot myös laskentamallissa määräytyvät karakterististen suuntien avulla, oli itse ratkaisutapa painekorjausmenetelmä tai jokin muu. Käytännössä tietynlaiset, oikeammin tilanteelle ∇ · V~ = 0 laaditut reunaehdot, saattavat silti toimia. Tämä edellyttää, että virtauksen Machin luku on riittävän pieni. 2.9. EULERIN YHTÄLÖIDEN TARKASTELUA 57 • Eulerin yhtälöillä ∂U ∂F ∂G ∂H + + + =0 ∂t ∂x ∂y ∂z (2.79) on edellä olevan yksikäsitteisen säilymismuodon lisäksi primitiivimuoto ja karakteristinen muoto, jotka voidaan valita usealla tavalla. • Hyperbolisilla yhtälöillä on aina similaarisuusmuunnos A = P ΛP −1. • Karakteristiset nopeudet saadaan helpoiten sopivan primitiivisuureiden avulla lausutun yhtälön avulla |A˜ − λI| = 0 (2.80) • Muunnos konservatiivisista suureista U primitiivisiin u M= ∂U ∂u (2.81) • Similaarisuusmuunnos A˜ = M −1 AM ja ˜ −1 A = M AM (2.82) • Matriisin L−1 vaakarivit ovat primitiivisuureiden suhteen muodostetun Jacobin matriisin A˜ vasempia ominaisvektoreita. L−1 A˜ = ΛL−1 (2.83) ˜ oikeita ominaisvektoreita • Matriisin R pystyrivit ovat A:n ˜ = RΛ AR (2.84) • R = L ja eri ominaisvektorit ovat ortogonaalisia. • Hyperboliset yhtälöt voidaan suureiden δW = P −1δU L−1 M −1 δU = L−1 δu avulla kirjoittaa karakteristiseen muotoon. = 2.9. EULERIN YHTÄLÖIDEN TARKASTELUA 58 • Täydellisillä Eulerin yhtälöillä sisään- ja ulosvirtausreunaehtojen määrä pohjautuu karakteristikoiden suuntiin. • Navier-Stokes yhtälöillä ja mahdollisesti tehdyillä lisäoletuksilla reunaehtojen määritys on hankala ja lähinnä kokemusperäinen tehtävä. • Reunaehdot voidaan jakaa fysikaalisiin ja numeerisiin ehtoihin. Eulerin yhtälöillä ja Navier–Stokes yhtälöillä on toisistaan poikkeavat ’slip’- ja ’no-slip’-ehdot kiinteillä pinnoilla. • Implisiittiset ratkaisut perustuvat vuovektorin linearisointiin Fn+1 = Fn + A∆U (2.85) • Jacobin matriisin diagonalisointiominaisuuksia voidaan käyttää tehokkaasti hyväksi implisiittisessä ratkaisussa. • Diffuusiovuon linearisointi pohjautuu yleensä approksimaatioon Fv,i+1/2 = Fv (Ui , Ui+1 ) (2.86) ja se voidaan myös yhdistää kitkattoman osan Jacobin matriisiin. • Pyöritysmatriisilla T voidaan suureet muuntaa paikallisesti kopin pintaa vasten kohtisuoraan koordinaatistoon. • Yleinen Jacobin matriisi Eulerin yhtälöiden vuovektorille A = MT LΛL−1 T −1 M −1 • Burgersin yhtälöllä ja skalaariyhtälöillä Jacobin matriisi on yksinkertainen. • Paine ei ratkea yksikäsitteisesti, jos tiheys ei riipu paineesta. Painegradientti on tällöin lähdetermi ja yhtälöille jää vain yksi karakteristinen nopeus dx/dt = u. Yhtälöiden luonne siis muuttuu, kun Ma → 0. • Aika-askeleen sisällä tehty iterointi parantaa implisiittisen menetelmän tulosta, koska epälineaarisuuteen liittyvät virheet saadaan eliminoiduksi. Päivitetty 23.1.2013 59 3 Ratkaisumenetelmien kertaus kontrollitilavuusmenetelmällä (Ferziger-Peric 21-84 ja kalvot) 60 4 Yksidimensioinen painekorjausmenetelmä 4.1 Taustaa Painekorjausmenetelmän varhaishistoria ei tätä kirjoitettaessa ole täysin selvillä. Ensimmäinen teknillisissä sovelluksissa esiintyvä painekorjausmenetelmä on Harlowin ja Welchin Los Alamosissa 60-luvun puolivälissä kehittämä marker and cell-menetelmä (MAC), josta oli artikkelit Physics of Fluids-lehdessä ja myöhemmin Scientific American-lehdessä. Viimeksi mainittu oli innoittajana mm. Seppo Laineen väitöskirjatyössä, joka 1970-luvun alussa tehtynä ei jäänyt kovin monia vuosia jälkeen yleisestä kehityksestä. Laineen väitöskirjassa tosin käytettiin virtafunktio–pyörteisyys-menetelmää, joka siihen aikaa oli vaihtoehto primitiivisuureiden käytölle. Nykyisin käytetään usein nimitystä painepohjaiset ratkaisumenetelmät (pressurebased methods), jotka eroavat luonteeltaan luvussa 2 esitetystä täydellisten yhtälöiden ns. tiheyspohjaisista menetelmistä. Klassista painekorjausmenettelyä on pyritty tehostamaan ns. kytketyllä ratkaisulla, jossa jatkuvuus ja liikemääräyhtälöt ratkaistaan yhtä aikaa. Tuloksena saadaan hyvin monimutkainen Jacobin matriisi, joka vaatii tehokkaan yhtälöryhmien ratkaisijan. Ensimmäiset varsinaiset virtaussimuloinnit olivat kaksidimensioisia. (Kaikkein vanhinta alan kehitystä edustaa John von Neumannin johdolla tehdyt yksiulotteiset shokin etenemisprobleemat, mutta niitä ei voida pitää varsinaisina virtaussimulointeina). Tietokoneiden kapasiteetti rajoitti laskennan kahteen dimensioon ja alhaiselle Reynoldsin luvulle. Jokainen virstanpylväs tietokoneiden kehityksessä on näkynyt virtausprobleeman koossa. CDC-7600 oli 60-luvun lopussa oman aikansa ’superkone’ ja Suomeen hankittu Univac-1108 hetken aikaa Euroopan tehokkain. Termi supertietokone otettiin käyttöön Cray-1 koneen myötä vuonna 1976, minkä 4.2. VALMISTAVA ESIMERKKI 61 jälkeen laskennallinen virtausmekaniikka lähti siihen nousuun, jossa se on vieläkin. Tekniikan alueella painekorjausmenetelmää sovelletaan etupäässä ns. teollisuusprosessien (industrial flows) simulointiin. Perinteisesti menetelmää on kehitetty piireissä, joilla ei ole ollut varaa tehokkaimpiin tietokoneisiin. Jos ajatellaan teknisiä sovelluksia, tunnetuin kehittäjäryhmä toimi Imperial Collegessa Lontoossa professori Spaldingin johdolla. Monilla nykyisillä kaupallisilla koodeilla on juurensa 70-luvulla Imperial Collegessa tehdyissä väitöskirjoissa. Algoritmi on tutkijoiden mukana levinnyt Imperial Collegesta ympäri maailmaa. Näin syntyivät mm. TASCflow- ja FLUENT-ohjelmat. Vanhimpia kaupallisia virtausratkaisijoita puolestaan on Spaldingin kehittämä PHOENICS. Supertietokoneita on etupäässä käytetty lento- ja puolustusvälinetekniikan sovelluksiin sekä toisaalta sääennustusteiden tekemiseen. Tietokonekapasiteetin puute on ilmeisesti eräs syy miksi riittävän tiheisiin laskentaverkkoihin, kappaleen realistiseen muotoon ja jopa diskretoinnin tarkkuuteen painekorjausmenetelmän yhteydessä kiinnitettiin kunnolla huomiota vasta 1990-luvulle tultaessa, jolloin tehokkaita työasemakoneita tuli markkinoille jo kohtuullisella hinnalla. Painekorjausta tai vastaavaa menettelyä on käytetty myös muissa kuin teknisissä sovelluksissa, esimerkiksi meteorologiassa ja turbulenssitutkimuksessa. Luvussa13 tullaan osoittamaan, että liikemääräyhtälöstä saadaan suoraan Poisson-tyyppinen yhtälö paineelle ilman mitään oletuksia diskretointitavasta. Meteorologit käyttävät painetta vastaavalle suureelle saadusta yhtälöstä nimitystä Helmholz-yhtälö. Koska menettelytapa on täysin yleinen, pikemminkin eräänlainen strategia, kuin yksittäinen menetelmä, sen ’keksijästä’ on vaikea saada selkoa. Käytössämme oleviin CFD-kirjoihinkaan vieraiden alueiden tiedot eivät helposti tule mukaan. 4.2 Valmistava esimerkki Painekorjausmenetelmä olisi kuitenkin voitu oikeastaan keksiä jo ennen tietokoneiden aikakautta, jolloin tehtiin suuriakin käsilaskentaan perustuvia analyysejä esimerkiksi rajakerrosyhtälöillä tai karakteristikamenetelmällä. Kaiken todennäköisyyden mukaan myös tasapainotilan virtausta yksidimensioisten putkien muodostamassa verkostossa laskettiin mitoitustarkoituksessa. Putkiverkko voi olla kaupungin 4.2. VALMISTAVA ESIMERKKI 62 vesi- tai viemäriverkko, jossa eri korkeuksilla olevia säiliöitä yhdistetään toisiinsa putkien avulla. Putkissa muodostuu toisaalta painehäviöitä ja niihin on sijoitettava sopiviin kohtiin pumppuja näiden voittamiseksi. Jos unohdetaan korkeuspainehäviöt saadaan yksinkertaisimmalla tavalla virtaus kahden pisteen i ja j välillä yhteydestä 1 Kij ρuij |uij | = pi − pj 2 (4.1) uij Pi Pj missä Kij on noodien i ja j välinen virtausvastuskerroin. Tässä kaikkein yksinkertaisimmassa mallinnuksessa vastuskertoimeen summataan välillä olevien toimilaitteiden tai putken mutkien kertavastukset ja putken seinämän kitka. Sekä kertavastuksille että seinämäkitkalle on jo kauan ollut saatavilla mittauksiin perustuvaa tietoa. Esimerkkeinä voidaan mainita kuuluisa venäläinen Idelchikin kirja kertavastuksista ja Moodyn kitkakerroin-käyrästö, joka on toisen maailmansodan ajalta. Yhtälön (4.1) ongelmana on pinta-alaltaan muuttuva putki, josta aiheutuva liikemäärän vuotermi pitäisi myös yhdistää vastuskertoimeen Kij . Parempi tapa on mallintaa yhtälöt aidosti yksidimensioisina liikemäärän vuotermin kanssa, kuten jatkossa kohdassa 4.5 tehdään. Usein yhtälön (4.1) tarkkuus riittää ja sitä on käytetty putkiverkkojen paine- ja virtausjakautumien laskennassa. Ratkaisutavoista ei ole tarkkaa tietoa, mutta kyseinen yhtälö saattaisi olla pohja seuraavassa esitetylle ’teknikkotasoiselle’ laskentasysteemille. (Ratkaisutapa sopisi myös hyvin jonkun sähköinsinöörin keksittäväksi, koska putkiverkko voidaan korvata sähköisellä analogialla ja samaa menetelmää voidaan käyttää sähköverkkojen laskentaan). Jos tarkastellaan kuvan 4.1 yksinkertaista putkiverkkoa, voidaan helposti havaita, että nopeudet ja sen avulla massavirrat ratkeaisivat, jos paineet tunnettaisiin numeroiduissa noodipisteissä. Yhtälö (4.1) on tavallaan liikemääräyhtälö, vastaten yhtälöä (1.45). Paine-ero on siinä lähdeterminä ja se tulee määritetyksi jatkuvuusyhtälön kautta. Jos meillä on käytössämme oikeat paineet, yhtälöstä (4.1) ratkeaa sellaiset nopeudet, että jatkuvuusyhtälö samalla toteutuu. Painekorjauksen idea perustuu siihen, että jatkuvuusyhtälön avulla korjataan paineita, kunnes iterointi suppenee tilanteeseen, jossa sekä jatkuvuusyhtälö että liikemääräyhtälö toteutuvat. Ratkaisua 4.2. VALMISTAVA ESIMERKKI 1 63 3 7 6 5 4 Kuva 4.1: Yksinkertainen putkiverkko. varten painehäviöyhtälö kannattaa kirjoittaa tässä tapauksessa muotoon 1 ′ K m ˙ ij |m ˙ ij | = pi − pj 2 ij (4.2) missä Kij′ = Kij /ρSij2 on eräänlainen dimensiollinen häviökerroin, m ˙ ij pisteiden i ja j välinen massavirta sekä Sij putken poikkipinta-ala. Kuhunkin painenoodiin eli putkiverkon solmuun liittyy massatase X (4.3) m ˙ ij = 0 j6=i Massatase määrittelee välillisesti paineen. Kannattaa myös huomata, että jos paineero korvataan jännitteellä U, massavirta sähkövirran voimakkuudella I ja merkitään ˙ ij |, saadaan sähköverkkoa kuvaavat yhtälöt U = RI ja R = 12 Kij′ |m P j6=i Iij = 0. Miten jatkuvuusyhtälöstä saadaan paine tai vaihtoehtoisesti vaikkapa sähköinen potentiaali? Periaatteessa voitaisiin linearisoida yhtälöt (4.2) ja (4.3) ja ryhtyä ratkaisemaan syntynyttä yhtälöryhmää. Tämä on kappaleessa 4.1 mainitun kytketyn ratkaisun perusidea. On osoittautunut kuitenkin oivalliseksi keinoksi ratkaista massavirta (tai nopeus) kahdessa vaiheessa. Ensiksi pidetään painetta vakiona ja käytetään edellisen kierroksen arvoja yhtälöä (4.2) ratkaistaessa. Sen jälkeen käytetään massatasetta hyväksi ja ratkaistaan painekorjaus. Tämän avulla saadaan myös massavirtakorjaus, jonka jälkeen jatkuvuusyhtälö (4.3) toteutuu eksaktisti. Liikemääräyhtälöön (4.2) muodostuu korjauksen jälkeen virhettä ellei massatasevirhe ollut = 0. Toistamalla sykli saadaan lopulta kumpikin yhtälö toteutumaan tarkasti. Tässä tapauksessa saadaan yksinkertainen liikemääräyhtälö ratkaistua tarkasti q m ˙ ∗ij = sign(pni − pnj ) 2|pni − pnj |/Kij′ (4.4) 4.2. VALMISTAVA ESIMERKKI 64 missä n viittaa edellisen kierroksen arvoihin, m ˙ ∗ij on massavirran uusi arvo ja funktio sign(pi − pj ) saa paineiden erotuksen etumerkin. Varsinaiset virtausyhtälöt (yksidimensioisetkin) ovat epälineaarisia useamman massavirran (tai nopeuden) arvon suhteen. Tällöin ainoaksi keinoksi jää linearisointi. Niin voidaan tehdä nytkin 1 ˙ nij |m ˙ nij | + (pni − pnj )]/(Kij′ |m ˙ nij |) = Rij /(Kij′ |m ˙ nij |) ∆m ˙ ij = [− Kij′ m 2 (4.5) missä Rij on yhtälön (4.2) määrittelemä residuaali. Tämän jälkeen uusi massavirta saadaan yhteydestä m ˙ ∗ij = m ˙ nij + ∆m ˙ ij . Voidaan havaita, että linearisoidussa yhtälössä on nollalla jako mahdollista, mikä täytyy estää. Aiemmin on ollut esillä keino käyttää aikaderivaattatermiä liikemääräyhtälössä. Tässä tapauksessa saadaan siis massavirta ratkaistuksi joko tarkasti tai approksimatiivisesti. On syytä todeta, että yhtälöön (4.5) perustuva tapa on todennäköisesti nopeampi kuin yhtälö (4.4). Tämä johtuu siitä, että neliöjuuren otto on laskennallisesti raskas ja myös siitä, että tulos tässä vaiheessa on joka tapauksessa approksimatiivinen, jos käytössä ollut painekenttä ei ollut tarkka. Merkitään nyt sellaista uutta massavirtaa, joka toteuttaa jatkuvuusyhtälön m ˙ ij :llä ja painehäviöyhtälöstä (4.2) olemassa olevalla painekentällä ratkaistua massavirtaa m ˙ ∗ij :llä. Tällöin m ˙ ij = m ˙ ∗ij + m ˙ ′ij (4.6) Painekorjausmenetelmän eräs vakiintuneimmista tavoista on merkitä ’*’-suureilla arvoja, jotka eivät ole lopullisia, vaan iteraatiosyklin jonkin vaiheen välituloksia. Tässä tapauksessa yhtälön (4.2) ratkaisun jälkeisiä. Lähes yhtä vakiintunut tapa on käyttää pilkullisia arvoja korjattaessa paineita ja nopeuksia jatkuvuusyhtälön avulla. Sijoittamalla korjattu massavirta m ˙ ij yhtälön (4.3) mukaiseen massataseeseen saadaan X j6=i X m ˙ ′ij = − j6=i m ˙ ∗ij = −∆m ˙ ∗i (4.7) missä ∆m ˙ ∗i on noodiin i liittyvä massataseen virhe. Yhtälö siis yksinkertaisesti määrittelee massavirtakorjausten summaksi saman kuin massataseen virhe, kuten pitääkin. Linearisoimalla yhtälö (4.2) ja olettamalla yhtälön residuaali nollaksi, saadaan Kij′ |m ˙ ∗ij |m ˙ ′ij = p′i − p′j (4.8) 4.2. VALMISTAVA ESIMERKKI 65 Sijoittamalla tästä saatu massavirtakorjaus m ˙ ′ij yhtälöön (4.7) saadaan paineiden korjauksille p′i yhtälö p′i − p′j = −∆m ˙ ∗i ′ ∗ K | m ˙ | ij j6=i ij X (4.9) Jokaiselle painenoodille i voidaan kirjoittaa yllä olevan muotoinen yhtälö. Kun massatasevirheet tunnetaan, voidaan paineet, jotka toteuttavat jatkuvuusyhtälön, ratkaista saadusta yhtälöryhmästä (4.9). Tämä yksinkertainen painekorjausalgoritmi voidaan pukea seuraavaan muotoon: 1. Edellisen iteraatiokierroksen painekentällä ratkaistaan liikemääräyhtälöä vastaavasta painehäviöyhtälöstä (4.2) massavirrat joko yhtälöstä (4.4) tai (4.5). Ensimmäisellä iteraatiokierroksella voidaan valita reunaehtopaineita lukuunottamatta pi = 0. On syytä muistaa, että painekorjauksesta saadaan vain paine-erot, jos tilayhtälöä ei ole käytössä. Sama koskee sähköistä potentiaalia, jos menetelmää käytetään sähköverkkojen ratkaisuun. Reunaehtopaineinakin siis käytetään paine-eroja johonkin referenssipaineeseen, esimerkiksi ilmakehän paineeseen. 2. Lasketaan noodikohtaiset massatasevirheet ∆m ˙ ∗i = P j6=i m ˙ ∗ij . Jos on saavu- tettu riittävä tarkkuus (∆m ˙ ∗i on annetun kriteerin alapuolella kaikilla i:n arvoilla), iteraatio lopetetaan. 3. Mikäli massatasevirhettä oli jäljellä ratkaistaan painekorjausyhtälö (4.9). 4. Korjataan paineet yhtälöstä pi = p∗i + p′i ja massavirtakorjaukset yhtälöstä (4.8). Päivitetään myös massavirrat yhteydestä (4.6). Palataan kohtaan 1. Painekorjausmenetelmä yksinkertaisessakin muodossa saattaa tuntua mystiseltä ’reseptiltä’. Jos ajattelemme kahden epälineaarisen yhtälön (4.2) ja (4.3) ratkaisua, niin ensimmäisenä mieleen tuleva keino on yhtälöiden linearisointi ja syntyvän yhtälöryhmän ratkaisu eli aiemmin mainittu kytketty ratkaisu. Käytännössä on osoittautunut, että syntyvä yhtälöryhmä ei ole yhtä hyvin käyttäytyvä kuin painekorjausyhtälö. Yksinkertaisempi ja monessa suhteessa parempi keino on suorittaa liikemääräyhtälön ratkaisu kahdessa vaiheessa. Ensin pidetään paineita vakioina, ikään kuin yhtälön lähdetermeinä. Toisessa vaiheessa taas ratkaistaan painetta ja 4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA 66 paineen muutoksen aiheuttamaa massavirran muutosta. Liikemääräyhtälön linearisointi kutistuu muotoon (4.8), koska yhtälön residuaalin oletetaan olevan = 0. Tätä toista vaihetta säätelee massatase, joka pakotetaan toteutumaan eksaktisti. Tässä kuvattu painekorjausalgoritmi putkiverkoille on niin yksinkertainen ja seuraa suoraan perusyhtälöistä, että on pidettävä suoranaisena ihmeenä, jos sitä ei ole käytetty ennen MAC-menetelmää. Seuraavassa tehtävä lähempi tarkastelu paljastaa, että algoritmi sisältää kaikki varsinaisten virtausyhtälöiden ratkaisussa vaaditut piirteet. 4.3 Painekorjausyhtälön ominaisuuksia Painekorjausmenetelmät (joita voidaan kehittää ääretön määrä) on tapana esittää edellä kuvatun algoritmin muodossa. Syynä on se, että eri yhtälöt perinteisesti ratkaistaan erillään toisistaan ja kaiken ytimenä on painekorjausyhtälö. Eräissä menetelmissä yhtälö saatetaan muodostaa suoraan paineille (SIMPLER) tai sitten saatetaan ratkaista myös korjausten korjauksia (PISO). Painekorjausmenetelmien päämuunnelmilla on perinteisesti käytetty periaatteessa huvittavia lyhenteitä. Edellä kuvaamamme menetelmä on lähinnä ns. SIMPLE-algoritmi ja tässä yksinkertaisessa tapauksessa nimi kuvaakin ratkaisutapaa varsin hyvin. Algoritmi muodostaa eräänlaisen ketjun, jota itse asiassa voidaan alkaa purkamaan lähes mielivaltaisesta kohdasta. Tässä esitetty perusalgoritmi on tosin niin pelkistetty, että voidaan aloittaa vain joko kohdasta 1 tai 2. Kokoonpuristuvia yhtälöitä puolestaan ratkaistaan yhdessä, jolloin ’algoritmi’ supistuu periaatteessa yhden suuren tyyppiä (2.58) olevan yhtälöryhmän ratkaisuun. Näiden menetelmien yhteydessä ei edellä esitetyn kaltaisia ’reseptejä’ esitetäkään. Aiheellisesti voidaan vielä kysyä, miksei yllä olevia yhtälöitä (4.2) ja (4.3) aina ratkaista yhtä aikaa? Tämä siis on periaatteessa mahdollista, mutta silloin yhtälöryhmästä tulee muodoltaan monimutkainen. Sellaiselle on kehitetty ratkaisijoita (esim. Galpin, Doormaal ja Raithby 1985). Tällä ns. kytketyllä ratkaisijalla on eräs edulliselta kuulostava ominaisuus: Se tuottaa tarkan ratkaisun Navier-Stokes yhtälöille rajalla Re → 0 eli silloin, kun liikemääräyhtälö on lineaarinen konvektiotermin puuttumisen vuoksi. Kytketty ratkaisu (simultaneous solution) on käytössä eräissä kaupallisissa virtausratkaisijoissa, mutta se ei välttämättä ole edellä esitettyä huo- 4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA 67 mattavasti yleisempää sarjamuotoista (sequential solution) algoritmia tehokkaampi. Tämä johtuu linkitetyn yhtälöryhmän monimutkaisuudesta ja sen vastapainona painekorjausyhtälön (4.9) eräistä edullisista ominaisuuksista. Jatkossa tällä kurssilla käytetään vain peräkkäistä ratkaisua. Yhtälöllä (4.9) nähdään olevan seuraavat ominaisuudet aii = − P j6=i aij = aij ≤ 0 P 1 ′ ˙ ∗ij | j6=i Kij |m kun ≥0 j 6= i (4.10) Matriisi on singulaarinen, jos massavirta on nolla. Tämä on yllä esitetyn metodin heikkous, mutta se voidaan hoitaa joko aikaderivaatan avulla tai alirelaksaatiolla. Toisaalta nähdään matriisin lävistäjän olevan aina yhtä suuren kuin muiden alkioiden summa vastakkaismerkkisenä. Tämä on edullista iteratiivisten ratkaisumenetelmien kannalta. Esimerkiksi Gauss-Seidel menetelmä suppenee, jos Scarboroughin kriteeri P j6=i aij ≤1 <1 kaikille yhtälöille ainakin yhdelle yhtälölle (4.11) aii toteutuu. Nyt on siis kasvatettava painekorjausyhtälön lävistäjävaltaisuutta. Tämä = onnistuu samoilla keinoilla kuin singulaarisuuden esto. Virtausyhtälöissä saattaa olla myös ns. lähdetermi, joka linearisoidaan aina vain lävistäjäalkiota kasvattavalla tavalla. Tähän palataan jatkossa. Painekorjausyhtälö on putkiverkolla harva ja se voidaan myös ratkaista suoralla menetelmällä. Yhtälö on eräässä mielessä ’Poisson-tyyppinen’ ja varsinaisille virtausyhtälöille saadaan aina Poisson-yhtälö painekorjauksille. Tämä yhtälö on elliptistä tyyppiä ja joskus kokoonpuristumattomia virtauksia nimitetäänkin ’elliptisiksi’. Nämä ovat vakiintuneita nimityksiä laskennallisessa virtausmekaniikassa, mutta eräässä mielessä harhaanjohtavia. Tarkkaan ottaen Poisson yhtälö paineelle p olisi ∇2 p = b (4.12) Painekorjausyhtälö vastaa jossain määrin tämän diskretoitua vastinetta. Käytännössä joudumme aina kasvattamaan kerroinmatriisin lävistäjävaltaisuutta. Tällöin kyseessä ei oikeastaan olekaan Poisson-yhtälö, vaan lähinnä Helmholzin yhtälön ∇2 p + k 2 p = b (4.13) 4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA 68 diskreetti vastine. Meteorologit puhuvatkin esimerkiksi ’nopeasta Helmholz-ratkaisijasta’, kun tarkoittavat insinöörikielellä ’nopeaa Poisson-ratkaisijaa’. Aiemmin on todettu paineen ratkeavan vain paine-eroina. Putkiverkolla voidaan paine kiinnittää fysikaalisesti järkevästi reunaehtojen avulla. Jos näin ei tehtäisi tai alue olisi suljettu, painekorjausyhtälö ei ratkeaisi ollenkaan. Tämä on seuraus kokoonpuristumattomuusehdosta. Tällöin täytyy ulosvirtauksen olla sama kuin sisäänvirtauksen. Tämä tarkoittaa sitä, ettei ulosvirtausnoodin jatkuvuusyhtälö anna mitään lisäinformaatiota. Seurauksena on, että eri noodeille kirjoitetut jatkuvuusyhtälöt eivät ole lineaarisesti riippumattomia ja tällöin yhtälö ei tietenkään ratkea. Patankar mainitsee, että tässä tapauksessa iteratiivinen yhtälöryhmän ratkaisu konvergoi johonkin tilaan, joka riippuu alkuarvauksesta. Koska vain paine-erot ovat merkitseviä, tulos on käyttökelpoinen. Sen sijaan suora ratkaisu kaatuu. Jos ratkaistavana on reunoiltaan suljettu säiliö on helppo nähdä, että silloin käy samalla tavalla. Jos tiheys ratkaistaan tilayhtälöstä, paine sen sijaan ratkeaa. Täysin kokoonpuristumattomalle nesteelle on pakko asettaa jokin lisäehto muotoa pi = 0, sopivasti valitulla indeksillä i. Kuten luvussa 2 suositeltiin, paine saadaan kiinnitettyä fysikaalisesti järkevien reuna-arvojen kautta ja silloin myös painekorjausyhtälön ongelma korjaantuu. Putkiverkolla tämä merkitsee paineen kiinnittämistä jossain sopivassa, vaikkapa vesitornia kuvaavassa noodissa. Painekorjausmenetelmässä on erittäin tärkeää ymmärtää, että korjaamalla massavirtoja (tai nopeuksia) yhtälöstä (4.8) tai vastaavasta, jatkuvuusyhtälö toteutuu sen jälkeen eksaktisti painekentän arvoista huolimatta. Voisimme siis asettaa kertoimille 1/Kij′ |m ˙ ∗ij | mielettömät epäfysikaaliset arvot, jotka tuottaisivat järjettömän pai- nejakautuman, mutta täsmällisesti toteutuvan jatkuvuusyhtälön! Kun edellä esitetty painekorjausyhtälö muodostetaan, käytetään apuna lausekkeen ∆uij ≈ − 1 (∆pi − ∆pj ) Aij (4.14) kaltaista linearisointia. Tässä kerroin Aij on muodostettava siten, että yhteys vastaa liikemääräyhtälöstä saatua linearisointia. Edellä oli Aij = Kij′ |m ˙ ∗ij |. Silloin pai- nekorjaus ajaa ratkaisua myös kohden liikemääräyhtälön ratkaisua. Linearisoitaessa liikemääräyhtälö, kuten edellä tehtiin, tulos on luonnollisesti toivottu. Asetelma muuttuu ongelmalliseksi, jos jatkuvuusyhtälössä olevia nopeuksia, siis koppien rajapinnoilla tai esimerkissämme putkissa olevia nopeuksia, approksimoidaan jol- 4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT 69 lain ei-triviaalilla tavalla (kts. esim. yhtälö (5.51)) ja näitä nopeuksia linearisoimalla johdetaan yhtälöä (4.14) vastaava yhtälö. Pohjana tulee siis olla liikemääräyhtälö ja yleisimmin käytetyssä ns. Rhie–Chow-interpoloinnissa pintanopeudet saadaankin liikemääräyhtälön avulla. Silloin sekä pintanopeuksien että liikemääräyhtälön linearisointi tuottavat muodon (4.14), joka vastaa samalla liikemääräyhtälön linearisointia. Rhie–Chow-interpolointiin palataan jatkossa. Jatkuvuusyhtälön toteutuminen olisi toivottavaa jokaisella iteraatiokierroksella. Yhtälöstä (4.14) laskettujen nopeuskorjausten jälkeen näin tapahtuukin. Sen sijaan, jos nopeuskorjausta alirelaksoidaan, jatkuvuusyhtälö ei toteudukaan, mutta nopeuskorjaus ajaa ratkaisua iteraation kuluessa oikeaa tulosta kohti. Ongelmia jatkuvuusyhtälön eksaktin toteutumisen kanssa tulee myös jos tiheys ei ole vakio. 4.4 Skalaariyhtälön ratkaisu ja Patankarin säännöt Putkiverkkoratkaisussa voidaan ottaa hyvin yksinkertaisesti huomioon myös lämpötilat. Energiayhtälöksi tasapainotilassa saadaan haaran kokonaisentalpian Hij avulla X j6=i m ˙ ij Hij ≈ X m ˙ ij (cp T )ij = 0 (4.15) j6=i Toisinaan ratkaisussa käytetään lämpötiloja Tij , mutta mikäli lämpötilaa käytetään jo eksplisiittisessä vaiheessa (residuaalissa), energiayhtälö on approksimatiivinen. Ratkaisussa haarojen entalpiat tai lämpötilat on lausuttava noodipisteiden avulla. Esimerkissämme ainoa toimiva ratkaisu on katsoa mistä noodista virtaus on tulossa. Kuvassa 4.2 käytetään noodin i lämpötilaa, jos virtaus on positiivinen ja noodin j jos virtaus on negatiiviseen suuntaan. Ti . mij Tj Kuva 4.2: Lämpötilan määräytyminen noodipisteiden arvoista. 4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT 70 Yhtälö (4.15) voidaan kirjoittaa muotoon Hi X X m ˙ ij + out (4.16) m ˙ ij Hj = 0 in missä positiivinen massavirta m ˙ ij on noodista i ulospäin ja negatiivinen noodia i kohti. Usein käytetään FORTRANin MAX- tai MIN-käskyjä vastaavia merkintöjä Hi X max[m ˙ ij , 0] + j6=i X min[m ˙ ij , 0]Hj = 0 (4.17) min[m ˙ ij , 0]cp,j Tj = 0 (4.18) j6=i Jos ratkaistaan suoraan lämpötiloja, saadaan Ti cp,i X max[m ˙ ij , 0] + j6=i X j6=i Tarkastelemalla skalaariyhtälöä, havaitaan sen olevan lineaarinen. Periaatteessa voisimme ratkaista suoraan lämpötiloja, mutta se ei yleensä ole järkevää, vaan yhtälö on syytä linearisoida ja käyttää lämpötila tai entalpiakorjauksia implisiittisessä vaiheessa. On huomattava, että käytännön ongelmissa yhtälö linearisoidaan yleensä entalpian suhteen implisiittisessä vaiheessa. Tässä yksinkertaisessa esimerkissä se ei ole tarpeen lineaarisuuden vuoksi. Painekorjausyhtälöstä poiketen kerroinmatriisi on nyt epäsymmetrinen, mutta toteuttaa ehdot aii = − aij ≤ 0 Ehdon aii = − P j6=i P j6=i aij ≥ 0 kun (4.19) j 6= i aij voidaan havaita seuraavan suoraan massan säilymisestä, mutta ehto ei toteudu lämpötilaratkaisussa, ellei cp ole vakio. Noodin entalpiaarvoksi tässä lähdetermittömässä tapauksessa tulee massavirroilla painotettu keskiarvo naapurinoodien entalpioista. Jos lisäämme energiayhtälön ratkaisun algoritmiin massavirtakorjausten jälkeen, saadaan aina järkevät entalpiat tai lämpötilat, koska massatase toteutuu. Jos massataseeseen jää virhettä on mahdollista, että entalpiat alkavat heilahdella levottomasti. Tämä asia voidaan korjata helposti. Ei lasketakaan kerrointa aii ulosmenomassavirroista, vaan yhteyden aii ≡ − P in P out m ˙ ij = m ˙ ij avulla sisääntulomassavirroista. Toinen tapa on lisätä lävistäjälle mas- sataseen virhe, mikä johtaa identtisesti samaan tulokseen. Jos energiayhtälössä on lähdetermi, olisi ratkaisun realistisuuden kannalta tietysti edullisempaa, että massatase toteutuisi jokaisella kierroksella tarkasti. 4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT 71 Kun energiayhtälö lisätään ratkaisuun, klassisen painekorjausalgoritmin rakennusosat ovat kasassa. (Tässä yhteydessä energiayhtälö tarvittiin vain konvektiotermin diskretoinnin periaatteen esittämisen vuoksi. Aiemmin esitetty malliprobleemamme (1.45) ei sisällä energiayhtälöä). Jos tarkastelemme asiaa fysikaalisesti, malli on eräänlainen tankki–tuubi-järjestelmä. Paineet ja lämpötilat ratkaistaan ’tankeissa’, joiden ei todellisuudessa tarvitse aina olla säiliöitä, vaan joihin osa putkistoa on yhdistetty yhdeksi ekvivalentiksi tilavuudeksi. Tankit ovat yhdistetyt toisiinsa virtausteillä, joita kuvaa epälineaarinen painehäviötermi. Ratkaisualgoritmissa tankkien paineita korjataan vähitellen. Lopulta saadaan sellainen painekenttä, joka tuottaa liikemääräyhtälöstä jatkuvuusyhtälön toteuttavan ratkaisun. Jokaisen painekorjauksen jälkeen seuraa massavirtakorjaus, joka toteuttaa jatkuvuusyhtälön eksaktisti jokaisella iteraatiokierroksella, mikäli alirelaksaatiota ei ole nopeuskorjauksessa. Energiayhtälön ratkaisu on mukana passiivisena skalaarina ja tässä lineaarisessa tapauksessa saadaan jokaisella kierroksella energiayhtälön toteuttava lämpötilajakautuma. Kuhunkin noodiin tuleva energiavirta tuo naapurinoodeista (tankeista) siellä vallitsevassa lämpötilassa olevaa nestettä. ’Tuubeissa’ ei lämpötilojen eikä paineiden arvoja lausuta. 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 Kuva 4.3: Yksidimensioinen säiliö ja putki-järjestelmä. 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 33333 Jos ratkaisumenetelmän peruselementtejä sovelletaan yksidimensioiselle virtaustielle, voidaan tulos hahmotella kuvan 4.3 tapaan. Paine- ja lämpötilanoodeja vastaa ’tankit’, joihin putki on jaettu. Näiden välillä olevat virtaustiet on kuvaan piirretty putkimaisiksi, mutta vakiopoikkipintaisella putkella virtausteihin liittyy myös tilavuus, joka sijaitsee painenoodien puolivälissä, ja jonka tilavuus on puolet rinnakkaisten painekoppien tilavuuksista. Olemme tulleet määritelleeksi kuvassa 4.4 olevan tavanomaisesta poikkeavan hilatyypin, ns. limitetyn hilan (staggered grid), joka on erittäin sopiva painekorjausmenetelmän yhteydessä. Lämpötilaratkaisun yhtey- 4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT 72 dessä lämpötilat konvektoituivat ylävirran suunnassa olevasta noodista. Kyseessä on selvästikin ensimmäisen kertaluvun ylävirtadiskretointi. Limitetty hila ja yksinkertainen ylävirtamenettely konvektiolle, olivat pitkään painekorjausratkaisun peruskivet ja ovat eräässä mielessä sitä vieläkin ainakin implisiittisen vaiheen osalta. } liikemääränoodi } painenoodi Kuva 4.4: Limitetty hila. Patankar perustelee kirjassaan pitkään kummankin asian oleellisuutta virtausratkaisussa. Nämä perustelut eivät enää siinä mielessä päde, että limitettyä hilaa ei välttämättä tarvita ja ensimmäisen kertaluvun menetelmää ei edes saa käyttää. Kyseisten elementtien avulla saadaan kuitenkin periaatteessa idioottivarma järjestelmä ja sen perusideat on osittain saatava toteutumaan implisiittisessä vaiheessa, so. muodostettaessa ratkaistavia yhtälöryhmiä. Patankar listaa neljä periaatetta, jotka diskretoinnin tulee toteuttaa: 1. Vuo laskentatilavuuden rajapinnalla tulee laskea konsistentilla tavalla: toisesta kontrollitilavuudesta ulos = toisesta sisään. Tämä ei ole muuta kuin yleinen säilymisperiaate, joka eräissä poikkeustapauksissa, kuten Chimera-hilalla, voi jäädä paikallisesti toteutumatta. 2. Positiiviset kertoimet lävistäjällä aii ja negatiiviset kertoimet lävistäjän ulkopuolella. Tämä periaate on tärkeä implisiittisessä vaiheessa. Eksplisiittisessä vaiheessa periaate on sama kuin monotonisuusehto (kts. peruskurssi), joka on aiemmin todettu liian rajoittavaksi. Voimme siis eksplisiittistä residuaalia laskettaessa käyttää korkeamman kertaluvun diskretointia, mutta implisiittinen vaihe suoritetaan ensimmäisen kertaluvun tarkkuudella. Aiemmin osoitettiin kertoimien tällöin toteuttavan kyseiset ehdot. 3. Lähdetermi mainittiin aiemmin linearisoitavan vain lävistäjää kasvattavalla tavalla. Tämä tarkoittaa, että lähdetermiä ei linearisoida naapurinoodien suh- 4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT 73 teen. Pisteen i (tai P ) suhteen lähdetermi kirjoitetaan muotoon qφ = qφ,C + qφ,P φ (4.20) Jotta linearisointi voidaan suorittaa, on kertoimen qφ,P oltava pienempi kuin nolla. Yleensä asianlaita näin onkin. Positiivinen kerroin merkitsisi lähdetermin kasvua suureen φ kasvaessa, mikä on fysikaalisesti epästabiili tilanne. Kun laskennassa käytetään delta-muotoa, saadaan Patankarin alkuperäistä lauseketta (4.20) yleisempi esitys qφ = qφ∗ + ∂qφ ∆φ ∂φ (4.21) missä derivaatan ∂qφ /∂φ on siis oltava pienempi kuin nolla. 4. Neljäs sääntö koskee yhtälöryhmän kertoimia. Aiemmin todettiin sekä painekorjausyhtälön että energiayhtälön kertoimille yhteys aii = − X aij (4.22) j6=i Käytännössä tämä sääntö on pikemminkin lähtökohta, koska lävistäjää pyritään kasvattamaan. Yhteys seuraa suoraan vuon konsistentista laskennasta tilavuuksien rajapinnalla, joten se on myös jossain mielessä seurausta säännöstä 1. Iteroinnissa sääntö takaa suureiden muutoksille järkevät naapurinoodeista riippuvat arvot. 4.5 Yksidimensioiset virtausyhtälöt Ennen kuin perehdytään painekorjausmenetelmään malliyhtälöille (1.45), tarkastellaan yksidimensioisia virtausyhtälöitä. Niiden avulla on mahdollisuus tarkemmin johtaa yhtälön A∆φ = b kerroinmatriisille ja vasemman puolen pystyvektorille lausekkeet. Ratkaisun perusperiaatteet ovat sen jälkeen samat kuin putkiverkkoesimerkissä. Laajennus kolmeen dimensioon ei tuo yhtälöiden luonteeseen enää mitään oleellisesti uutta. Yksidimensioisia malleja käytetään esimerkiksi prosessien simuloinnissa ja ydinreaktoreiden turvallisuusanalyyseissä. Toimiakseen malleihin on yhdistettävä suuri määrä kokeellista tietoa lämmönsiirtokorrelaatioiden yms. muodossa. Yksidimensioinen malli toimii myös hyvänä pohjana monidimensioiselle diskretoinnille. Luvussa 1 tarkasteltiin jo yksidimensioisten yhtälöiden muo- 4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT 74 qρ i − 1/2 q" } Liikemääränoodi pi i + 1/2 pi + 1 } P a i nneo o d i Kuva 4.5: Yksidimensioinen diskretointi limitetyllä hilalla toja. Jatkuvuusyhtälöstä (1.6) saadaan sen diskretoiduksi muodoksi Vi dρi + (Sρu)i+1/2 − (Sρu)i−1/2 = (qρ )i dt (4.23) Tällä kurssilla tiheys pidetään vakiona, jolloin aikaderivaattatermi putoaa jatkuvuusyhtälöstä periaatteessa pois. Täydellisyyden vuoksi tiheys pidetään kuitenkin mukana jatkossa olevissa muissa lausekkeissa. Liikemääräyhtälön (1.34) yhteydessä on oltava tarkkana paineen integroinnissa seinien yli. Käyttämällä limitettyä hilaa saadaan liikemääränoodille i + 1/2 Vi+1/2 d(ρu)i+1/2 +(Sρu2)i+1 −(Sρu2 )i +(Sp)i+1 −(Sp)i −pi+1/2 (Si+1 −Si ) = (qρ uqx +qm )i+1/2 dt (4.24) Laskentatilavuuden kiinteällä seinällä vallitsee paine pi+1/2 ja seinän x-komponentti on poikkipinta-alojen erotus. Jatkuvuus- ja liikemääräyhtälöiden oikealle puolelle on kirjoitettu lähdetermejä. Yksidimensioisessa tarkastelussa voidaan massalähteellä qρ ottaa huomioon virtauskanavan seinästä tuleva massavirta. Kyseinen massavirta voi tuoda myös x-suuntaista liikemäärää, jolloin uqx on massalähteen xsuuntainen nopeuskomponentti. Jos lähde on kohtisuorassa putkea vasten, on huomattava että uqx = 0. Liikemäärän lähdetermi qm sisältää puolestaan seinämäkitkan, gravitaation ja mahdolliset muut tilavuusvoimat. Esimerkiksi pumpun vaikutus voidaan kuvata lähdetermillä. Energiayhtälö voidaan kirjoittaa usealla eri tavalla. Yleensä kokoonpuristumattomissa tapauksissa voidaan olettaa kineettinen energia ρV 2 /2 pieneksi termiseen 4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT 75 energiaan nähden. Vuotermissä on tällöin entalpia, mutta aikaderivaatassa sisäenergia. Käytetään seuraavassa ratkaistavana suureena entalpiaa h, jolloin yhtälön kummallekin puolelle on lisättävä paineen aikaderivaatta. Energian taseeksi saadaan yhtälön (1.18) avulla Vi dpi dρhi + (Sρuh)i+1/2 − (Sρuh)i−1/2 = (qρ hq + qm u + qT )i + Vi dt dt (4.25) missä qT on siirtyvä lämpöteho. Edellä olevissa yhtälöissä on otettava huomioon lähdetermien yksiköt. Energiayhtälössä lähdetermit lausutaan wateissa. Lämpöteho saadaan lämpövuosta q ′′ kertomalla se noodin seinämän pinta-alalla. Lähdetermien lähempi tarkastelu osoittaa, että niissä on käytävä määrätynlainen manipulointi läpi, jossa esiintyy noodin tilavuus, seinämä- ja poikkipinta-alat. Lähdetermien tarkastelu on tämän kurssin ulkopuolella. Yksidimensioisessa tapauksessa diffuusiotermi yleensä jätetään pois kuten yhtälöissä (4.23)...(4.25) tehtiin. Diffuusion merkitys on suuri vain putken seinää vasten kohtisuorassa suunnassa. Yksidimensioisessa mallissa tämä vaikutus esitetään lähdetermien avulla, joilla mallinnetaan kitkaa ja lämmönsiirtoa. Edellä olevat yhtälöt voidaan kirjoittaa myös massavirran m ˙ avulla yhtenäiseen muotoon Vi dρi +m ˙ i+1/2 − m ˙ i−1/2 = (qρ )i dt d(ρu)i+1/2 + (mu) ˙ i+1 − (mu) ˙ i dt +(Sp)i+1 − (Sp)i − pi+1/2 (Si+1 − Si ) = (qρ uqx + qm )i+1/2 dpi d(ρh)i + (mh) ˙ i+1/2 − (mh) ˙ i−1/2 = (qρ hq + qm u + qT )i + Vi Vi dt dt Vi+1/2 Painekorjauksessa massatase on keskeinen ja siksi massavirta on nytkin käyttökelpoinen apusuure. Usein painekorjauksen avulla korjataan massavirtoja, joskus nopeuksia. Erityisesti limitetyllä hilalla massavirtakorjaus on kätevä, koska se heijastuu suoraan skalaarisuureiden taseisiin. Tarkastellaan diskretointia kuvan 4.5 avulla. Voidaan havaita, että massatase ja skalaarisuureen tase käsitellään samalla tavoin kuin putkiverkkoesimerkissä. Entalpian arvot hi±1/2 perinteisessä SIMPLEmenetelmässä perustuivat yksinkertaiseen ylävirtapainotukseen. Parempi tulos saadaan tietenkin jollain MUSCL-diskretoinnilla. Kuten muistetaan F-P:ssä käytetään keskiarvoa noodipisteiden arvosta, mikä johtaa puolestaan keskeisdifferenssiin. 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 76 Liikemääräyhtälö (4.24) ei ole yhtä elegantissa muodossa kuin putkiverkolla. Limitys vaikuttaa jossain määrin liikemääräyhtälön lähdetermeihin, jotka osittain riippuvat massalähteistä, mutta diskretoidaan näistä poikkeavassa kohdassa. Lähdetermien käsittelyssä keskiarvottaminen ei kuitenkaan aiheuta ongelmia. Limitetyllä hilalla massavirrat (ja nopeudet) on määritelty skalaarikoppien seinillä pisteissä i ± 1/2. Kokemus on osoittanut, että myös liikemääräyhtälön vuotermissä voidaan käyttää massavirtojen keskiarvoja m ˙ i = 1/2 (m ˙ i+1/2 + m ˙ i−1/2 ) ainakin riittävän alhaisella nopeusalueella. Tällöin nopeudet ui+1 ja ui ovat konvektoituvia suureita, jotka interpoloidaan hilapistearvoista ui±1/2 ja ui±3/2 . Kuten on jo todettu aiemmin tämä tapa johtaa Burgersin yhtälön ratkaisussa ylilyöntiin ja parempi tapa olisi käsitellä vuotermi ylävirtapainottamalla sitä kokonaisuudessaan, kuten Roen menetelmällä, mutta tällöin liikemääräyhtälön käsittely tulisi muista yhtälöistä poikkeavaksi konvektion osalta. Tämä on ratkaisematon ongelma. Onneksi vuotermin diskretointi ei sinänsä muuta painekorjausalgoritmia, joten seuraavassa käytetään yksinkertaista keskiarvoon perustuvaa konvektionopeuden laskentatapaa. Voidaan myös todeta, että implementoitaessa painekorjaus monidimensioiseen tapaukseen tavanomaisella laskentahilalla edut liikemäärän vuon ’väärästä’ diskretoinnista ilmeisesti ovat haittoja suuremmat. Tämä aiheutuu saavutetusta kaikkien yhtälöiden yhdenmukaisuudesta vuotermin suhteen. Edellä on kiinnitetty huomiota etupäässä painekorjausyhtälön johtamiseen ja todettu limitetyn hilan johtavan hyvin käyttäytyvään painekorjausyhtälöön. (Voisi ehkä todeta myös toisinpäin painekorjausyhtälön johtavan limitettyyn hilaan). Hilatyypillä on muitakin hyviä ominaisuuksia, joihin palataan seuraavassa luvussa. Tässä yhteydessä kannattaa kiinnittää huomiota siihen, että jatkuvuusyhtälössä massavirrat ja liikemääräyhtälössä painegradientti tulee symmetrisellä tavalla diskretoiduksi. Tämä ei aiheuta vaimennusta ratkaisuun, kuten korkeankin kertaluvun ylävirtamenetelmät aina aiheuttavat. Vaimennusta diskretointiin tulee kuitenkin konvektoituvista suureista ellei näitäkin yritetä ratkaista keskeisdifferenssillä. 4.6 Painekorjaus limitetyllä hilalla Seuraavassa johdetaan putkiverkkoesimerkin kaltainen painekorjausmenetelmä yksidimensioisille yhtälöille. Tässä oletetaan tiheys vakioksi, mutta pidetään se kui- 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 77 tenkin mukana vuotermeissä täydellisyyden vuoksi. Näin saadaan mukaan massavirrat, jotka voidaan helposti laajentaa yleiseen muuttuvatiheyksiseen tapaukseen. Myöhemmin käsitellään lyhyesti myös tilayhtälön käyttöä. Ensimmäisenä ratkaistaan liikemääräyhtälö. Ratkaisua varten yhtälö on linearisoitava. Tässä käytetään edellä esitettyä muotoa konvektiotermille. Kuten on todettu Burgersin yhtälöllä käytetty Roen menetelmä voitaisiin myös ottaa käyttöön liikemääräyhtälön yhteydessä eikä se muuttaisi ratkaisun perusluonnetta. Yksinkertaisuuden vuoksi seuraavassa ei linearisoida lähdetermejä. Niiden mukaan ottaminen on suoraviivaista yhtälön (4.21) mukaan. Ratkaistavina suureina käytetään nopeutta ja paine-eroa. Näistä edellisen tilalle olisi voitu valita myös massavirta, mutta sekään ei muuta menetelmän luonnetta. Tässä tehdyn valinnan avulla saadaan yksinkertaisimmat yhtälöt. Aikaderivaatta pidetään mukana estämässä nollalla jako ja aika-askeleen pituutta säätelemällä alirelaksoidaan ratkaisua. Yksidimensioinen liikemäärän vuo voidaan korkeamman kertaluvun menetelmällä pinnalla i kirjoittaa muotoon Fi = (mu) ˙ i + Si pi = max(m ˙ i , 0)uli − max(−m ˙ i , 0)uri + Si pi (4.26) missä arvot uli ja uri saadaan interpoloimalla pisteistä i ± 1/2 ja i ± 3/2 MUSCL- kaavalla. Implisiittistä vaihetta varten kirjoitetaan 1. kertaluvun ylävirta-approksimaatio max(m ˙ i , 0)ui−1/2 − max(−m ˙ i , 0)ui+1/2 + Si pi (4.27) Vuo koostuu konvektio-osasta ja painetermistä. Linearisoimalla konvektiovuo F liikemääräkopin pinnalla i käyttäen ensimmäisen kertaluvun ylävirtamenetelmää saadaan Fin+1 = Fin + ∂Fin ∆u = Fin +max(m ˙ i , 0)∆ui−1/2 −max(−m ˙ i , 0)∆ui+1/2 (4.28) ∂u Vastaavasti pinnalla i + 1 n+1 n Fi+1 = Fi+1 + n ∂Fi+1 n ∆u = Fi+1 +max(m ˙ i+1 , 0)∆ui+1/2 −max(−m ˙ i+1 , 0)∆ui+3/2 ∂u (4.29) Yllä linearisointi u:n suhteen tarkoittaa periaatteessa linearisointia kaikkien esiintyvien nopeuksien suhteen. Ylävirtapainotus on hoidettu käyttämällä max-funktiota, jolloin sulkulauseke on aina positiivinen. Tapa on sama kuin Patankarin kirjassa ja 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 78 siinä on se hyvä puoli, että muistisäännöllä ’lävistäjä positiivinen, muualla miinusmerkki’ tehdään todennäköisesti vähemmän virheitä. F-P puolestaan käyttää minimeitä, mikä periaatteessa johtaa samaan lopputulokseen. Käytännössä pyrimme tridiagonaaliseen yhtälöön, jolloin riippuvuus vain laskentakopin seinämän molemmin puolin vallitsevista arvoista otetaan huomioon. Yhtälöissä n viittaa iteraatiokierrokseen. On huomattava, että vasta liikemääräyhtälön ratkaisun jälkeen meillä on käytössämme nopeus u∗ . Paine käsitellään lähdeterminä kierrokselta n. Diskretoiduksi yhtälöksi tulee V ρi+1/2 + max(m ˙ i+1 , 0) + max(−m ˙ i , 0)]∆ui+1/2 ∆t − max(−m ˙ i+1 , 0)∆ui+3/2 − max(m ˙ i , 0)∆ui−1/2 = [ −mu ˙ i+1 + mu ˙ i − (Sp)i+1 + (Sp)i + pi+1/2 (Si+1 − Si ) + (qρ uqx + qm )i+1/2(4.30) | {z u = Ri+1/2 } u Yhtälön oikealle puolelle saadaan liikemääräyhtälön residuaali Ri+1/2 . Kuten pe- ruskurssillakin residuaali saadaan kätevimmin laskettua vuoarvojen erotuksena. Tässä tapauksessa on vielä lisättävä kiinteällä pinnalla oleva paineesta aiheutuva vuo u pi+1/2 (Si+1 − Si ) ja mahdollinen lähdetermi. Ilman lähdetermiä saadaan Ri+1/2 = n −Fi+1 + Fin + pi+1/2 (Si+1 − Si ). Muuttuvapoikkipintainen seinä siis synnyttää pai- neesta riippuvan vuotermin residuaaliin. Residuaali vastaa painekorjauksen yhteydessä usein käytetyn standardiyhtälön AW φW + AP φP + AE φE = QP (4.31) ’lähdetermiä’ QP . Lisäksi nähdään yhtälöstä (4.30) AW = − max(m ˙ i , 0) AE = − max(−m ˙ i+1 , 0) V ρi+1/2 AP = + max(m ˙ i+1 , 0) + max(−m ˙ i , 0) ∆t (4.32) Jatkuvuusehdosta: sisäänvirtaus noodiin P = ulosvirtaus noodista P seuraa, että max(m ˙ i , 0) + max(−m ˙ i+1 , 0) = max(−m ˙ i , 0) + max(m ˙ i+1 , 0). Tällöin kerroin AP riippuu myös suoraan kertoimista AE ja AW AP = V ρi+1/2 − AW − AE ∆t (4.33) Kuten aiemmin energiayhtälön yhteydessä mainittiin, tämä muoto on turvallisempi, koska se takaa lävistäjävaltaisuuden silloinkin, kun jatkuvuusyhtälö syystä tai 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 79 toisesta ei toteudu. Lähes vastaava yhtälö saataisiin, vaikka tiheyttä ei olisi oletettu vakioksi. Yhtälön (4.30) mukaista linearisointia kutsutaan Picardin iteraatioksi. Linearisoimalla konvektiovuo nopeuden suhteen saataisiin itse asiassa (Sρu2 )n+1 = (mu) ˙ n + 2(Sρu)n ∆u = (Sρu2 )n + 2m∆u ˙ (4.34) Kerroin 2 yleensä unohdetaan ja näin tehtiin yksinkertaisuuden vuoksi myös yhtälön (4.30) yhteydessä. Myöhemmin havaitaan, että käyräviivaisella hilalla kertoimen mukanaolo johtaisi erittäin monimutkaiseen järjestelmään. Lisäksi jättämällä kakkonen pois kaikkien yhtälöiden kertoimista, siis myös skalaariyhtälöiden, tulee samoja. Tämän hetkinen vaikutelma on, että liikemääräyhtälössä kerroin ’2’ eli tarkka linearisointi kannattaisi tehdä lävistäjäalkion i ≡ P suhteen, mutta jättää tekemättä naapurinopeuksien suhteen. Onneksi linearisointiongelma ei ole suuri, kun muistetaan yhtälön (1.2) periaate. Yksidimensioisessa tapauksessa saatiin siis tuttu tridiagonaalinen yhtälö (4.31) nopeuksille. Mitään linearisointia ei paineen suhteen tehdä tässä vaiheessa. Kun nopeuksien muutokset on ratkaistu, ne päivitetään u∗i+1/2 = uni+1/2 + ∆ui+1/2 (4.35) Tässä uni+1/2 on edellisen kierroksen nopeus ja u∗i+1/2 liikemääräyhtälöstä saatava nopeus, joka ei ole vielä kierroksen n + 1 lopullinen tulos. Se saadaan vasta, kun sekä paineita että nopeuksia on korjattu jatkuvuusyhtälön avulla. Sijoitetaan nyt liikemääräyhtälöön un+1 = u∗ + u′ pn+1 = p∗ + p′ (4.36) Tässä pilkulliset suureet ovat korjauksia, joiden jälkeen uuden kierroksen lopulliset arvot toteuttavat jatkuvuusyhtälön, mutta eivät enää liikemääräyhtälöä ellei massataseen virhe ole nolla. Vastaava menettely tehtiin putkiverkkoesimerkissä yhtälöillä (4.6)-(4.8). Kun otetaan huomioon, että ’*’-suureet toteuttavat liikemääräyhtälön ja paine on edelliseltä kierrokselta p∗ = pn , saadaan AW,i+1/2 u′i−1/2 +AP,i+1/2 u′i+1/2 +AE,i+1/2 u′i+3/2 = −(Sp′ )i+1 +(Sp′ )i +p′i+1/2 (Si+1 −Si ) (4.37) 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 80 Tässä indeksointi on kirjoitettu selvyyden vuoksi osittain ilmansuuntien avulla AP,i+1/2 ≡ ai+1/2,i+1/2 . Jos painetta ja putken poikkipinta-alaa approksimoidaan yhteyksillä pi+1/2 = 1/2 (pi+1 + pi ) ja Si+1/2 = 1/2 (Si+1 + Si ) saadaan AW,i+1/2 u′i−1/2 + AP,i+1/2 u′i+1/2 + AE,i+1/2 u′i+3/2 = −Si+1/2 (p′i+1 − p′i ) (4.38) Yhtälön oikean puolen yksinkertaisempaa esitystä olisi tietysti voitu käyttää hyväksi jo liikemääräyhtälön eksplisiittisessä vaiheessa residuaalia laskettaessa, mutta yhtälö (4.30) jätettiin tarkoituksellisesti kontrollitilavuusmuotoon, jossa painekin siis esiintyy vuon lausekkeessa. Voidaan havaita, että painegradientti yksidimensioisessa tapauksessa tulee kerrotuksi liikemääränoodin puolivälissä olevalla pinta-alalla, joka on sama kuin skalaarikopin seinämän pinta-ala (kuva 4.5). Seuraavassa vaiheessa eri painekorjausmenetelmät eroavat toisistaan ehkä eniten. Yhtälöä (4.38) on tarkoitus käyttää jatkuvuusyhtälön kanssa. Aiemmassa putkiverkkoesimerkissämme tämä oli suoraviivainen sijoitustoimenpide. Nyt nopeuskorjaukset riippuvat naapurikoppien nopeuskorjauksista. Yksinkertaisin tapa on tehdä väkivaltaa näille ja kirjoittaa approksimatiivisesti AP,i+1/2 u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i ) (4.39) Tämä on SIMPLE-menetelmän yhteydessä tehty approksimaatio. Yhtälö vastaa putkiverkkoyhtälöä (4.8). SIMPLE on olevinaan lyhenne sanoista Semi-Implicit Method for Pressure-Linked Equations. Nimitys on harhaanjohtava, koska kyseessä ei ole puoli-implisiittinen menetelmä vaan implisiittinen. Puoli-implisiittisellä tarkoitetaan menetelmää, jossa osa yhtälöiden (4.23)-(4.25) termeistä lausutaan edelliseltä ajanhetkeltä. Nyt kyseessä on vain iteraation eräässä vaiheessa muutaman termin huomiotta jättäminen. Kun vielä otetaan huomioon, ettei tämän tasoinen numeerinen algoritmi käytäntöön sovellettaessa ole mitenkään yksinkertainen, on ehkä ymmärrettävää, ettei F-P halua edes selvittää nimityksen perusteita. Nopeuskorjaus voitiin johtaa varsin yksinkertaisesti, mutta massataseeseen tarvitaan massavirtakorjaus. Tällöin jos tiheys ei olisi vakio, olisi tehtävä linearisointi (Sρu)′i+1/2 = (Sρ)i+1/2 u′i+1/2 + (Su)i+1/2 ρ′i+1/2 (4.40) Tiheyden muutokselle riittää tässä yhteydessä linearisointi paineen suhteen ρ′ ≈ ∂ρ ′ p ∂p (4.41) 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 81 Käytännössä tämä usein jätetään tekemättä. Linearisointi tulee tärkeäksi, kun Machin luku on lähellä ykköstä tai suurempi. Kun Machin luku on suurempi kuin yksi, painekorjausyhtälö muuttuu näiden linearisointien vuoksi hyperboliseksi. Jotta laskenta onnistuisi, on myös vuon laskentaa muutettava. F-P:ssä on esitetty miten tämä voidaan tehdä (luku 10). Tässä yhteydessä voidaan todeta, että järjellisempi tapa on käyttää kyseiseen tarkoitukseen paremmin soveltuvaa algoritmia, kuten esim. Roen menetelmää (kts. Hirsch). Yleisempää on alhaisella nopeusalueella käyttää yhtälöä (4.41) vain jatkuvuusyhtälön (4.23) aikaderivaatan linearisointiin ja jättää vuot linearisoimatta. On helppo nähdä, että tämä kasvattaa suoraan painekorjausyhtälön lävistäjää. Joskus kannattaa käyttää jonkinlaista pseudolinearisointia, vaikka tilayhtälöä ei olisi käytössä. Derivaatta riippuu äänennopeudesta c yhteyden ∂ρ/∂p ≈ 1/c2 kautta. Vaikka tilanne olisi kokoonpuristumaton, voidaan äänennopeus korvata nopeudella Cu u∞ , missä u∞ on jonkinlainen vapaan virtauksen nopeus ja Cu sopiva kerroin. Lävistäjän kasvattamiseksi painekorjausyhtälössä on muitakin keinoja. Lävistäjän kasvatus on keino alirelaksoida (stabiloida, mutta toisaalta hidastaa) iteraatiota, mutta sillä on myös edullinen vaikutus lineaarisen painekorjausyhtälön iteratiiviseen ratkaisuun. Toistaiseksi tässä yhteydessä ei tiheyden linearisointia vuon tai aikaderivaa- tan osalta tarvitse ottaa huomioon. Sijoittamalla nopeuskorjaukset (4.39) yhtälöön (4.36) ja nämä nopeudet jatkuvuusyhtälöön saadaan (Sρ)i+1/2 " # " # Si−1/2 ′ Si+1/2 ′ (pi+1 − p′i ) − (Sρ)i−1/2 − (p − p′i−1 ) = −∆m ˙ ∗i − AP,i+1/2 AP,i−1/2 i (4.42) Tämä voidaan sieventää muotoon (S 2 ρ)i+1/2 ′ (S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′ − pi+1 + + pi − pi−1 = −∆m ˙ ∗i AP,i+1/2 AP,i+1/2 AP,i−1/2 AP,i−1/2 (4.43) Painekorjausyhtälö vastaa putkiverkolle saatua yhtälöä (4.9) ja toteuttaa ehdot (4.10). Lävistäjä on aina yhtä suuri kuin muiden alkioiden summa, joten yhtälö tässä muodossa soveltuu huonosti iteratiivisille ratkaisijoille. Tilanne voidaan korjata edellä kuvatulla alirelaksoinnilla. Yksidimensioinen tilanne voidaan hoitaa tehokkaimmin suoralla ratkaisulla Thomasin algoritmilla. Käytännön kokemus on osittanut, että SIMPLE-algoritmi divergoi tai konvergoi huonosti ellei paineita alirelaksoida painekorjausyhtälön ratkaisun jälkeen. Tällöin 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 82 uudet paineet saadaan yhtälöstä pn+1 = p∗ + αp p′ (4.44) missä alirelaksaatiokertoimelle αp on ehdotettu monenlaisia arvoja. Patankar ehdottaa αp = 0,8. Kokemus osoittaa, että alirelaksaatiokerroin on varsin tapauskohtainen. Laskenta voi divergoida, mikäli ei alirelaksoida tarpeeksi, joskus on oltava jopa αp ≈ 0,1. Alirelaksaation määrään saattaa vaikuttaa esimerkiksi reunaehto- jen käsittely. Tämäntyyppiset kiusalliset käytännön havainnot ovat tyypillisiä painekorjausmenetelmälle. Hyvin monessa artikkelissa on löydetty jokin ajatus, joka osoitetaan parilla esimerkillä toimivaksi. Kun asiaa sovelletaan kolmanteen tapaukseen, se ei toimikaan ja saattaa suorastaan aiheuttaa iteraation divergoimisen. Usein divergointi voidaan välttää pienentämällä αp :n arvoa. On huomattava, että mikäli massataseen halutaan toteutuvan, nopeudet on korjattava painekorjausten avulla yhtälöstä (4.39). Nopeuksia on mahdollista alirelaksoida vielä tässä vaiheessa yhtälöstä un+1 = u∗ + αu u′ = u∗ − αu Si+1/2 ′ (p − p′i ) AP,i+1/2 i+1 (4.45) Tämä toimenpide johtaa virheeseen massataseessa. Sen sijaan jos nopeutta alirelaksoidaan aikaderivaatan avulla, kuten yhtälössä (4.30) tehtiin, se vaikuttaa kertoimeen AP , mutta ei massataseen toteutumiseen. Yhtälön (4.45) käyttö vaikuttaa yksidimensioisessa tapauksissa ainakin reunojen massataseeseen (kts. kuva 4.6). Vaikka nopeuden alirelaksointi yhtälöstä (4.45) vaikuttaa selvästi epäedulliselta, sillä saattaa olla joskus (jälleen käytännön kokemuksen mukaan!) stabiloiva vaikutus. Vaikka massatase ei toteudu yhtälöiden lävistäjävaltaisuus on taattu, jos AP lasketaan yhtälöstä (4.32) eikä suoraan yhtälöstä (4.30). Edellä nopeutta on siis jo alirelaksoitu myös aikaderivaatan kautta yhtälössä (4.30). Aikaintegroinnilla ja alirelaksaatiolla on samanlainen vaikutus. Sen sijaan, että pyrittäisiin yhdellä loikalla ratkaisuun, sinne edetäänkin askeleittain. Aika-askel ∆t voidaan ymmärtää myös jonkinlaiseksi iterointiparametriksi. Eräissä ohjelmissa siitä käytetäänkin nimitystä ’false time step’ erotuksena varsinaisiin aikaintegroinnin aika-askeliin. Tässä lähestymistavassa oikea aikaderivaatta siirretään yhtälön oikealle puolelle lähdetermiksi. Alirelaksaation käyttöön ja aikaderivaatan approksimointiin palataan vielä seuraavissa luvuissa. 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 83 Kuva 4.6: Massavirtaprofiilit ennen ja jälkeen nopeuskorjauksen ilman nopeuskorjausten alirelaksointia ja alirelaksoinnilla (oikealla). Kun nopeudet on korjattu, saadaan uudet massavirrat. Tämän jälkeen skalaariyhtälöiden ratkaisu on suoraviivaista. Entalpian avulla lausuttu energiayhtälö on diskretoituna V ρi + max(m ˙ i+1/2 , 0) + max(−m ˙ i−1/2 , 0)]∆hi ∆t − max(−m ˙ i+1/2 , 0)∆hi+1 − max(m ˙ i−1/2 , 0)∆hi−1 = [ −(mh) ˙ i+1/2 + (mh) ˙ i−1/2 + qρ hq,1 + qm ui + qT,i = Rih (4.46) missä massavirrat m ˙ ovat nyt kierrokselta n + 1 olevia korjattuja arvoja. Tässäkin on oletettu aika-askeleen olevan jonkinlainen näennäisaika-askel ja tavoitteena siis olevan tasapainotilan virtaus. Mikäli laskettaisiin ajan suhteen tarkasti olisi lähdetermiosuuteen lisättävä yhtälön (4.25) oikealla puolella oleva paineen aikaderivaatta ja entalpian aikaderivaatta, joissa käytetään todellista aika-askelta ja jotain tarpeeksi tarkkaa approksimaatiota aikaderivaatalle. Linearisointi on usein kätevintä tehdä entalpian sijasta lämpötilan suhteen käyttäen yhteyttä ∆h ≈ cp ∆T . Skalaariyhtälön kertoimien huomataan olevan samat kuin liikemääräyhtälöllä. Eroja tulee lähdetermien linearisoinnista, mutta vuo-osuus on sama kaikille yhtälöille. Tätä voidaan käyttää joskus hyväksi. Jos liikemäärät olisi linearisoitu yhtälöstä (4.34) myös vuo-osuuden kertoimet eroaisivat toisistaan. Tämä on ehkä eräs 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 84 syy, miksi po. linearisointia vältetään. Kannattaa huomata, että massavirrat päivitetään nopeuskorjauksen jälkeen. Tällöin energiayhtälössä käytetyt kertoimet voivat toimia seuraavalla kierroksella myös liikemääräyhtälössä, mikäli lähdetermien osuus on pidetty erillään. Tärkein kerroin on lävistäjällä oleva AP . Kun lähdetermien vaikutus on mukana saadaan jokaiselle yhtälölle oma kertoimensa AφP . Kaikkein tärkein kerroin on liikemääräyhtälöiden kerroin AuPi , koska se esiintyy painekorjausyhtälössä. Yleensä kertoimet AuPi joudutaan tallettamaan muistiin. Niitä voidaan käyttää myös tavanomaisella hilalla koppien pintanopeuksien laskennassa, kuten seuraavassa luvussa esitetään. Yksidimensioinen laskenta-algoritmi voidaan nyt kirjoittaa seuraavaan muotoon: 1. Lasketaan liikemääräyhtälön residuaalit. Laskenta hoidetaan kätevimmin päivittämällä pintojen vuoarvot ja lisäämällä tulokseen muuttuvapoikkipintaisella putkella kiinteän pinnan painetermi. Kun implisiittisen vaiheen kertoimet on laskettu yhtälöstä (4.32), ratkaistaan nopeudet diskretoidusta liikemääräyhtälöstä (4.30). Yhtälö on tridiagonaalinen ja sen singulaarisuus voidaan estää aikaderivaattatermillä. Liikemääräyhtälö voidaan yksidimensioisessa tapauksessa linearisoida myös yhtälön (4.34) mukaan. 2. Ratkaistaan uusien nopeuksien avulla noodikohtaiset massatasevirheet m ˙ ∗i . Mikäli massatasevirheen sopivasti valittu normi jää annetun virherajan alapuolelle, iterointi lopetetaan. 3. Ratkaistaan massatasevirheiden avulla painekorjaukset yhtälöstä (4.43). 4. Lasketaan nopeuskorjaukset yhtälöstä (4.39). 5. Päivitetään paine ja nopeus yhtälöistä (4.44) ja (4.45). Päivitetty nopeuskenttä toteuttaa jatkuvuusyhtälön eksaktisti, muttei liikemääräyhtälöä. Mikäli nopeutta alirelaksoidaan tässä vaiheessa, nopeudet eivät toteuta myöskään jatkuvuusyhtälöä. 6. Ratkaistaan skalaarisuureet, esimerkiksi entalpia, yhtälöä (4.46) vastaavista yhtälöistä. Yhtälössä käytetään uusia nopeuksien arvoja. Mikäli tiheys on vakio, massavirrat voidaan tallettaa seuraavalle iteraatiokierrokselle ja käyttää kohdassa 1. 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 85 7. Jos tiheyttä ei pidetä vakiona, se ratkaistaan tilayhtälöstä ρ = ρ(p, h) tai ρ = ρ(p, T ). Samoin viskositeetti, lämmönjohtavuus ja muut mahdolliset suureet. Sen jälkeen aloitetaan uusi kierros kohdasta 1. Kuten aiemmin mainittiin painekorjausalgoritmi voidaan rakentaa monella eri tavalla ja lähteä esimerkiksi suoraan ratkomaan skalaariyhtälöitä. Eri painekorjausmenetelmiin palataan jatkossa. Päivitetty 28.1.2014 4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA 86 • Painekorjauksen perusidea on jatkuvuusyhtälön avulla korjata paineita, kunnes iterointi suppenee tilanteeseen, jossa sekä jatkuvuus- että liikemääräyhtälö toteutuvat. • Yksidimensioisilla yhtälöillä voidaan esittää painekorjausalgoritmin perusteet. • Putkiverkkoa kuvaavat painehäviö ja jatkuvuusyhtälöt johtavat seuraavaan painekorjausyhtälöön p′i − p′j = −∆m ˙ ∗i ∗ ′ | | m ˙ K ij ij j6=i X • Painekorjausalgoritmi rakennetaan yleensä sarjamuotoiseksi. Liikemäärä- ja massataseyhtälöt voidaan ratkaista myös yhdessä (kytketty ratkaisu). • Painekorjausyhtälö on Poisson-tyyppinen. Sen kertoimet toteuttavat ehdot aii = − aij ≤ 0 P j6=i aij ≥ 0 kun j 6= i • Massavirtakorjauksen jälkeen jatkuvuusyhtälö toteutuu eksaktisti riippumatta saadun painekentän mielekkyydestä • Painekorjausyhtälö saadaan lävistäjävaltaiseksi linearisoimalla mahdollinen lähdetermi paineen suhteen tai alirelaksoimalla painetta tiheyden linearisoinnin kautta ∂ρ ′ ρ′i+1/2 ≈ p ∂p • Skalaarisuureiden ja liikemäärän yhtälöiden kertoimet toteuttavat vastaavat ehdot kuin painekorjausyhtälökin. Niiden yhteydessä alirelaksoinit ja lävistäjävaltaisuus voidaan hoitaa aikaderivaattatermin avulla. • Lähdetermi linearisoidaan lävistäjää kasvattavalla tavalla. Lähdetermeissä riippuvuus rinnakkaisista kopeista siten näy linearisoinnissa. • SIMPLEssa naapurikoppien nopeuskorjaukset jätetään huomiotta painekorjausyhtälöä johdettaessa. • Massavirran m ˙ = Sρu sisältämän nopeuden u erottaminen konvektoituvasta nopeudesta u(!) yksinkertaistaa ratkaisua (Picardin iteraatio). • Painetta on alirelaksoitava SIMPLE-menetelmän yhteydessä. Nopeutta voidaan alirelaksoida sekä liikemääräyhtälöä linearisoitaessa että suoritettaessa nopeuskorjausta. Jälkimmäisessä tapauksessa massatase ei toteudu eksaktisti nopeuskorjausten jälkeen, mikä on otettava huomioon muodostettaessa sen jälkeen yhtälöiden kertoimia aij . 87 5 Painekorjausmenetelmä tavanomaisella hilalla 5.1 Limitetyn hilan etuja Limitetyllä hilalla on kaksi etua kokoonpuristumattoman virtauksen tapauksessa. Edellä oli esillä painekorjausyhtälön johto, joka on suoraviivaista limitetyn hilan tapauksessa. Toinen seikka liittyy paineessa esiintyvään ns. shakkilautamaiseen ratkaisuun. Tätä ei pidä sotkea jo peruskurssilla esillä olleeseen laskentatilavuuden Reynoldsin lukuun liittyvään oskillointiin. Paineeseen syntyvä sahalautamainen ratkaisu saadaan parhaiten esille yksidimensioisella esimerkillä. Ilman liikemäärän vuotermiä ja kitkaa liikemäärä- ja jatkuvuusyhtälöt ovat ∂u 1 ∂p = − ∂t ρ ∂x ∂u = 0 ∂x (5.1) Se seikka, että jatkuvuusyhtälö ei riipu paineesta pi tiheyden kautta, aiheuttaa tavanomaisella hilalla sen, etteivät pisteen i paine ja nopeus riipu toisistaan. Kuvan 5.1 tilanteessa yksinkertaistettu liikemääräyhtälö voidaan diskretoida differenssimuodossa ∆t (pn+1 − pn+1 (5.2) i−1 ) 2ρ∆x i+1 Tavanomaisella hilalla nopeuksia koppien rajapinnoilla ei tunneta ja suoraviivaisin un+1 = uni − i lähestymistapa on käyttää keskiarvoja. Tällöin jatkuvuusyhtälöstä saadaan diskretoituna n+1 un+1 i+1/2 − ui−1/2 = n+1 un+1 un+1 + un+1 un+1 − un+1 i+1 + ui i−1 i−1 − i = i+1 =0 2 2 2 (5.3) 5.1. LIMITETYN HILAN ETUJA 88 ( ui, pi ) i−2 a) i−1 i+1 i+2 i − 3 / 2 i − 1 / 2i + 1 / 2 i + 3 / 2 u i−2 b) i x u i−1/2 i+1/2 pi i−1 i i+1 x i+2 i − 3 / 2 i − 1 / 2i + 1 / 2 i + 3 / 2 Kuva 5.1: (a) Tavanomainen hila, (b) paine- ja nopeus limitetyllä hilalla p = 100 5 0 0 1 0 0 5 0 0 1 0 0 5 0 0 u = 100 4 0 0 1 0 0 4 0 0 1 0 0 4 0 0 x Kuva 5.2: Sik-sak paine- ja nopeusjakautumat, jotka toteuttavat yhtälöt 5.4 Sijoittamalla tähän nopeudet yhtälöstä (5.2) saadaan seuraava yhtälö uni+1 − uni−1 ∆t = (pn+1 − 2pn+1 + pn+1 i i−2 ) 2 4∆xρ i+2 (5.4) Yhtälöstä nähdään, että nopeudet ja paineet eivät pisteessä i riipu toisistaan. Siten nopeuskenttä ja painekenttä ovat kytkeytymättömiä toisiinsa parillisissa ja parittomissa noodeissa. Tämän tuloksena sekä nopeus- että painekenttä saattavat toteutua siksak- tai shakkilautamaisilla ratkaisuilla kuten kuvissa 5.2 ja 5.3. Shakkilautamaisuus saattaa poistua sopivasti valituilla reunaehdoilla, jotka sitovat rinnakkaiset pisteet toisiinsa. Tämä on kuitenkin epäluotettava keino. Toisaalta joskus saattaa käydä jopa päinvastoin ja on vaikeaa saada shakkilautakuviota syntymään! Limitetyllä hilalla vastaaviksi yhtälöiksi tulee n un+1 i+1/2 = ui+1/2 − ∆t n+1 (pi+1 − pn+1 ) i ρ∆x 5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT 100 300 100 300 100 300 5 27 100 300 100 300 100 300 5 27 100 300 100 300 100 300 5 27 5 5 5 27 27 27 5 5 5 89 27 27 27 y x Kuva 5.3: Shakkilautamainen paineratkaisu uni+1/2 − uni−1/2 = ∆t n+1 (p − 2pn+1 + pn+1 i i−1 ) ∆xρ i+1 (5.5) mistä nähdään rinnakkaisten painepisteiden kytkeytyvän rinnakkaisiin nopeuspisteisiin. Tällöin shakkilauta- tai siksak-ratkaisut eivät ole mahdollisia. Yhtälö (5.5) on jälleen Poisson-tyyppinen ja käytössä SIMPLEC-menetelmässä. Kummallakin edellä esitetyllä tavalla käytettiin symmetristä diskretointia painegradientin ja jatkuvuusyhtälön nopeusgradientin suhteen. Tavanomaisella hilalla olisi toki mahdollista ylävirtapainottaa kaikki gradientit mukaan lukien painegradientti, vaikka paine ei ole ’konvektoituva’ suure liikemääräyhtälössä. Periaatteessa tällöin ehkä saataisiin toimiva painekorjausmenetelmä, mutta sen tarkkuus on huono eikä sellaista ole juuri käytetty (Roache 1972). Limitetty hila jäikin pariksi kymmeneksi vuodeksi ainoaksi vaihtoehdoksi painekorjausmenetelmän yhteydessä. 5.2 Konvektionopeuden interpolointitavat Suorakulmaisella laskentahilalla erillisestä paineen ja nopeuden diskretoinnista ei ole juuri haittaa. Tilanne on kokonaan toinen käyräviivaisen laskentahilan tapauksessa. Kolmidimensioisessa tapauksessa tarvittaisiin kolme limitettyä liikemäärähilaa pohjalla olevan skalaarisuureiden hilan lisäksi. Edellä esitettiin, että syyt painekorjauksen hankaluuteen tavanomaisella hilalla liittyvät rinnakkaisten paineiden kytkeytymiseen toisiinsa ja sopivan muotoiseen painekorjausyhtälöön. Paineiden kytkeminen on tapahduttava jo eksplisiittisessä vaiheessa vuon laskennan yhteydessä. 5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT 90 Yksinkertaisin kytkemistapa on sijoittaa kunkin yhtälön vuon lausekkeeseen vaimennustermi d4,i+1/2 = ǫ4 (φi+2 − 3φi+1 + 3φi − φi−1 ) (5.6) missä φ vastaa kunkin yhtälön ratkaistavaa suuretta ja ǫ4 on sopivasti valittu parametri. Jos tiheys on vakio, jatkuvuusyhtälön vaimennuskertoimessa tiheys tulee korvata paineella. Tällä kurssilla jatkossa tehtävä tarkastelu osoittaa, että shakkilautakuvio saadaan poistetuksi lisäämällä pelkästään jatkuvuusyhtälöön paineesta riippuva tyyppiä (5.6) oleva vaimennustermi. Muissa yhtälöissä vaimennus ei tarvita ja se lisää ratkaisuun numeerista virhettä. Vaimennustermiä (5.6) on käytetty näennäispuristuvuuskeinon yhteydessä, mutta ei tässä muodossa painekorjausmenetelmässä. Näennäispuristuvuuskeinoa on käytetty laajennettaessa aerodynamiikkaan kehitettyjä ohjelmia alhaiselle nopeusalueelle soveltuviksi. Vaikka eräissä varhaisissa näennäispuristuvuuskeinoon perustuvissa simuloinneissa on käytetty yhtälön (5.6) kaltaista vaimennustermiä, painekorjausmenetelmällä tavanomainen hila tuli käyttöön Rhien ja Chown 1983 esittämässä artikkelissa. Heidän ajatuksenaan oli interpoloida nopeus laskentatilavuuden pinnalle siten, että lauseke riippuu myös paineista. Menetelmä on kopioitu toimivana ’reseptinä’ lukuisiin ’uusiin’ algoritmeihin ja kaupallisiin ohjelmiin. Yleistyminen tapahtui kuitenkin todella verkkaisesti etupäässä 90-luvulla. Se seikka, että kyseessä on loppujen lopuksi vaimennustermi eikä tarkempi tapa interpoloida nopeusarvo koppien keskipistearvoista, ei ole täysin tiedostettu vieläkään. Koska Rhie ja Chowmenetelmässä pintanopeus riippuu paineista, tapaa kutsutaan myös painepainotetuksi interpolointimenetelmäksi (pressure-weighted interpolation method, PWIM). Toinen tapa saada aikaan pintanopeuden riippuvuus paineista, on käyttää limitettyä apuhilaa, ja diskretoida pintanopeus tässä limitetyssä laskentakopissa. Tällöin pintanopeus riippuu laskentatilavuuksien nopeuksista ja paineista kohtalaisen monimutkaisella tavalla. Tätä tapaa nimitetään liikemääräpainotetuksi interpolointitavaksi (momentum-weighted interpolation method, MWIM). Tavallaan myös Rhie ja Chow-menetelmäkin käyttää limitetyn hilan ideaa epäsuorasti. Seuraavassa käydään Rhie ja Chow-menetelmän johto läpi ja myöhemmin esitetään menetelmän yksinkertaistettu kontrollitilavuusmuoto. On syytä huomauttaa, että ’johto’ on eräiltä 5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT 91 osin varsin epämääräinen. Parempi keino saattaa olla yrittää ensin ymmärtää kvalitatiivisesti menetelmän perusteluja. Jos konvektionopeus pinnalla i + 1/2 laskettaisiin keskiarvona hilapistearvoista, riippuisi se välillisesti kahden rinnakkaisen kopin painegradienttien keskiarvosta. Tällöin ei synny kytkentää rinnakkaisten paineiden välille, kuten yhtälössä (5.4). Yksidimensioinen diskretoitu liikemääräyhtälö voidaan kirjoittaa seuraavaan muotoon aii ui = X (nb) aij uj − ∂p ∂x i (5.7) Vi Kertoimet aij poikkeavat hieman limitetyn hilan kertoimista, koska nyt nopeus on lausuttu pisteessä i. Kertoimien lausekkeet esitetään luvussa 5.4. Painegradientti xsuunnassa on käsitelty kirjaimellisesti lähdeterminä, jolloin se tulee kerrotuksi laskentakopin tilavuudella. Tämä on yleinen painekorjausmenetelmän yhteydessä käytetty tapa, josta tällä kurssilla tullaan myöhemmin poikkeamaan, kun paine tullaan sijoittamaan luonnolliselle paikalleen vuotermiin. Summaus (nb) (aiemmin merkittiin samaa summausta i 6= j) koskee tilavuuden i naapurikoppeja (nb), joten yh- tälö on yksidimensioisessa tapauksessa tridiagonaalinen. Lauseke on siinä mielessä yleinen, että monidimensioisessa tapauksessa saadaan vastaava yhtälö, jossa summa menee kaikkien naapuritilavuuksien yli. Laskemalla konvektionopeus keskiarvona ja sijoittamalla (5.7) noodeissa i ja i+1 1 ui+1/2 = (ui+1 + ui ) = 2 " X # ∂p ∂p 1 1 X 1 Vi + Vi+1 (5.8) aij uj − ai+1,j uj − 2 aii (nb) ∂x i ai+1,i+1 (nb) ∂x i+1 Koska yhtälöön haluttaisiin kytkentä rinnakkaisten paineiden pi ja pi+1 välille, voidaan menetellä seuraavasti. Selvästikin yllä painegradienttien keskiarvo approksimoi painegradienttia pinnalla i + 1/2. Poistamalla tämä keskiarvo ja korvaamalla se suureella (∂p/∂x)i+1/2 toisen kertaluvun tarkkuus säilyy ja saadaan kytkentä aikaiseksi ui+1/2 Vi+1/2 ∂p Vi+1 ∂p 1 Vi ∂p 1 − + (5.9) = (ui+1 + ui ) + 2 2 aii ∂x i ai+1,i+1 ∂x i+1 ai+1/2,i+1/2 ∂x i+1/2 Sijoittamalla tähän liikemääräyhtälöistä (5.7) saatavat lausekkeet voidaan todeta ui+1/2 " # X Vi+1/2 ∂p 1 1 1 X (5.10) aij uj + ai+1,j uj − = 2 aii (nb) ai+1,i+1 (nb) ai+1/2,i+1/2 ∂x i+1/2 5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT 92 Laskemalla pintanopeus ui+1/2 lausekkeesta (5.9) havaitaan, että tämä riippuu implisiittisesti vain paineista pi ja pi+1 kopin pinnalla olevan painegradientin (∂p/∂x)i+1/2 kautta. Yllä oleva päättely on suurin piirtein se, mikä esiintyy alkuperäisessä Rhien ja Chown artikkelissa. Seuraavassa esitetään termille Vi+1/2 ∂p 1 Vi ∂p Vi+1 ∂p − + 2 aii ∂x i ai+1,i+1 ∂x i+1 ai+1/2,i+1/2 ∂x i+1/2 myöhemmin kehitelty johto ja osoitetaan, että se oikeastaan on vain nopeuksien keskiarvoon lisätty yhtälöä (5.6) vastaava vaimennustermi. Kuten on jo käynyt ilmi vaimennustermi on keksitty eräänlaisena ’ad hoc’-keinona ja seuraavassa oleva johto on myöhempi yritys ymmärtää sitä. Edellä jo sovellettiin yhtälöä (5.7) vastaavaa lauseketta nopeudelle ui+1 ai+1,i+1 ui+1 = X (nb) ai+1,j uj − ∂p ∂x i+1 Vi+1 (5.11) Rhie ja Chow-menetelmän idea myös voidaan tulkita siten, että limitetylle kopille kirjoitetun liikemääräyhtälön avulla kirjoitetaan keskiarvoa tarkempi lauseke pintanopeudelle. Periaatteessa liikemääräpainotteisessa interpoloinnissa tehdään samoin, mutta lausekkeessa ei tehdä tällöin samoja approksimaatioita. Menettelyssä on syytä ymmärtää, ettei limitettyä koppia varsinaisesti käytetä apuna muussa kuin pintanopeuden lausumisessa. Limitetylle aputilavuudelle saadaan vastaava yhtälö ai+1/2,i+1/2 ui+1/2 = X (nb) ai+1/2,j uj − ∂p ∂x i+1/2 Vi+1/2 (5.12) Pintanopeus saadaan Taylor-sarjakehitelmistä pisteissä i ja i + 1 pisteen i + 1/2 ympärillä ∆x2 ∂ 2 u ∆x ∂u ∆x3 ∂ 3 u + ui = ui+1/2 − − +O(∆x4 ) 2 ∂x i+1/2 8 ∂x2 i+1/2 48 ∂x3 i+1/2 ui+1 = ui+1/2 + (5.13) ∆x2 ∂ 2 u ∆x3 ∂ 3 u ∆x ∂u + + +O(∆x4 ) (5.14) 2 3 2 ∂x i+1/2 8 ∂x i+1/2 48 ∂x i+1/2 joista ratkaisemalla ∆x2 ∂ 2 u 1 −O(∆x4 ) ui+1/2 = (ui+1 + ui ) − 2 8 ∂x2 i+1/2 (5.15) 5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT 93 Nopeuden toiselle derivaatalle voidaan tehdä seuraavassa käytettävä differenssiapproksimaatio pisteessä i + 1/2, jolloin ui+1/2 ∆x2 ui+1 + ui − 2ui+1/2 1 = (ui+1 + ui ) − 2 8 ∆x2 /4 (5.16) Sijoittamalla tähän yhtälöistä (5.7)–(5.12) saatavat nopeudet ui+1/2 1 1 Vi+1 Vi ∂p = (ui+1 + ui ) − + 2 2 ai+1,i+1 aii ∂x i+1/2 Vi ∂p 1 Vi+1 ∂p + + 2 ai+1,i+1 ∂x i+1 aii ∂x i (5.17) missä on tehty seuraavat luonnolliset approksimaatiot P (nb) (ai+1/2,j uj ) ai+1/2,i+1/2 1 = 2 P Vi+1/2 ai+1/2,i+1/2 (nb) (ai+1,j uj ) ai+1,i+1 + P (nb) (ai,j uj ) aii + O(∆x2 ) 1 Vi+1 Vi = + + O(∆x2 ) 2 ai+1,i+1 aii (5.18) (5.19) Yhtälö (5.17) on kopin pintanopeuden lauseke, jota soveltamalla saadaan siksakpainekuvio estetyksi. Kuten huomataan, se on muodoltaan sama kuin aikaisempi heuristisen päättelyn tuloksena saatu nopeus (5.9). Lauseke voidaan yllä olevan mukaan tulkita nopeuksien keskiarvoksi, jota tarkennetaan Taylor-sarjakehitelmän avulla saadulla korjaustermillä. Kyseinen ’korjaus’ ei kuitenkaan paranna diskretoinnin tarkkuutta, vaan huonontaa sitä jonkin verran. Tämä johtuu siitä, että yhtälön (5.17) paineista riippuva osa muodostaa eräänlaisen vaimennustermin, joka vastaa Jameson-tyyppistä vaimennusta (5.6). Numeerinen vaimennus aiheuttaa aina virhettä, vaikka on tarpeellista ratkaisun laadun vuoksi. Pintanopeuden lauseke riippuu painegradienteista koppien keskellä ja pinnalla i + 1/2. Juuri viimeksi mainittu aiheuttaa oikeantyyppisen kytkennän rinnakkaisten koppien paineiden välille. Lauseke riippuu myös liikemääräyhtälön diskretoinnissa lävistäjälle tulevista kertoimista aii . Kun kyseessä on lävistäjätermi, merkitään sitä usein aP :llä tai AP :llä (Ferziger-Peric). Rhie ja Chow-interpoloinnissa liikemääräyhtälön kerroin AP on tärkeässä asemassa. Kerrointa ei pidä laskea limitetylle aputilavuudelle i + 1/2, vaan se saadaan keskiarvona hilapisteiden arvosta AP,i+1/2 = 1/2(AP,i+1 + AP,i ). Robustimpi tapa on käyttää yhtälöä 1 ai+1/2,i+1/2 = 1 1 1 + 2 ai+1,i+1 aii (5.20) 5.3. PINTANOPEUDEN TARKASTELUA 94 Jo tässä vaiheessa kannattaa huomata kertoimen riippuvan esimerkiksi aikaaskeleen pituudesta. Tällöin myös pintanopeus ja sitä kautta tasapainotila riippuvat aika-askeleen pituudesta. Lax–Wendroff-menetelmällä tämä todettiin haitalliseksi ja lukemattomia painekorjausmenetelmän parissa puuhaavia tämä ominaisuus esti pitkään ottamasta käyttöön tavanomaista hilaa. On mahdollista johtaa lauseke, jossa kertoimen riippuvuutta aika-askeleesta tai alirelaksaatiosta ei synny. Pintanopeuden lauseke on tällöin varsin monimutkainen, mutta sen käyttö on kuitenkin aivan turhaa. Kuten Ferziger-Pericissä todetaan, riippuvuus aika-askeleesta on aina pienempi kuin menetelmän katkaisuvirhe ja tällöin sitä ei kannata ottaa huomioon. 5.3 Pintanopeuden tarkastelua Rhie ja Chow-menetelmän kehittämisen (1983) jälkeen on kopin pinnalla vallitsevan konvektionopeuden lauseke (5.17) kopioitu reseptinä lukemattomiin ohjelmiin analysoimatta sen merkitystä tarkemmin. Selvästi on ollut riittävää, kun on löydetty menettely, jonka avulla voidaan käyttää tavanomaista hilaa. Menetelmän perusteita ei ole varsinkaan aluksi pohdittu juuri ollenkaan. Myöhemmin Johansson ja Davidsson ovat esittäneet pintanopeuden lausekkeelle seuraavan yksinkertaistetun muodon ui+1/2 1 1 1 1 1 = (ui+1 + ui ) + (Vi+1 + Vi ) + 2 2 2 AP,i+1 AP,i 1 ∂p ∂p ∂p × − + 2 ∂x i−1 ∂x i ∂x i+1/2 (5.21) ottamalla käyttöön varmuuskerroin C tämä voidaan vielä kirjoittaa muotoon ui+1/2 missä Vi+1/2 1 ∂p ∂p ∂p 1 = (ui+1 + ui ) + C + − 2 AP,i+1/2 2 ∂x i+1 ∂x i ∂x i+1/2 Vi+1/2 1 1 1 1 = (Vi+1 + Vi ) + AP,i+1/2 2 2 AP,i+1 AP,i (5.22) (5.23) Yllä olevaan lausekkeeseen lisätyllä verrannollisuuskertoimella C voidaan säätää painetermin osuutta konvektionopeuden (=pintanopeuden) lausekkeessa. Lausekkeesta nähdään myös painetermin luonne kehittämällä paineen keskeisdifferenssiin perustuvat derivaatta-approksimaatiot pisteissä i, i + 1/2 ja i + 1 Taylor-sarjaksi ∂p ∂p (∆x)2 ∂ 3 p 1 ∂p − + ≈ 2 ∂x i+1 ∂x i ∂x i+1/2 8 ∂x3 i+1/2 (5.24) 5.3. PINTANOPEUDEN TARKASTELUA 95 Termi on verrannollinen O(∆x2 ):en, joten sillä on vain katkaisuvirheen suuruusluokkaa oleva vaikutus lopputulokseen. Sen voidaan havaita olevan karteesisessa tapauksessa myös samaa muotoa kuin yhtälön (5.6) vaimennustermi. Kerroin C vastaa määrätyssä mielessä kerrointa ǫ4 yhtälössä (5.6). Periaatteessa käyräviivaisessa tapauksessa lausekkeen (5.22) derivaatat tulisi korvata kopin pinnan normaalin suunnassa olevilla derivaatoilla. Käytännössä rakenteellisella hilalla riittää käyttää lausekkeelle (5.24) yhtälön (5.6) kaltaista approksimaatiota. Jatkossa osoitetaan, että lauseke voidaan saada yksinkertaisella tavalla käyttäen MUSCL-interpolointia paineille. Kopin tilavuus Vi+1/2 = 1/2(Vi+1 + Vi ) ja liikemääräyhtälön diskretoinnista saatava AP,i+1/2 ovat myös eräänlaisia skaalaustekijöitä, joita aivan ilmeisesti voidaan yksinkertaistaa. Karteesisella hilalla ei pintanopeuksilla (5.17) ja (5.21) ole suurtakaan eroa. Käyräviivaisella hilalla saattaa ainakin teoriassa käydä niin, että jos pintanopeus kirjaimellisesti lasketaan yhtälöstä (5.17), painelauseke ei olekaan enää vaimentava, sen sijaan yhtälöstä (5.6) saatu on. Kirjallisuudessa esiintyy paljon artikkeleita, joissa nähdään paljon vaivaa seuratessa alkuperäistä Rhie ja Chow-ideaa käyräviivaisilla hiloilla. Koska lopputulos saattaa olla jopa muuta kuin toivottu, koko monimutkainen prosessi on täysin tarpeeton. Kun painetermin luonne on osoitettu vaimentavaksi, voidaan hankalista derivaattalausekkeista luopua ja käyttää yksinkertaista muotoa (5.6). Tällöin myös yhtälön (5.22) painelausekkeen kertoimeksi tulee pinta-ala tilavuuden sijaan. Tämä on vastoin yleistä alalla vallitsevaa käytäntöä. Yleinen tapa on myös käyttää saatua pintanopeutta kaikissa yhtälöissä konvektiotermissä. Jatkossa tällä kurssilla paineosuus lisätään vain jatkuvuusyhtälöön, joka kuten aiemmin todettiin, ei ole samassa mielessä säilymisyhtälö kuin kokoonpuristuvassa tapauksessa, vaan eräänlainen side-ehto. Tavanomaisen hilan käyttö siis mahdollistuu, mikäli jatkuvuusehtoon lisätään sopiva paineista riippuva vaimennustermi. Muihin yhtälöihin sitä ei välttämättä tarvitse lisätä, vaan niissä pintanopeuksina voidaan käyttää viereisten koppien nopeuksien keskiarvoa. Koska termi on vaimentava, se aiheuttaa jonkinlaista lisävirhettä ratkaisuun verrattuna limitettyyn hilaan. Käytännössä ero on todettu kuitenkin mitättömän pieneksi. Kannattaa kuitenkin huomata, että diskretoidun yhtälön katkaisuvirhe kasvaa, vaikka edellä olleessa johdossa periaatteessa etsittiin keskiarvoa tarkempaa lauseketta konvektionopeudelle. 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 96 5.4 Yksidimensioinen menetelmä tavallisella hilalla Seuraavaksi esitetään toimiva paineen ja nopeuden kytkentä tavanomaisella laskentahilalla. Skalaariyhtälöiden ratkaisu tapahtuu samalla tavoin kuin limitetyn hilan tapauksessa. qρ i − 1/2 q" pi , ui i + 1/2 pi + 1, ui + 1 } P a i n e − j a l i i k eämnäoäord i Kuva 5.4: Yksidimensioinen diskretointi tavanomaisella hilalla Aloitetaan diskretointi liikemääräyhtälöstä: Vi d(ρu)i +(Sρu2 )i+1/2 −(Sρu2 )i−1/2 +(Sp)i+1/2 −(Sp)i−1/2 −pi (Si+1/2 −Si−1/2 ) = (qρ uqx +qm )i dt (5.25) Nyt erona limitettyyn hilaan on, että liikemäärävuo määritetään samalla pinnalla kuin skalaarien vuot. Yksidimensioinen liikemäärävuo voidaan pinnalla i + 1/2 kirjoittaa muotoon (mu) ˙ i+1/2 +Si+1/2 pi+1/2 = max(m ˙ i+1/2 , 0)uli+1/2 −max(−m ˙ i+1/2 , 0)uri+1/2 +Si+1/2 pi+1/2 (5.26) missä arvot uli+1/2 ja uri+1/2 saadaan interpoloimalla hilapistearvoista i, i ± 1 ja i + 2 MUSCL-kaavalla. Pintapaine pi+1/2 lasketaan keskiarvona. Kuten limitetyllä hilallakin, implisiittistä vaihetta varten kirjoitetaan 1. kertaluvun ylävirta-approksimaatio max(m ˙ i+1/2 , 0)ui − max(−m ˙ i+1/2 , 0)ui+1 + Si+1/2 pi+1/2 (5.27) Linearisoimalla 1. kertaluvun vuon lausekkeen konvektiivinen osa F pinnalla i + 1/2 saadaan n+1 n Fi+1/2 = Fi+1/2 + n ∂Fi+1/2 n ∆u = Fi+1/2 +max(m ˙ i+1/2 , 0)∆ui −max(−m ˙ i+1/2 , 0)∆ui+1 ∂u (5.28) 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 97 Vastaavasti pinnalla i − 1/2 n+1 n Fi−1/2 = Fi−1/2 + n ∂Fi−1/2 n ∆u = Fi−1/2 +max(m ˙ i−1/2 , 0)∆ui−1 −max(−m ˙ i−1/2 , 0)∆ui ∂u (5.29) Diskretoimalla yhtälö (5.25) implisiittisesti ilman lähdetermejä ja sijoittamalla vuon linearisoinnit (5.28) ja (5.29) saadaan liikemääräyhtälöksi Vi ρi + max(m ˙ i+1/2 , 0) + max(−m ˙ i−1/2 , 0)]∆ui ∆t − max(−m ˙ i+1/2 , 0)∆ui+1 − max(m ˙ i−1/2 , 0)∆ui−1 = [ −(mu) ˙ i+1/2 + (mu) ˙ i−1/2 − (Sp)i+1/2 + (Sp)i−1/2 + pi (Si+1/2 − Si−1/2 ) + (qρ uqx + qm )i | {z } = Riu (5.30) Kuten limitetynkin hilan yhteydessä residuaali kannattaa laskea vuoarvojen erotuksena Ru = −F n + Fn + pi (Si+1/2 − Si−1/2 ) ≈ Vi (∇ · ρV~ V~ + ∇p). Erona i i+1/2 i−1/2 on nyt ainoastaan se, että residuaali lasketaan pisteessä i. Yhtälö (5.30) on tridiagonaalinen ja se voidaan kirjoittaa muotoon A∆u = Ru (5.31) missä matriisin A nollasta poikkeavat termit ovat ai,i−1 ≡ AW,i = − max(m ˙ i−1/2 , 0) ai,i+1 ≡ AE,i = − max(−m ˙ i+1/2 , 0) Vi ρi + max(m ˙ i+1/2 , 0) + max(−m ˙ i−1/2 , 0) aii ≡ AP,i = ∆t Vi ρi = − AW,i − AE,i ∆t (5.32) Nyt liikemääräyhtälön geometriset suureet liittyvät samaan hilaan kuin skalaariyhtälöillä. Myös massavirrat m ˙ i+1/2 lausutaan aina samojen laskentatilavuuksien pinnoilla. Tämän seurauksena yllä olevat kertoimetkin ovat samoja kaikille yhtälöille, mikä on selkeä etu. Tärkein kerroin on lävistäjällä oleva ’AP ’, joka määrittelee painegradientin ja nopeuden ui riippuvuussuhteen. Kuten edellisessä kappaleessa tuotiin esille, kerrointa voidaan käyttää myös konvektionopeuden laskennassa. Yhtälön residuaaliosassa tulee käyttää konvektoituville suureille uri+1/2 ja uli+1/2 MUSCLdiskretointia. 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 98 Painekorjausmenetelmässä käytetään yleensä samaa massavirran m ˙ i+1/2 arvoa kaikissa yhtälöissä, myös jatkuvuusyhtälössä. Tällöin (5.33) m ˙ i+1/2 = (Sρ¯ u)i+1/2 missä u¯ on pintanopeus, joka riippuu myös paineista yhtälön (5.22) kautta. Kuten jo aiemmin todettiin, paineriippuvuus jatkuvuusehdossa jo takaa tasaisen painejakautuman. Tämän vuoksi riittää liikemäärä- ja skalaariyhtälöissä laskea massavirta yhtälöstä m ˙ i+1/2 = (Sρ)i+1/2 ui+1 + ui 2 (5.34) tai yhtälöstä m ˙ i+1/2 = Si+1/2 (ρi+1 ui+1 + ρi ui ) 2 (5.35) Pintanopeuden käsitettä u¯ ei siis välttämättä tarvitakaan. Nopeus voidaan aina ottaa keskiarvona ja painelauseke ymmärtää vain jatkuvuusehdossa olevaksi vaimennustermiksi. Vaimennuksen vähentäminen tällä tavoin voi kuitenkin johtaa esimerkiksi energiayhtälön ratkaisussa lämpötilavärähtelyihin. Jatkuvuusyhtälöstä m ˙ n+1 ˙ n+1 i+1/2 − m i−1/2 = 0 saadaan linearisoimalla m˙ ′ i+1/2 − m˙ ′ i−1/2 = −m ˙ ∗i+1/2 + m ˙ ∗i−1/2 (5.36) ja edelleen m˙ ′ i+1/2 −m˙ ′ i−1/2 = (Sρ)i+1/2 u′i+1/2 −(Sρ)i−1/2 u′i−1/2 = −m ˙ ∗i+1/2 +m ˙ ∗i−1/2 = −∆m ˙ ∗i (5.37) Tässä yhteydessä on siis oikealle puolelle massataseeseen ∆m ˙ ∗i lisättävä vaimen- nustermi. Tämä tarkoittaa, että tässä massataseen laskenta on perustettava yhtälöön (5.22) tai vastaavaan. Tasavälisellä hilalla yhtälöstä (5.22) Si+1/2 1 [pi+2 − 3pi+1 + 3pi − pi−1 ] u∗i+1/2 = (u∗i+1 + u∗i ) + C 2 4AP,i+1/2 (5.38) Tässä muodossa painelauseke toimii aina vaimennusterminä myös käyräviivaisessa tapauksessa. Suuria laadullisia eroja (kuin korkeintaan parempaan suuntaan) ei alkuperäiseen Rhie ja Chow-menetelmään verrattuna ratkaisussa ole. Yhtälö voidaan laittaa vielä kompaktimpaan muotoon käyttämällä MUSCL-interpoloinnilla saatuja 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 99 paineita pl ja pr kopin pinnan kahden puolen. Jos oletetaan käytetyn toisen kertaluvun ylävirtamenetelmää näille suureille, voidaan yhtälö (5.38) kirjoittaa muotoon Si+1/2 1 u∗i+1/2 = (u∗i+1 + u∗i ) − C [pr − pli+1/2 ] 2 2AP,i+1/2 i+1/2 (5.39) mikä lienee yksinkertaisin massataseessa sovellettava nopeuden lauseke, jolla painekorjausmenettely saadaan sovelletuksi tavanomaiselle hilalle. Koska keskeisdifferenssi ei lisää vaimennusta, on selvää, että vaimennus pienenee, jos MUSCLkaavassa siirrytään täysin ylävirtapainotteisesta paineen interpoloinnista keskeisdifferenssiä kohden. Mikäli käytetään ykkösestä poikkeavia arvoja kertoimelle C, huomataan sillä olevan saman vaikutuksen. Järkevintä on kiinnittää paineen interpolointi tässä toisen kertaluvun ylävirtamenettelyksi ja painottaa vaimennusta kertoimella C, mikäli sellaista tarvetta on. Konvektoituvien suureiden uri+1/2 ja uli+1/2 interpolointi on tällöin hoidettava paineesta erillään. Periaatteessa voisimme saada vielä voimakkaamman kytkennän paineiden välille käyttämällä ensimmäisen kertaluvun menetelmää paineille pr ja pl . Tällöin modifioituun yhtälöön tulisi kuitenkin paineen diffuusiotermi, mikä saattaa pilata ratkaisun. Tämänkaltainen painetermi modifioidussa yhtälössä ei kuitenkaan välttämättä ole vaikutukseltaan yhtä suuri kuin konvektoituvien suureiden ensimmäisen kertaluvun diskretoinnista aiheutuvat katkaisuvirheen termit. Asian tutkiminen on vielä näiltä osin kesken. Edellä on todettu, että riittää, kun liikemäärä- ja skalaariyhtälöissä käytetään noodinopeuksien keskiarvoa konvektionopeutena. Jos käytetään MUSCL-interpolointia voitaisiin periaatteessa kuvitella käytettävän nopeuksia uri+1/2 ja uli+1/2 nopeuksien ui+1 ja ui sijaan konvektionopeuksien lausekkeessa (5.38). Tähän ei ole periaatteellista estettä, mutta kokemuksen mukaan (jälleen!) parempilaatuinen ratkaisu saadaan, kun käytetään nopeuksina yksinkertaista keskiarvoa. Massataseyhtälöstä (5.37) saadaan painekorjausyhtälö sijoittamalla siihen pintanopeuden muutoksen u′i+1/2 ja paineiden muutoksen välinen lauseke. Jos pintanopeuden muutos u′i+1/2 lasketaan yhtälöstä (5.38) tai (5.39) saataisiin pentadiagonaalinen yhtälö painekorjauksille. Jos yhtälö (5.38) linearisoitaisiin vain pinnan kahden puolen olevien paineiden suhteen, saataisiin painetermin eteen ylimääräinen tekijä 3/4. Yleinen tulkinta on se, että linearisoitaessa yhtälöä (5.22) jätetään kaksi ensimmäistä painederivaattaa pois pohtimatta niiden riippuvuutta noodipisteiden paineista. Tällöin pintanopeuden muutokselle saadaan yhtälöä (4.39) vastaa- 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 100 va lauseke. Parempi tulkinta asialle on, että painekorjausyhtälön kertoimien on oltava sellaisia, että ne noudattavat liikemääräyhtälön linearisointia ja ajavat siten ratkaisua myös liikemääräyhtälön ratkaisua kohden. Diskretoimalla liikemääräyhtälö limitetyssä apuhilassa saadaan yhtälö (4.39) ja SIMPLE-menetelmällä tehdään yksinkertaistus AP,i+1/2 u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i ) (5.40) Sijoittamalla tämä yhtälöön (5.37) − (S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′ (S 2 ρ)i+1/2 ′ pi+1 + + pi − p = −∆m ˙ ∗i AP,i+1/2 AP,i+1/2 AP,i−1/2 AP,i−1/2 i−1 (5.41) Painekorjausyhtälöstä tuli tavanomaisella hilalla muodollisesti täsmälleen sama kuin limitetyllä hilalla. Ainoa ero on, että massataseen virheeseen on otettava mukaan paineista saatava vaimennustermi, joka on määritelty yhtälöllä (5.38). Kyseinen muoto voidaan suoraan ottaa käyttöön myös käyräviivaisella hilalla monidimensioisessa tapauksessa. Yhtälössä (5.38) on pyritty eroon lähdetermimuodossa olevista kryptisistä painegradienteista, joiden avulla vaimennustermi yleensä kirjallisuudessa esitetään. Kyseisten painegradienttien efektiivinen vaikutus on juuri sama kuin yhtälön (5.38) vaimennustermin. Painekorjausalgoritmi tavanomaisella hilalla voidaan tämän jälkeen pukea seuraavaan muotoon: 1. Ratkaistaan nopeudet diskretoidusta liikemääräyhtälöstä A∆u = Ru Koppien rajapinnoilla lasketaan massavirrat yhtälöstä 1 m ˙ i+1/2 = Si+1/2 [(ρu)i+1 + (ρu)i ] 2 (5.42) tai yhtälöstä (5.34). Mikäli tiheys on vakio lausekkeet ovat identtisiä. Noodisuureiden ja pinta-arvojen, kuten massavirta, indeksointi on esitetty kuvassa 5.5. Tässä vaiheessa on siis myös mahdollista käyttää samaa vaimennustermiä (5.39) kuin jatkuvuusehdossa, mutta se ei ole välttämätöntä. Vaimennustermi liikemääräyhtälöön saadaan korvaamalla keskiarvolausekkeessa (5.42) nopeudet yhtälön (5.38) pintanopeudella. Kannattaa kuitenkin taas huomata, 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA i + 1/2 i − 1/2 i I I 101 i + 3/2 i + 1 I + 1 I +1 taulukointi ohjelmassa Kuva 5.5: Laskentatilavuuksien ja pintojen indeksointi ilman reunaehtokoppeja. että kokonaisuudessaan liikemääräyhtälöä ei tällöin tarkenneta, vaan siihen lisätään vaimennustermi. Tämä on kuitenkin vallitseva tapa, mutta tällä kurssilla sitä ei käytetä, koska siitä ei näyttäisi olevan selvää etua. Konvektoituvat nopeudet ul,r i±1/2 lasketaan MUSCL-kaavasta. Paineet pi±1/2 koppien rajapinnoilla lasketaan keskiarvona rinnakkaisista hilapistearvoista. Tämän jälkeen vuot ja niistä saatava liikemääräyhtälön residuaali Riu on laskettu. Seuraavaksi lasketaan implisiittisen vaiheen kertoimet kullekin laskentatilavuudelle i yhtälöstä (5.32) ellei tätä ole tehty jo edellisellä kierroksella kohdassa 7 tai 8. Yhtälö on tridiagonaalinen ja sen singulaarisuus estetään aikaderivaattatermillä. 2. Ratkaistaan tridiagonaalisesta yhtälöstä nopeuden muutokset ∆ui ja päivitetään nopeuskentäksi u∗ . Talletetaan diagonaalitermi AP,i . 3. Ratkaistaan uusien nopeuksien u∗ avulla noodikohtaiset massatasevirheet ∆m ˙ ∗i = m ˙ ∗i+1/2 − m ˙ ∗i−1/2 . Nyt massavirrat m ˙ ∗i±1/2 on laskettava vaimennustermin kera m ˙ ∗i+1/2 = Si+1/2 ( ) (Sρ)i+1/2 r 1 [p − pli+1/2 ] [(ρu∗ )i+1 + (ρu∗ )i ] − C 2 2AP,i+1/2 i+1/2 (5.43) missä AP,i+1/2 lasketaan keskiarvona talletetuista arvoista ja suureet pri+1/2 ja pli+1/2 interpoloidaan toisen kertaluvun ylävirtamenettelyllä. Kertoimelle voidaan antaa arvo C = 1/2. Mikäli massatasevirheen sopivasti valittu normi jää annetun virherajan alapuolelle, iterointi lopetetaan. 4. Ratkaistaan massatasevirheiden avulla painekorjaukset yhtälöstä − (S 2 ρ)i+1/2 ′ (S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′ pi+1 + + pi − p = −∆m ˙ ∗i AP,i+1/2 AP,i+1/2 AP,i−1/2 AP,i−1/2 i−1 (5.44) 5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA 102 5. Lasketaan nopeuskorjaukset SIMPLE-menettelyllä yhtälöstä u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i )/AP,i+1/2 Näiden avulla päivitetty nopeuskenttä toteuttaa jatkuvuusyhtälön eksaktisti, muttei liikemääräyhtälöä. Korjaus on suoraviivaista pintanopeuksille, joiden avulla voidaan korjata keskipisteiden nopeuksia 1 u′i = (u′i+1/2 + u′i−1/2 ) 2 Vaihtoehtoisesti voidaan laskea pintapaineet 1 p′i+1/2 = (p′i+1 + p′i ) 2 ja korjata niiden avulla nopeus u′i = −Si+1/2 (p′i+1/2 − p′i−1/2 )/AP,i 6. Päivitetään paine ja nopeus yhtälöistä pn+1 = p∗ + αp p′ un+1 = u∗ + αu u′ Mikäli nopeutta alirelaksoidaan tässä vaiheessa, nopeudet eivät toteuta jatkuvuusyhtälöä. 7. Ratkaistaan skalaarisuureet (esimerkiksi entalpia) yhtälöä (4.46) vastaavista yhtälöistä. Yhtälön kertoimissa ja residuaalin laskennassa käytetään nyt uusia nopeuksien arvoja. Mikäli tiheys on vakio, massavirrat ja kertoimet (5.32) voidaan tallettaa seuraavalle kierrokselle. 8. Jos tiheyttä ei pidetä vakiona, se ratkaistaan tilayhtälöstä ρ = ρ(p, h). Samoin viskositeetti, lämmönjohtavuus ja muut mahdolliset suureet. Sen jälkeen edetään kohtaan 1. Algoritmissa on vain pieniä eroja verrattuna limitetyn hilan vastaavaan algoritmiin. Laskentakoodin muuttaminen limitetystä hilasta tavanomaiseen on hyvin yksinkertaista, koska erot ovat pieniä. Geometrian käsittely tavanomaisella hilalla on limitettyyn verrattuna yksinkertaista. Limitetyllä hilalla ei tarvita kuitenkaan mitään ylimääräistä vaimennustermiä, mikä on jonkinasteinen etu. Todettakoon, että suurin osa numeerisesta vaimennuksesta tulee kummallakin hilatyypillä konvektoituvien suureiden ylävirtapainotuksesta eikä lisätystä painetermistä. 5.5. REUNAEHTOJEN KÄSITTELY 103 5.5 Reunaehtojen käsittely Reuna-arvot on käsiteltävä samalla toisen kertaluvun tarkkuudella kuin sisäpisteiden laskentakin. Tällöin reunoille on varattava kaksi koppiriviä, joissa olevia arvoja käytetään hyväksi MUSCL-interpoloinnissa laskenta-alueen reunalle. Reunaehtojen antamiselle on olemassa muitakin keinoja, mutta ylimääräisten ’haamukoppien’ käyttö on kaikkein yksinkertaisinta. 2 2 3 3 4 I M A X +I M 2 A X + I3M A X +I 3 M A X + I4M A X + 4 { { 1 reuna−arvot reuna−arvot l a s k e n t a − a l u e enna r e u Kuva 5.6: Laskentatilavuuksien ja pintojen indeksointi reunoilla Indeksoinnissa on syytä olla huolellinen, ensimmäinen laskenta-alueen koppi on no. 3 ja yhdellä rivillä tilavuuksia on yhteensä IMAX + 4, jos IMAX on laskentaalueen noodimäärä. Seuraavassa reunaehdot annetaan käyttäen ohjelmoinnissa sovellettavaa indeksointia. Suoraviivaisin ja myös stabiilein sisäänvirtausreunaehto on antaa nopeus noodeissa 1 ja 2. Joskus tämä nopeus ei sinällään anna pinnalle 3 eli sisääntuloreunalle oikeaa massavirtaa, koska tämä on suoraviivaisinta laskea samalla tavoin kuin sisäalueessakin eli keskiarvona pisteistä 2 ja 3. Toivottu massavirta saadaan ekstrapoloimalla tilavuuteen 2 nopeus u2 = 2uin − u3 (5.45) missä uin on reunalle toivottu nopeus. Implisiittinen vaihe voidaan käsitellä siten, että se ulottuu laskenta-alueen reunojen yli yhden kopin verran. Linearisoimalla yhtälö (5.45) saataisiin yhtälön (5.31) ensimmäiselle riville a2,2 = 1 ja a2,3 = 1. Voidaan myös asettaa ∆u2 = 0 (5.46) eli a2,3 = 0. Tässä matriisin rivien numerointi on aloitettu kakkosesta, koska ensimmäinen ratkaistava nopeus liittyy laskentatilavuuteen 2. 5.5. REUNAEHTOJEN KÄSITTELY 104 Massavirran lisäksi on asetettava liikemäärä kopissa 1 siten, että interpoloinnista laskenta-alueen rajapinnalle saadaan toivottu arvo suureelle ul3 . Yksinkertaisella ekstrapolaatiolla (5.47) u1 = 2u2 − u3 saadaan toisen kertaluvun ylävirtamenettelyllä pinnan 3 vasemmalle puolelle ekstrapoloitua uin . Ulosvirtausnopeus voidaan yksinkertaisesti ekstrapoloida laskenta-alueesta. Implisiittisessä vaiheessa asetetaan (5.48) ∆uIM AX+3 = ∆uIM AX+2 Reunaehdot ja sisäpisteet voidaan yhdistää yhtälöryhmäksi, joka on seuraavan muotoinen: 1 a 3,2 0 .. . 0 0 a3,3 a4,3 .. . 0 a3,4 a4,4 .. . 0 0 a4,5 .. . ··· ··· ··· 0 0 0 .. . ··· ··· ··· .. . 0 0 0 0 · · · · · · −1 0 0 0 0 1 ∆u2 ∆u3 .. . ∆uimax+3 = 0 R3 .. . Rimax+2 0 Paineelle sisäänvirtauskohdassa voidaan käyttää seuraavia ekstrapolaatioita p2 = 2p3 − p4 p1 = 2p2 − p3 (5.49) Ulosvirtausreunalla on luontevinta kiinnittää paine, kuten aikaisemmin on todettu. Tällöin yksinkertaisin tapa on asettaa pIM AX+3 = pout pIM AX+4 = pout (5.50) Joissakin tilanteissa saattaa laskenta-alueen sisällä ulosvirtausreunalla vallita nollasta poikkeava painegradientti, jolloin yhtälön (5.50) tasainen reunapaine aiheuttaa värähtelyä ratkaisuun. Paras keino on viedä laskenta-alue niin kauas, ettei paineessa esiinny gradienttia. Useimmiten tähän ei pystytä. Tällöin on mahdollista asettaa ulosmenopaine laskenta-alueen reunalla ja ekstrapoloida reunakoppeihin sopivat paineet samalla tavoin kuin edellä asetettiin massavirta sisäänmenoreunalle. 5.6. YKSINKERTAISTETTU VAIMENNUSTERMI 105 5.6 Yksinkertaistettu vaimennustermi Kuten edellä on tullut esille paineesta riippuva vaimennustermi on enemmän ’ad hoc’-luonteinen viritys, kuin täsmällisesti perusperiaatteista johdettu korjauslauseke. Juuri tämä mahdollistaa termin yksinkertaistamisen, jota on jossain määrin viime vuosina esiintynyt. Pääosa kehitystyöstä painekorjauksen alalla on kuitenkin uponnut alkuperäisen Rhie ja Chow menettelyn täsmälliselle kopioimiselle monimutkaisempaan tilanteeseen. Viime aikoina erityisesti kolmio- tai tetraedrihiloille. Joitakin ehdotuksia on myös esiintynyt, joissa ehdotetaan luopumista koko vaimennustermistä (esim. Date). Tarkempi tarkastelu on kuitenkin osoittanut, että niissä tapauksissa sahalaitakuvio on pysynyt poissa joistain muista syistä, esimerkiksi reunaehtojen sitovan vaikutuksen vuoksi. Oleellista vaimennustermissä on sitoa jatkuvuusyhtälössä rinnakkaiset paineet yhteen. Tällöin aivan ilmeisesti jatkuvuusehdossa voidaan käyttää myös seuraavaa muotoa m ˙ ∗i+1/2 = Si+1/2 ( (Sρ)i+1/2 r 1 [(ρu∗ )i+1 + (ρu∗ )i ] − C [pi+1/2 − pli+1/2 ] 2 2m ˙∞ ) (5.51) missä m ˙ ∞ on jokin sopivasti valittu massavirtaskaala. Yhtälön (5.51) vaimennustermissä on se hyvä puoli, että termin kerroin pysyy vakiona. Alkuperäisessä menetelmässä AP riippuu aika-askeleesta ja virtausnopeuksista ja saattaa vaihdella huomattavastikin iteraation kuluessa tai laskenta-alueen eri osissa. Myös alkuperäisen menetelmän vaimennustermin kokoa voidaan rajoittaa (Ari Miettinen, Lisensiaattityö), vaikka se ei ole välttämätöntä. Joissain tilanteissa hyvin alhaisella nopeudella vaimennustermin koko saattaa olla huomattavan suuri verrattuna nopeuksien keskiarvoon. Yleensä tällä ei ole merkitystä, koska konvektionopeuden arvo jää kuitenkin olemattoman pieneksi. Juuri tässä yhteydessä on erityisesti huomattava, että johdettaessa painekorjausyhtälöä käytetään aina pintanopeuden ja painegradientin välistä yhteyttä (5.40), joka saadaan liikemääräyhtälöstä eikä linearisoimalla jatkuvuusehdossa esiintyvää massavirtaa (5.51). Painekorjausyhtälö (5.41) säilyy siis samana, vaikka pintanopeuslauseke muuttuisikin. 5.6. YKSINKERTAISTETTU VAIMENNUSTERMI 106 • Ilman erikoistoimenpiteitä aiheutuu tavanomaisesta hilasta ns. shakkilautaratkaisu kokoonpuristumattoman virtauksen yhteydessä. Ilmiö ei aina esiinny yhtä voimakkaana ja saattaa sopivalla reunojen käsittelyllä olla jopa vaikeasti aikaansaatavissa. • Tavanomaisella hilalla tilanne korjaantuu käyttämällä vaimennustermiä d4,i+1/2 = ǫ4 (φi+2 − 3φi+1 + 3φi − φi−1 ) • Rhie ja Chow -menetelmän keskeinen idea on lisätä paineesta riippuva vaimennustermi pintanopeuden interpoloinnin yhteydessä. Vaimennustermi pintanopeudessa on verrannollinen paineen kolmanteen derivaattaan. Sovellettaessa tätä kontrollitilavuuden pinnoille päädytään modifioidussa yhtälössä neljännen kertaluvun vaimennukseen, joka on verrannollinen O(∆x2 ). Vaimennustermi ei ole välttämätön muussa kuin massataseessa. • Pintanopeuden laskentakaavaa on syytä yksinkertaistaa, muuten se ei olisi aina edes vaimentava. Lausekkeeseen voidaan lisätä verrannollisuuskerroin C. Lauseke riippuu myös aika-askeleen pituudesta, mutta tästä ei yleensä ole haittaa, koska termi on verrannollinen O(∆x2 ):n. • Paineet ja konvektionopeudet liikemääräyhtälössä voidaan ottaa keskiarvoina rinnakkaisista hilapistearvoista. • Liikemääräyhtälön implisiittinen vaihe on tridiagonaalinen. • Painekorjausyhtälö on muodollisesti saman näköinen kuin limitetyllä hilalla. • Painetta on alirelaksoitava samaan tapaan kuin limitetyllä hilalla. Ratkaisut eri hilatyypeillä eivät eroa toisistaan merkittävästi. • Implisiittiset vaiheet ja painekorjausyhtälö voidaan laajentaa yhden kopin verran laskenta-alueen ulkopuolelle, jolloin reunaehdot saadaan käsitellyiksi implisiittisesti. • Vaimennustermi voidaan skaalata jopa jollain sopivalla referenssimassavirralla kertoimen AP,i+1/2 sijaan. Päivitetty 4.2.2014 107 6 Monidimensioinen painekorjausmenetelmä 6.1 Yhtälöiden diskretointi Edellä esitetty yksidimensioinen painekorjausmenetelmä on suoraviivaisesti laajennettavissa useampaan dimensioon. Varsinainen virtausratkaisu on kaksi- tai kolmidimensioinen ja yleensä ratkaistavana on kitkallinen virtaus, jolloin diskretoitavaksi tulee myös diffuusiotermejä. Seuraavassa tarkastellaan kaksidimensioista virtausta, mutta laajennus kolmidimensioiseen tilanteeseen on suoraviivaista. Esimerkki täs- N n W P w e E s S { Laskenta−alue { Haamu− kopit Kuva 6.1: Laskenta-alue ’haamukoppeineen’ ja laskentatilavuus P varustettuna ilmansuuntamerkinnöillä. sä yhteydessä sovellettavasta suorakulmaisesta hilasta on kuvassa 6.1. Reunaehdot annetaan kuten edelläkin kahden ’haamukoppi’-rivin avulla. Näiden avulla alue liitetään joko naapurilohkoihin tai niissä annetaan sisään- ja ulosvirtausreunaehdot. 6.1. YHTÄLÖIDEN DISKRETOINTI 108 Liikemääräyhtälöstä saadaan u-nopeuskomponentille Z Z Z ∂ ρudV + ρuV~ · ~ndS + pnx dS = ∂tZ V S S Z ∂u ∂u ∂u + ny + nz )dS + bx dV µ (nx ∂x ∂y ∂z V S (6.1) ja v-komponentille Z Z Z ∂ ρvdV + ρv V~ · ~ndS + pny dS = ∂tZ V S S Z ∂v ∂v ∂v + ny + nz )dS + by dV µ (nx ∂x ∂y ∂z V S (6.2) Diskretoimalla nämä saadaan kaksi liikemääräyhtälöä: Vi d(ρu)i + (Sρu2 )i+1/2 − (Sρu2 )i−1/2 + (Sρuv)j+1/2 − (Sρuv)j−1/2 dt +(Sp)i+1/2 − (Sp)i−1/2 −(Sµux )i+1/2 + (Sµux )i−1/2 − (Sµuy )j+1/2 + (Sµuy )j−1/2 = Vi bx,i Vi d(ρv)i + (Sρuv)i+1/2 − (Sρuv)i−1/2 + (Sρv 2 )j+1/2 − (Sρv 2 )j−1/2 dt +(Sp)j+1/2 − (Sp)j−1/2 −(Sµvx )i+1/2 + (Sµvx )i−1/2 − (Sµvy )j+1/2 + (Sµvy )j−1/2 = Vi by,i (6.3) Yllä on käytetty lyhennysmerkintää, jossa vain poikkeama indekseistä i ja j on mer- i, j+1 i, j+1/2 i−1, j i, j i, j−1/2 i+1, j Kuva 6.2: Indeksien lyhennysmerkinnät kitty näkyviin. Esimerkiksi merkintä i+ 12 tarkoittaa pintaa i+ 21 , j. Diffuusiotermeissä saadaan normaali toisen kertaluvun tarkkuus keskeisdifferensseillä ux,i+1/2 = (ui+1 − ui )/∆x ja uy,j+1/2 = (uj+1 − uj )/∆y. Vastaavat yhtälöt pätevät derivaatoille vx ja vy . Yksidimensioisella virtauksella lähdetermeillä voitiin kuvata monia ilmiöitä, jotka tosiasiallisesti aiheutuvat virtauksen monidimensioisuudesta, kuten kitkaa. Nyt 6.1. YHTÄLÖIDEN DISKRETOINTI 109 kitka tulee mukaan diffuusiotermin kautta. Monidimensioisella virtauksella lähdetermi kuvaa tilavuusvoimia kuten gravitaatio-, noste- tai sähkömagneettista voimaa. Ottamalla huomioon, että i-suuntaa vasten kohtisuorilla pinnoilla m ˙ i+1/2 = (Sρu)i+1/2 (6.4) ja vastaavasti j-suuntaa vasten kohtisuorilla pinnoilla m ˙ j+1/2 = (Sρv)j+1/2 (6.5) saadaan yhtälöt muotoon d(ρu)i + (mu) ˙ i+1/2 − (mu) ˙ i−1/2 + (mu) ˙ j+1/2 − (mu) ˙ j−1/2 Vi dt +(Sp)i+1/2 − (Sp)i−1/2 −(Sµux )i+1/2 + (Sµux )i−1/2 − (Sµuy )j+1/2 + (Sµuy )j−1/2 = Vi bx,i Vi d(ρv)i + (mv) ˙ i+1/2 − (mv) ˙ i−1/2 + (mv) ˙ j+1/2 − (mv) ˙ j−1/2 dt +(Sp)j+1/2 − (Sp)j−1/2 −(Sµvx )i+1/2 + (Sµvx )i−1/2 − (Sµvy )j+1/2 + (Sµvy )j−1/2 = Vi by,i (6.6) Yhtälöt poikkeavat yksidimensioisista virtauksista oikeastaan vain siinä, että laskentatilavuudella on enemmän kuin kaksi seinää. Yksidimensioisessa tapauksessa ei myöskään yleensä ole mukana diffuusiotermiä ja lisäksi nyt ratkaistavana on useampia liikemääräyhtälöitä. Yhtälöt voidaan käsitellä kuten skalaariyhtälöt jättämällä implisiittisessä vaiheessa u2 - ja v 2 -kaltaiset termit linearisoimatta. Tällöin kaikkien yhtälöiden kertoimet implisiittisessä vaiheessa tulevat samoiksi, mikä on huomattava etu. Jos kertoimet on laskettu valmiiksi edellisen iteraatiokierroksen nopeuskorjauksien jälkeen, voidaan niitä käyttää tapauksessa ρ = vakio myös seuraavalla kierroksella liikemääräyhtälöillä. Kaikki kaksi tai kolme yhtälöä voidaan myös ratkaista yhdellä kerralla. Vaihtoehtoisesti ne voidaan ratkaista yksi kerrallaan ja päivittää jokaisen ratkaisukerran jälkeen vastaava nopeuskomponentti. Tällöin voidaan seuraavaa liikemääräyhtälöä varten laskea uudet residuaalit ja implisiittisen vaiheen kertoimet. Tämä lähestymistapa tietenkin kasvattaa laskenta-aikaa, mutta saattaa nopeuttaa konvergenssia. Seuraavassa tarkastellaan x-suuntaista liikemääräyhtälöä. Yhtälön oikea puoli eli residuaali voidaan kirjoittaa muotoon ˙ i+1/2 + (mu) ˙ i−1/2 − (mu) ˙ j+1/2 + (mu) ˙ j−1/2 Riu = −(mu) 6.1. YHTÄLÖIDEN DISKRETOINTI 110 −(Sp)i+1/2 + (Sp)i−1/2 +(Sµux )i+1/2 − (Sµux )i−1/2 + (Sµuy )j+1/2 − (Sµuy )j−1/2 + Vi bx,i u u u u = −Fi+1/2 + Fi−1/2 − Fj+1/2 + Fj−1/2 + Vi bx,i (6.7) Liikemäärätase saadaan siis neljän (tai kuuden kolmidimensioisessa tapauksessa) vuoarvon taseesta, johon lisätään lähdetermi. Erillinen vuon käsite yksinkertaistaa huomattavasti laskennan suorittamista. Vuo rajapinnalla lasketaan seuraavasti u Fi+1/2 = (mu) ˙ i+1/2 + Si+1/2 [−µi+1/2 ui+1 − ui + pi+1/2 ] ∆xi+1/2 (6.8) missä ∆xi+1/2 on tilavuuksien i ja i + 1 keskipisteiden välinen etäisyys. Massavirta m ˙ lasketaan yhtälöistä (6.4) ja (6.5) keskiarvona kuten yksidimensioisessakin tapauksessa. Vaihtoehtoisesti massavirta voidaan laskea samalla tavoin kuin jatkuvuusyhtälössä yhdistämällä siihen Rhie-Chow -termi. Paine pi+1/2 lasketaan keskiarvona ja konvektoituva nopeus ui+1/2 MUSCL-kaavasta. Pinnalla j + u Fj+1/2 = (mu) ˙ j+1/2 − (Sµ)j+1/2 uj+1 − uj ∆yj+1/2 1 2 saadaan (6.9) Tässä on huomattava, että y-suunnassa u-yhtälön vuossa ei ole painegradienttia. Yleinen lauseke vuolle, joka pätee kaikissa suunnissa esitetään myöhemmin. Residuaalin laskenta voidaan hoitaa esimerkiksi siten, että lasketaan vuot i-suunnassa ja summataan niiden erotukset residuaalivektoriin. Sen jälkeen lasketaan vuot jsuunnassa ja summataan niiden erotus samaan residuaaliin. Mikäli suoritettaisiin ajan suhteen tarkkaa laskentaa olisi residuaaliin (6.7) lisättävä vielä aikaderivaattatermi. Yllä konvektiovuot lasketaan ylävirtapainottamalla kuten yksidimensioisessakin tapauksessa. (mu) ˙ i+1/2 = max(m ˙ i+1/2 , 0)uli+1/2 − max(−m ˙ i+1/2 , 0)uri+1/2 (6.10) Implisiittistä vaihetta varten käytetään 1. kertaluvun diskretointia (mu) ˙ i+1/2 = max(m ˙ i+1/2 , 0)ui − max(−m ˙ i+1/2 , 0)ui+1 (6.11) Linearisoimalla yhtälön (6.8) 1. kertaluvun approksimaatio saadaan u,n+1 Fi+1/2 = u,n Fi+1/2 + u,n ∂Fi+1/2 ∂u u,n ∆u = Fi+1/2 + [max(m ˙ i+1/2 , 0) + (Sµ/∆x)i+1/2 ]∆ui 6.1. YHTÄLÖIDEN DISKRETOINTI 111 − [max(−m ˙ i+1/2 , 0) + (Sµ/∆x)i+1/2 ]∆ui+1(6.12) Koska vain konvektio ja diffuusio-osat linearisoidaan nopeuksien suhteen, yhtälön (6.9) linearisointi tuottaa vastaavan tuloksen. Linearisoinneista saadaan implisiittisen vaiheen kertoimiksi ai,i+1 ≡ AE,i = ai,i−imax ≡ AS,i = ai,i+imax ≡ AN,i = aii ≡ AP,i = = Sµ ∆x i−1/2 Sµ − max(−m ˙ i+1/2 , 0) − ∆x i+1/2 Sµ − max(m ˙ j−1/2 , 0) − ∆y j−1/2 Sµ − max(−m ˙ j+1/2 , 0) − ∆y j+1/2 Vi ρi + max(m ˙ i+1/2 , 0) + max(−m ˙ i−1/2 , 0) ∆t max(m ˙ j+1/2 , 0) + max(−m ˙ j−1/2 , 0) Sµ Sµ Sµ Sµ + + + + ∆x i−1/2 ∆x i+1/2 ∆y j−1/2 ∆y j+1/2 Vi ρi − AW,i − AE,i − AN,i − AS,i (6.13) ∆t ai,i−1 ≡ AW,i = − max(m ˙ i−1/2 , 0) − missä lävistäjäalkio AP on jälleen syytä laskea muiden kertoimien avulla, jotta lävistäjän kertoimessa toteutuisi massatase. Implisiittiseksi vaiheeksi saadaan ai,i−imax ∆uj−1 + ai,i+imax ∆uj+1 + ai,i−1 ∆ui−1 + ai,i+1 ∆ui+1 + aii ∆ui = Riu,n (6.14) Kaksidimensioisessa tapauksessa koppia i, j + 1 vastaa yksidimensioinen indeksi 1 2 3 imax jmax jmax−1 i+imax i−1 i i+1 i−imax Kuva 6.3: Laskentatilavuuksien yksidimensioinen indeksointi. Tässä periaatekuvassa reunaehtokopit eivät ole mukana, joten alueen koko on imax × jmax. i + imax, kuten kuvassa on esitetty. Kerroinmatriisi koostuu tridiagonaalisesta lävistäjäosasta ja kahdesta ±imax-etäisyydella olevasta nauhasta. Käytännön imple- 6.1. YHTÄLÖIDEN DISKRETOINTI 112 mentoinnissa on lisäksi otettava huomioon haamukopit, jolloin ohjelmakoodissa indeksiä i, j + 1 vastaa I+IMAX+4. Liikemääräyhtälön residuaali v-nopeudelle on Riv = −(mv) ˙ i+1/2 + (mv) ˙ i−1/2 − (mv) ˙ j+1/2 + (mv) ˙ j−1/2 −(Sp)j+1/2 + (Sp)j−1/2 +(Sµvx )i+1/2 − (Sµvx )i−1/2 + (Sµvy )j+1/2 − (Sµvy )j−1/2 + Vi by,i = v v v v −Fi+1/2 + Fi−1/2 − Fj+1/2 + Fj−1/2 + Vi by,i (6.15) Vuot voidaan laskea seuraavasti v Fi+1/2 = (mv) ˙ i+1/2 − (Sµ)i+1/2 vi+1 − vi ∆xi+1/2 (6.16) missä ∆x on tilavuuksien i ja i + 1 keskipisteiden välinen etäisyys. Vastaavasti pinnalla j + 1/2 v Fj+1/2 = (mv) ˙ j+1/2 + Sj+1/2 [−µj+1/2 vj+1 − vj + pj+1/2 ] ∆yj+1/2 (6.17) Yhtälöissä (6.16) ja (6.17) on huomattava paineiden sijaitsevan päinvastoin kuin u-nopeuksia laskettaessa. Aiemmin todettiin, että implisiittisen vaiheen kertoimet voidaan pitää samoina kuin x-suuntaisen liikemääräyhtälön tapauksessa. Vaihtoehtoisesti ne voidaan laskea uudestaan päivitetyillä u-nopeuksilla. Ratkaistavaksi saadaan yhtälöt Au ∆u = Ru (6.18) Av ∆v = Rv (6.19) ja Jossa matriisit Au ja Av voivat siis olla myös samoja Au ≡ Av , mikäli Av :ta ei ole päivitetty. Huomautettakoon vielä tässäkin yhteydessä, että mikäli olisi linearisoitu termit u2 ja v 2 , matriisit poikkeaisivat tällöin aina näiltä osin toisistaan. Ratkaistavaksi saadaan yhtälöryhmät (6.18) ja (6.19). Ratkaisussa voidaan käyttää peruskurssilla esillä ollutta approksimatiivista faktorointia (Ari Miettisen lisensiaattityö). Tästä menettelystä käytetään usein myös nimitystä ADI (esim. FerzigerPeric), vaikka kyseessä ei olisikaan alkuperäinen ADI-menetelmä. Yleensä painekorjausmenetelmissä käytetään toisen tyyppisiä iteratiivisia ratkaisuja, mikä ei tarkoita, että faktorointi olisi niitä tehottomampi. Faktorointi sopii hyvin myös monihilaalgoritmin yhteyteen. Koska muut kuin faktorointityyppiset iteratiiviset ratkaisut 6.1. YHTÄLÖIDEN DISKRETOINTI 113 ovat perinteen vuoksi keskeisellä sijalla painekorjausmenetelmässä, käytetään tällä kurssilla niitä ’pedagogisista syistä’. Liikemääräyhtälöt ratkeavat helposti GaussSeidel (GS) tai line-Gauss-Seidel-menetelmillä (LGS). Ratkaisu konvergoi yleensä hyvin nopeasti, koska liikemääräyhtälöitä on alirelaksoitu aikaderivaattatermillä ja ne ovat siten lävistäjävaltaisia. Painekorjausyhtälöllä tilanne on hankalampi. Liikemääräyhtälöiden ratkaisun jälkeen uudet nopeuskomponentit päivitetään yhtälöistä u∗i = uni + ∆ui vi∗ = vin + ∆vi (6.20) On huomattava, että nopeudet on päivitettävä myös ainakin ensimmäisessä haamukoppirivissä, siis laskenta-alueen reunoilla. Tämä johtuu siitä, että massatasetta laskettaessa tarvitaan uudet nopeudet myös reunoilla ja ne lasketaan keskiarvosta. Kätevimmin nopeudet päivittyvät, jos yhtälöiden (6.18) ja (6.19) ratkaisun annetaan mennä yhdellä rivillä yli laskenta-alueen, kuten yksidimensioisessa tapauksessakin tehtiin. Uudet ’täpy’-nopeudet eivät toteuta jatkuvuusyhtälöä. Sijoittamalla massataseeseen un+1 = u∗ + u′, missä uusi nopeus un+1 toteuttaa sen, saadaan (Sρu′ )i+1/2 − (Sρu′ )i−1/2 + (Sρv ′ )j+1/2 − (Sρv ′ )j−1/2 = −(Sρu∗ )i+1/2 + (Sρu∗ )i−1/2 − (Sρv ∗ )j+1/2 + (Sρv ∗ )j−1/2 = −∆m ˙ ∗i(6.21) Liikemääräyhtälöistä on jälleen talletettava diagonaalikertoimet aii ≡ Ap,i . SIMPLEmenetelmässä pintanopeuksien korjausten u′ riippuvuus paineista saadaan liike- määräyhtälöstä limitetylle aputilavuudelle. Jättämällä pois riippuvuus rinnakkaisten nopeuskorjausten välillä tehdään sama approksimaatio kuin yksidimensioisessa tapauksessa u′i+1/2 ≈ − Si+1/2 ′ (p − p′i ) AuP,i+1/2 i+1 (6.22) Vastaava yhtälö saadaan v ′ -korjaukselle ′ vj+1/2 ≈− Sj+1/2 ′ (p − p′j ) AvP,j+1/2 j+1 (6.23) Kertoimet AuP ja AvP on tässä erotettu toisistaan, kuten Ferziger-Pericissä. Kuten edellä on monesti todettu, kertoimet periaatteessa voivat olla myös samoja, mikäli päivitystä u-nopeuksien ratkaisun jälkeen tai neliöllisten termien linearisointia 6.1. YHTÄLÖIDEN DISKRETOINTI 114 ei ole tehty. Kertoimet pinnoilla lasketaan keskiarvoina talletetuista noodipisteiden kertoimista (6.13). Sijoittamalla nopeuskorjaukset yhtälöön (6.21) − − (S 2 ρ)i+1/2 ′ (S 2 ρ)i−1/2 ′ ′ (p − p ) + (p − p′i−1 ) i AuP,i+1/2 i+1 AuP,i−1/2 i (S 2 ρ)j+1/2 ′ (S 2 ρ)j−1/2 ′ ′ (p − p ) + (p − p′j−1 ) = −∆m ˙ ∗i j AvP,j+1/2 j+1 AvP,j−1/2 j (6.24) mistä saadaan sievennetyksi Poisson-yhtälö painekorjauksille (pi = pj ≡ pi,j ) − (S 2 ρ)i−1/2 ′ (S 2 ρ)j+1/2 ′ (S 2 ρ)j−1/2 ′ (S 2 ρ)i+1/2 ′ p − p − p − p AuP,i+1/2 i+1 AuP,i−1/2 i−1 AvP,j+1/2 j+1 AvP,j−1/2 j−1 (S 2 ρ)i−1/2 (S 2 ρ)i+1/2 (S 2 ρ)j+1/2 (S 2 ρ)j−1/2 ′ pi = −∆m ˙ ∗i (6.25) + + + + AuP,i−1/2 AuP,i+1/2 AvP,j+1/2 AvP,j−1/2 Kuten yksidimensioisessakin tapauksessa, on nyt massataseen laskentaan ∆m ˙ ∗i yhdistettävä vaimennustermi sekä i- että j-suunnassa. m ˙ ∗i+1/2 ( (Sρ)i+1/2 r 1 [pi+1/2 − pli+1/2 ] [(ρu∗ )i+1 + (ρu∗ )i ] − C u 2 2AP,i+1/2 ( (Sρ)j+1/2 r 1 [(ρv ∗ )j+1 + (ρv ∗ )j ] − C v [p − plj+1/2 ] 2 2AP,j+1/2 j+1/2 = Si+1/2 m ˙ ∗j+1/2 = Sj+1/2 ) ) (6.26) (6.27) Vaimennustermeistä voidaan havaita, että mikäli laskennassa on käytetty eri arvoja kertoimille AuP ja AvP , vaimennus tulee eri tavoin skaalatuksi x-ja y-suunnissa (i- ja j-suunnissa). Tällä on lähinnä periaatteellinen merkitys, koska vaimennustermi on verrannollinen O(∆x2 ):en. Poisson-yhtälö (6.25) on samaa tyyppiä kuin yksidimensioisessa tapauksessa yhtälö (5.44) ja lävistäjäalkio on täsmälleen sama kuin muiden alkioiden summa. Tämä aiheuttaa hankaluuksia iteratiivisessa ratkaisussa. Painekorjausyhtälöä ei voida suoraan ratkaista approksimatiivisella faktoroinnilla. Jotta yhtälö saataisiin konvergoitumaan, voidaan painekorjausta tässä vaiheessa alirelaksoida jatkuvuusehdon pseudolinearisoinnilla (4.41). Tällöin diagonaalille lisätään termi Vi (Cu u∞ )2 ∆t (6.28) missä u∞ on tehtävään sopiva nopeusskaala ja sopiva arvo kertoimelle Cu löytyy kokeilemalla väliltä [10,100]. Termi voidaan tulkita tiheyden pseudolinearisoinniksi. Mikäli tiheys ei ole vakio, lävistäjälle tulee lisätä todellinen linearisointi Vi 2 c ∆t (6.29) 6.1. YHTÄLÖIDEN DISKRETOINTI 115 missä c on äänen nopeus. Alirelaksoinnin jälkeen painekorjausyhtälö saadaan konvergoimaan, mutta konvergenssi voi olla hidasta. GS-menetelmä on yleensä aivan liian hidas, parempi tulos saadaan LGS:llä. Luultavasti paras menettelytapa on soveltaa monihila-algoritmia painekorjauksen yhteydessä. Ferziger-Peric suosittelee käytettäväksi Stonen SIP-menetelmää (strongly implicit procedure). Painekorjausyhtälön ratkaisuun kuluva aika on suuri, joten on ratkaisevan tärkeää käyttää niin tehokasta menetelmää kuin mahdollista. Kaksidimensioisen karteesisessa hilassa toimivan painekorjausmenetelmän osat ovat nyt kasassa. Edellä on jo tullut esille eräitä vaihtoehtomahdollisuuksia. Käytännön algoritmissa on lukemattomia variaatiomahdollisuuksia. Seuraavassa esitetään eräs toimiva vaihtoehto: 1. Interpoloidaan MUSCL-kaavasta suureet uri+1/2 , uli+1/2 ja pri+1/2 , pli+1/2 . Paineissa käytetään toisen kertaluvun ylävirtamenetelmää. Näitä paineita käytetään vain massatasevirheen ∆m ˙ ∗i laskennassa. Kopin pinnalla oleva paine pi+1/2 lasketaan keskiarvona. Lasketaan u-liikemäärän vuot yhtälöistä (6.8) ja (6.9). Konvektiovuo ylävirtapainotetaan seuraavasti (mu) ˙ i+1/2 = max[(Sρu)i+1/2 , 0]uri+1/2 −max[−(Sρu)i+1/2 , 0]uli+1/2 (6.30) missä ρui+1/2 lasketaan sopivana keskiarvona hilapistearvoista. 2. Lasketaan x-suuntaisen liikemäärän residuaali vuoarvojen ja lähdetermin avulla yhtälöstä (6.7). Lasketaan implisiittisen vaiheen kertoimet yhtälöstä (6.13). 3. Ratkaistaan iteratiivisella menetelmällä yhtälö (6.18) ja päivitetään u-nopeudet yhtälöstä (6.20). r l 4. Interpoloidaan MUSCL-kaavasta suureet vj+1/2 , vj+1/2 ja prj+1/2 , plj+1/2 . Las- ketaan v-liikemäärän vuot yhtälöistä (6.16) ja (6.17). 5. Lasketaan y-suuntaisen liikemäärän residuaali vuoarvojen ja lähdetermin avulla yhtälöstä (6.15). Lasketaan implisiittisen vaiheen kertoimet yhtälöstä (6.13). Tässä vaihtoehdossa implisiittisen vaiheen kertoimet tulevat päivitetyiksi unopeuden osalta. 6.1. YHTÄLÖIDEN DISKRETOINTI 116 6. Ratkaistaan iteratiivisella menetelmällä yhtälö (6.19) ja päivitetään v-nopeudet yhtälöstä (6.20). 7. Lasketaan uusien nopeuksien avulla massataseen virheet ∆m ˙ ∗i = m ˙ ∗i+1/2 − m ˙ ∗i−1/2 + m ˙ ∗j+1/2 − m ˙ ∗j−1/2 . Nyt massavirrat lasketaan yhtälöistä (6.26) ja (6.27) 8. Lasketaan painekorjausyhtälön (6.25) kertoimet. Lisätään lävistäjälle alirelaksaatiota. Ratkaistaan painekorjausyhtälö sopivalla menetelmällä. 9. Päivitetään nopeudet hilapistearvoissaan. Vaihtoehtoinen menettely olisi korjata pintanopeuksia yhtälöistä (6.22) ja (6.23). Hilapisteissä nopeuskorjaukset ovat u′i = − Si+1/2 ′ Si−1/2 pi+1/2 + u p′i−1/2 u AP,i AP,i (6.31) vastaava yhtälö saadaan v ′ -korjaukselle vi′ = − Sj+1/2 ′ Sj−1/2 ′ pj+1/2 + p v AP,i AvP,i j−1/2 (6.32) Kertoimet AuP,i ja AvP,i on siis pidettävä tallessa tänne asti. Painekorjaukset p′i+1/2 koppien pinnoilla saadaan keskiarvoina hilapistearvoista. Tämän vuoksi on myös painekorjausyhtälön laskenta hyvä ulottaa yhden koppirivin verran ulos laskenta-alueesta. Myös kertoimet AuP,i ja AvP,i on talletettava yhdessä haamukoppirivissä, jotta ensimmäisellä rajapinnalla varsinaisessa laskentaalueessa kertoimilla AuP,i+1/2 ja AvP,i+1/2 olisi mielekäs arvo. Kuten yksidimensioisessa tapauksessa on tässäkin mahdollista alirelaksoida nopeuksia, mutta yleensä näin ei tehdä enää tässä vaiheessa. 10. Päivitetään uudet paineet. Paineita joudutaan alirelaksoimaan tapauksesta riippuen huomattavastikin. Sopiva lähtökohta on αp ≈ 0, 3. 11. Ratkaistaan mahdolliset skalaariyhtälöt ja uudet tiheydet sekä viskositeetit samaan tapaan kuin tehtiin yksidimensioisen algoritmin yhteydessä. Algoritmia voidaan helposti muunnella siirtämällä esimerkiksi skalaariyhtälöiden ratkaisu ensimmäiseksi. Yllä laskettiin kertoimille AvP uusi arvo, kun u-nopeudet oli päivitetty. Vaihtoehtoisesti olisi voitu käyttää samoja kertoimia. 6.2. FYSIKAALISET REUNAEHDOT 117 6.2 Fysikaaliset reunaehdot Virtausyhtälöiden ratkaisua säätelevät reunaehdot. Ratkaisualueen reunan muoto ja sillä olevat fysikaaliset ehdot ovat ne, jotka ajavat ratkaisun aina kulloinkin vallitsevaan muotoon. Varsinaisessa ratkaisualueessa on aina voimassa samat yhtälöt, jotka saattavat tuottaa hyvinkin erilaisia tuloksia pienillä reunaehtojen muutoksilla. Fysikaalisten reunaehtojen lisäksi ratkaisussa tarvitaan ns. numeerisia reunaehtoja, joista oli jo puhetta kappaleessa 2.6. a) b) Vt Uo o ulosvirtaus 555555555 555555555 vanavesi 555555555 Vn sisäänvirtaus ulosvirtaus sisäänvirtaus n laskenta−alue laskenta−alueen reuna mahdollinen sisäänvirtaus Kuva 6.4: (a) Ulkopuolinen virtaustilanne ja (b) sisäpuolinen virtaus. Virtaustapaukset voidaan jakaa sisäpuolisiin ja ulkopuolisiin virtauksiin, joilla on reunaehtojen suhteen selvä ero. Ulkopuolisissa virtauksissa on määriteltävissä häiriötön reuna, ainakin jos laskenta-aluetta laajennetaan tarpeeksi (kts. kuva 6.4). Tällaisella reunalla on suhteellisen helppoa antaa kiinteät ns. vapaan virtauksen ehdot. Reunaehtoja voidaan yrittää tarkentaa erityisesti jos laskenta-aluetta ei ole varaa tehdä riittävän laajaksi. Tällöin reunaehtojen antamiseen vaikuttaa virtauksen suunta ja Machin luku karakteristikoiden muodossa. Edellä esitetyissä karakterististen suureiden ja nopeuksien yhtälöissä on käytettävä alueen reunaa vastaan kohtisuoraa nopeuskomponenttia vn . Sisäpuolisella virtauksella on ongelmana saada laskenta-alue laajennetuksi reunojen osalta riittävän häiriöttömälle alueelle. Reunaehdot on pakko tällöin jakaa ’sisään-’ ja ’ulosvirtaus’ ehtoihin. Varsin usein ei kuitenkaan etukäteen täsmällisesti tiedetä virtaussuuntaa. Varsinkin ulosvirtauskohdassa saattaa helposti syntyä pienellä alueella kuvassa 6.4 esitetty ’akanvirtaus’. Tämän reuna-arvoja ei yleensä tunneta ja vaikka ne tunnettaisiinkin, niiden käyttö on hankalaa. Iteraatiohistoriaan syntyy tällöin jonkinlainen nykäys, kun ekstrapoloinnin sijaan annetaan etukäteen määritelty reuna-arvo. 6.2. FYSIKAALISET REUNAEHDOT 118 Kitkallisella virtauksella voi esiintyä seuraavanlaisia fysikaalisia reunaehtoja: • Sisään- ja ulosvirtaus. Näiden käsittely kuvattiin lähemmin karakteristikakäsitteen yhteydessä. Todetaan vielä, että jos lasketaan myös lämpötiloja, sen yhtälö on kokoonpuristumattomassa tapauksessa samanlainen skalaariyhtälö kuin liikemääräyhtälökin kullekin nopeuskomponentille. Lämpötila tai joku muu ratkaistava termodynaaminen suure on annettava sisäänvirtaukselle. • Vapaa virtaus. Tällöin laskenta-alueen reuna on viety niin kauas, että reu- naehdot eivät tarvitse mitään erikoiskäsittelyä laskennan aikana. Tarkemmassa analyysissä usein havaitaan jonkin verran reunojen vaikutusta. Reunat pitäisi viedä suuruusluokkaa 100× kappaleen koko pituisen matkan päähän, mikä yleensä vaatii varsin suuren laskentatilavuusmäärän. • Symmetriareuna on tavallaan triviaalein reunaehto ja usein sitä ei tule pitä- neeksi edes fysikaalisena reunaehtona. Se on kuitenkin ehto, johon liittyy kaikkein vähiten ongelmia ja sitä pitäisi käyttää aina kuin suinkin mahdollista. Symmetria voidaan käsitellä usealla tavalla, joista suoraviivaisimmassa tavassa ratkaistavat suureet peilataan sopivasti symmetriakohdan toisella puolella sijaitseviin ns. haamukoppeihin (ghost cells). Tämän jälkeen ratkaisu etenee samalla tavoin kuin sisäalueen laskenta. Haamukoppien käyttöön palataan myöhemmin. • Kiinteällä seinällä asetetaan nopeus nollaksi u = v = w = 0. Joskus sei- nä voi liikkua, kuten turbokoneilla. Tällöin asetetaan nopeudeksi seinän nopeus. Tämän tyyppistä reunaehtoa nimitetään englannin kielessä usein ’noslip’-ehdoksi. Jos energiayhtälö on laskennassa mukana, myös sille tarvitaan vastaava reunaehto. Suoraviivaisinta on asettaa lämpötila seinämän arvoon. Usein seinämälämpötilaa ei kuitenkaan tunneta. Kaasuvirtauksilla voidaan joskus hyvänä approksimaationa käyttää tulovirtauksen kokonaislämpötilaa γ −1 Ma2∞ )T∞ (6.33) 2 on vapaan virtauksen lämpötila. Lämpötilan vaihtoehtona saattaa Tw = (1 + missä T∞ tulla kyseeseen lämpövuo qw′′ . Tällöin Fourierin lain mukaan −(k ∂T ) = qw′′ ∂n (6.34) 6.3. REUNAEHTOJEN KÄSITTELY 119 missä k on lämmönjohtavuus ja ∂T /∂n pinnan normaalin suuntainen derivaatta. Derivaatan approksimointi karteesisessa tapauksessa oli esillä jo peruskurssilla, yleisempään palataan jatkossa. Hyvin usein voidaan riittävällä tarkkuudella olettaa seinät adiabaattisiksi, jolloin reunaehdoksi tulee ∂T /∂n = 0. Kiinteällä pinnalla tarvitaan myös paine, joka voidaan antaa joko numeerisella tai fysikaalisella reunaehdolla. Rajakerroksessa paineen normaalin suuntainen derivaatta on nolla, jolloin fysikaalinen reunaehto olisi ∂p/∂n = 0. Jos pinta on kaareva, reunapaine-ehtoa voidaan yrittää korjata jonkinlaisella ’keskipakotermillä’, joka myös on fysikaalinen reuna-ehto. Käytäntö on osoittanut, ettei näin tarvitse tehdä. Pintapaine voidaan yksinkertaisesti ekstrapoloida ratkaisualueesta MUSCL-kaavalla. Tällöin kyseessä on numeerinen reunaehto. Eulerin yhtälöillä muut fysikaaliset reunaehtotyypit säilyvät likimain samoina, mutta kiinteillä pinnoilla on vain yksi niin sanottu ’slip’-ehto V~ · ~n = 0 (6.35) jonka mukaan kiinteän pinnan läpi ei tapahdu virtausta. 6.3 Reunaehtojen käsittely Reunaehtoja tarkastellaan lähemmin käyräviivaisen laskentahilan yhteydessä. Tässä yhteydessä tarkastellaan vain sisään- ja ulosvirtausta sekä kiinteää pintaa. Sisään ja ulosvirtausreunat voidaan laskea yhtälöistä (5.45)-(5.50) olettamalla kunkin koppirivin muodostavan ikään kuin yksidimensioisen virtausputken. Reunaehdot on laskettava sekä eksplisiittisen että implisiittisen vaiheen yhteydessä. Eksplisiittisen vaiheen lopullinen reunaehto on aina vuo laskenta-alueen rajapinnalla. Vuon laskentaan voi liittyä fysikaalisia ja matemaattisia reunaehtoja. Implisiittisessä vaiheessa reunaehdot on yksinkertaista ottaa huomioon laajentamalla ratkaisualue yhdellä rivillä varsinaisen laskenta-alueen yli, kuten yksidimensioisessakin tapauksessa tehtiin. Toinen mahdollisuus on eliminoida ensimmäisen haamukopin vaikutus varsinaisen laskenta-alueen ensimmäisen kopin yhtälöstä. 6.3. REUNAEHTOJEN KÄSITTELY 120 Kiinteät tai liukuvat pinnat on mahdollista käsitellä usealla eri tekniikalla. Fysikaalinen reunaehto nopeuksille on V~ = V~surf (6.36) missä V~surf on pinnan nopeus. Reunaehto (6.36) toteutetaan komponenteittain. Tässä reunaehto toteutetaan haamukoppi-käsitteen avulla. Tällöin erillistä reunavuoohjelmaa ei tarvita, vaan reunat voidaan laskea samalla tavoin kuin sisäalueen pisteet. Kuvassa 6.5 on esitetty indeksointi reunalla käyttäen ilmansuuntamerkintöjä seinää lähinnä olevalle kopille. On huomattava, että reuna voi olla periaatteessa joko ’ylä’- tai ’alareuna’. Kiinteällä pinnalla on konvektionopeus aina = 0. Kar- y N v u P 11111111111 1111111111 s 111111111111111111111 111111111111111111111 S SS Kuva 6.5: Nopeusprofiilit ja reunan käsittely haamukoppien avulla. teesisessa koordinaatistossa esimerkiksi kuvan tapauksessa tämä saadaan aikaiseksi asettamalla vS = −vP (6.37) Tässä on oletettu ettei pinta liiku y-suunnassa, ts. vsurf = 0. Kun konvektionopeus lasketaan keskiarvona, saadaan pinnalla vs = 1/2(vS + vP ) = 0. Implisiittisessä vaiheessa saadaan noodille S yhtälö ∆vS + ∆vP = 0 (6.38) jolloin lävistäjän ulkopuolelle tulee positiivinen termi. Yhtälöryhmä ei toteuta Scarboroughin kriteeriä, mutta ratkaisu näyttäisi kuitenkin onnistuvan. Kuten yksidi- 6.3. REUNAEHTOJEN KÄSITTELY 121 mensioisen tapauksen yhteydessä todettiin, varmempi keino saattaa olla jättää implisiittinen vaihe muotoon ∆vS = 0 (6.39) ja päivittää tämän jälkeen vS :n arvo yhtälöstä (6.37). Kuvan tapauksessa u-nopeus ei vaikuta konvektionopeuteen, vaan x-suuntaisen nopeuden vaikutus tulee tässä esiin kitkatermin kautta. Haamutilavuuteen voidaan asettaa sellainen nopeus, että pinnalle s saadaan oikea arvo derivaatalle ∂u/∂y. Ensimmäisenä approksimaationa voidaan käyttää us = −uP + 2usurf (6.40) Tällöin pinnalla saadaan us = 1/2(uS + uP ) = usurf . Koska konvektio kiinteällä pinnalla on nolla, u-nopeus vaikuttaa vain kitkatermiin. Se saadaan näennäisesti toisen kertaluvun tarkasta yhtälöstä ∂u uP + uP − 2usurf uP − usurf uP − uS = = = ∂y s ∆ys ∆ys ∆ys /2 (6.41) Huomataan, että ekstrapoloinnilla (6.40) itse asiassa saadaan ensimmäisen kertaluvun approksimaatio derivaatalle ∂u/∂y. Sama tarkkuus saadaan laskettaessa vnopeuden derivaattaa. Kyseistä approksimaatiota kuitenkin käytetään yksinkertaisuuden vuoksi tällä kurssilla. Käytännön virtaustehtäviin, ainakin sellaisiin, joissa kiinteällä seinällä on huomattava merkitys ratkaisuun, voisi olettaa tarvittavan toisen kertaluvun tarkkuutta myös kiinteillä pinnoilla. Tällöin derivaatta pinnalla on laskettava laskenta-alueiden pisteiden avulla. Kuvan tapauksessa voidaan käyttää seuraavaa toisen kertaluvun tarkkaa approksimaatiota ∂u −8usurf + 9uP − uN = ∂y s 3∆yP (6.42) Yhtälö voidaan helposti osoittaa toisen kertaluvun tarkaksi kehittämällä termit sarjaksi pisteen s ympärillä. Vastaava yhtälö pätee nopeudelle v. Periaatteessa voitaisiin latoa pinnan alla olevaan haamukoppiin sellainen arvo, että yhtälö (6.42) toteutuisi. Oikeaa konvektionopeutta ei kuitenkaan saataisi yhtä aikaa lasketuksi keskiarvona. Sen vuoksi on helpoin tapa laskea kiinteiden pintojen reunavuot erillään muista vuoarvoista omassa aliohjelmassaan. Tällöin yhtälöä (6.42) käytetään vuon kitkallisen osuuden laskennassa ja konvektiovuo asetetaan aina nollaksi. On tärkeää havaita, että konvektiovuo on aina nolla kiinteällä pinnalla vaikka pinta liikkuisikin. 6.3. REUNAEHTOJEN KÄSITTELY 122 Edellä esitettyä menettelyä ja yhtälöä (6.42) käytettiin vuosia TKK:lla kehitetyssä FINFLO-ohjelmassa. Rajakerroksessa asia ei kuitenkaan ole näin yksinkertainen, vaan tarkkuus riippuu myös nopeusprofiilin muodosta. Ainakin niissä tapauksissa, joissa diskretointi viedään kiinteälle pinnalle asti (laminaari virtaus tai ns. pienen Reynoldsin luvun mallinnus turbulentille virtaukselle) nopeusprofiilin muodon vuoksi yhtälön (6.41) mukainen - siis ensimmäisen kertaluvun diskretointi antaakin tarkemman approksimaation derivaatalle ∂u/∂y (Patrik Rautaheimon väitöskirja)! Molemmat kaavat antavat saman tuloksen, kun ∆y → 0, mutta yleensä ensimmäisen kertaluvun menetelmällä tulos on tarkempi. Vastaavanlaisin numeerisin kokein osoitettiin peruskurssilla, että korkeamman kertaluvun menetelmät eivät aina tuota tarkempaa approksimaatiota derivaatalle tai toiselle derivaatalle, jos derivaatan arvo on suuri. Approksimaation (6.41) käyttö on siis järkevää myös tarkkuuden vuoksi. Tässä yhteydessä on kuitenkin huomautettava, että vastaavia numeerisia kokeita ei ole tehty ns. seinämäfunktion yhteydessä (ison Reynoldsin luvun turbulenssimalli). Pinnan vuohon tarvitaan myös paine ps . Paineelle voidaan käyttää kiinteällä pinnalla von Neumannin ehtoa ∂p/∂n = 0. Ehto on fysikaalinen siinä mielessä, että se toteutuu rajakerroksessa hyvällä tarkkuudella. Tällöin asetetaan pS = pP (6.43) jolloin keskiarvoksi saadaan ps = 1/2(pS + pP ) = pP . Painekorjausyhtälössä asetetaan noodille S p′S − p′P = 0 (6.44) mikä toteuttaa myös Scarboroughin kriteerin. Limitetyllä hilalla on sellainen ominaisuus, ettei painereunaehtoa pinnoilla tarvita ollenkaan. Itse asiassa tämä on yleinen virtausratkaisun ominaisuus. Tavanomaisella hilalla paine voidaan ekstrapoloida pinnalle s käyttäen toisen kertaluvun ylävirtamenetelmää 3 1 ps = pP − pN 2 2 (6.45) Tämä on yksinkertaista kytkeä edellä kuvattuun tapaan laskea vuot pinnoilla erillisessä aliohjelmassa. Koska konvektiovuo on pinnalla nolla, saadaan seuraavat vuon 6.4. ALIRELAKSOINTITAVAT 123 laskentakaavat Fsu Fsv ∂u = Ss −µs ∂y s ∂v = Ss −µs +ps ∂y s (6.46) Tällä kurssilla vuot lasketaan kiinteillä pinnoilla samalla tavoin kuin muuallakin. Yhtälö (6.45) voidaan toteuttaa asettamalla koppiin S pS = 2pP − pN (6.47) Tässäkin tapauksessa kannattaa painekorjauksessa käyttää yhtälöä (6.44). Nopeuskorjauksen kannalta yhtälö (6.44) merkitsee, että nopeuskorjaus pintaa vasten kohtisuorassa suunnassa on nolla. Tämä ehto on hyödyllinen esimerkiksi monilohkoisessa tapauksessa, jossa painekorjausta ei voida ulottaa lohkorajan yli. Ehtohan sanoo myös, että lohkojen rajalla oleva nopeus pidetään vakiona, mikä stabiloi muutoin eksplisiittistä reunaehtoa. Koska kiinteän pinnan läpi ei tapahdu konvektiota, laskentatilavuuteen SS ei tarvita mitään arvoja. Mikäli käytettäisiin jotain monimutkaista, esimerkiksi vuon rajoitinta hyödyntävää, tapaa pinnan s vuon laskennassa, tarvittaisiin järkevät arvot myös koppiin SS. Nekin voidaan saada sopivalla ekstrapoloinnilla. 6.4 Alirelaksointitavat Aiemmin on jo tullut esille useita tapoja alirelaksoida ratkaisua. Alirelaksaatio yleensä aina hidastaa konvergenssia. Parhaiten tämä näkyy käytettäessä pseudoaikaintegrointia, kuten edellä on liikemääräyhtälöissä tehty. Aikaintegroinnin vuoksi ei yritetä yhdellä loikalla edetä pitkälle ratkaisussa, vaan sitä hidastetaan sen verran, että konvergenssi on paras mahdollinen ja epästabiilisuus vältetään. Seuraavassa kerrataan alirelaksointitavat: • Yksinkertaisin tapa alirelaksoida on pienentää laskettua suuren muutosta φn+1 = φn + αφ ∆φ (6.48) Tätä tapaa käytetään yleensä aina painekorjauksille p′ ja sitä voidaan käyttää myös nopeuskorjauksille painekorjauksen yhteydessä, mutta kuten on todettu silloin uudet nopeudet eivät toteuta jatkuvuusyhtälöä. 6.4. ALIRELAKSOINTITAVAT 124 • Alirelaksointi aikaderivaattatermin kautta lisää lävistäjävaltaisuutta. Tämä ta- pa on edellä ollut liikemääräyhtälöissä oletusarvona. Aika-askel vaikuttaa myös termin AP kautta ratkaisuun, jos käytetään Rhie ja Chow -skaalausta (5.22). Järjellisillä aika-askeleen arvoilla tämä vaikutus on mitätön ja pieni osa koko katkaisuvirheestä. Erittäin pienillä aika-askelilla AP kasvaa suureksi ja saattaa pienentää vaimennustermiä liiaksi, mikä näkyy ratkaisussa. Aika-askeleen pituus vaikuttaa myös konvergenssiin. Periaatteessa pitkillä aika-askelilla konvergenssi on parempi, mutta epästabiilisuuden vaara on olemassa. Optimiaikaaskel on kokoonpuristumattomalla virtauksella suuruusluokkaa (6.49) ∆t = C∆x/|Vmax | missä Courantin luku C = O(1) ja |Vmax | on laskenta-alueessa olevan mak- siminopeuden itseisarvo. Toinen tässä yhteydessä kokeilematon, mutta paljon käytetty tapa kokoonpuristuvan virtauksen yhteydessä, on käyttää paikallista aika-askelta, jolloin ∆ti lasketaan kullekin laskentatilavuudelle kaavasta (6.49) käyttäen koppikohtaista nopeutta. Aikaderivaattatermi on myös luonnollinen tapa kasvattaa painekorjausyhtälön lävistäjää yhtälöistä (6.28) tai (6.29). Se ei kuitenkaan poista tarvetta relaksoida painetta yhtälöstä (6.48). • Relaksointi voidaan hoitaa myös vakiohitaustermillä lisäämällä jokaisen yh- tälön diagonaalille vakiotermi Ii , jonka on oltava samaa suuruusluokkaa kuin lävistäjällä olevan kertoimen AP . Vaikutus on jossain määrin sama kuin aikaderivaattatermillä käytettäessä paikallista aika-askelta. • Yhtälön (6.48) sijaan voidaan relaksointi suorittaa yhtälöryhmää ratkottaessa. Yhtälöryhmästä voidaan ratkaista preliminääri arvo ∆φ∗i ∆φ∗i = Qi − P (nb) aij ∆φj aii (6.50) Jos φ:tä halutaan alirelaksoida, uusi arvo lasketaan yhtälöstä φn+1 = φni + αφ ∆φ∗i i (6.51) Sijoittamalla tähän ∆φ∗i yhtälöstä (6.50). φn+1 i = φni + αφ Qi − P (nb) aii aij ∆φj (6.52) 6.4. ALIRELAKSOINTITAVAT 125 Ottamalla vielä huomioon, että ∆φi = φn+1 − φni saadaan i X aii ∆φi = Qi − aij ∆φj αφ (nb) (6.53) Tuloksena on alkuperäinen yhtälö, jossa lävistäjäalkio on jaettu alirelaksaatiotekijällä. Koska 0 < αφ ≤ 1 tämä alirelaksointitapa kasvattaa lävistäjäalkiota, mikä on edullista iteratiivisen ratkaisun kannalta. Alunperin tämä tapa on Patankarin esittämä muodossa X 1 − αφ aii n+1 φi = Qi − aii φni aij φj + αφ α φ (nb) (6.54) suureen φ ratkaisulle (F-P yhtälö 5.70). Kuten huomataan delta-muodossa (6.53) relaksointi on vielä yksinkertaisempaa. Tämä relaksointitapa ei ole ekvivalentti yhtälön (6.48) kanssa. Painekorjausmenetelmän yhteydessä alirelaksoinnit muodossa tai toisessa ovat välttämättömiä menetelmän toimivuuden kannalta. Mitään yhtä toimivaa keinoa ei ole olemassa. Koodeihin kehittyy ajan myötä erilaisten virtaustehtävien, reunaehtojen, lähdetermien jne. perusteella järjestelmät, joiden avulla tottunut virtauslaskija saa toisinaan jopa konvergoituneita tuloksia. 6.4. ALIRELAKSOINTITAVAT 126 • Massavirtakäsitteen avulla eri liikemääräyhtälöt (6.6) saadaan skalaariyhtälöitä muistuttavaan muotoon, mikäli paineet ymmärretään lähdetermiksi. Tällä kurssilla paineet kuitenkin yhdistetään vuoarvoihin, mikä on fysikaalisesti mielekkäämpi tapa. • Karteesisessa tapauksessa vuot eroavat paineen osalta toisistaan eri suunnissa. • Liikemääräyhtälöille saadaan implisiittiset vaiheet Au ∆u = Ru Av ∆v = Rv joissa kerroinmatriisit voivat olla samoja. Voidaan tehdä myös sellainen ratkaisu, että matriisit lasketaan uudelleen jokaisen liikemääräyhtälön ratkaisun jälkeen. Kerroinmatriisien eroon saattavat vaikuttaa erilaiset tekijät mm. lähdetermien linearisointi. • Painekorjauksille saadaan Poisson-yhtälö, jonka lävistäjää voidaan kasvattaa. • Massataseen laskennassa on käytettävä vaimennustermiä, joka riippuu pinnan kahden puolen olevista paineista. Termi voidaan skaalata suureella AP tai sopivalla massavirtaskaalauksella kuten yksidimensioisessa tapauksessa. • Lävistäjäalkiot on laskettava tai ekstrapoloitava myös ensimmäiseen haamukoppiriviin, jotta laskenta-aluetta rajaavalle pinnalle saadaan keskiarvona AP,i+1/2 . Myös painekorjaukset tarvitaan laskenta-alueen ulkopuolella, jotta reunapaineet saadaan lasketuksi. • Sisään- ja ulosvirtausreunat voidaan käsitellä periaatteessa samoin kuin yksidimensioisessa tapauksessa. • Kiinteällä pinnalla on myös mahdollista hyödyntää haamukoppeja reunaehtoja laskettaessa ja erityisesti implisiittisessä vaiheessa. Kiinteiden pintojen reunavuot voidaan myös laskea erillään muusta vuolaskennasta, mikä on kaikkein varmin tapa. • Alirelaksointi on välttämätöntä ja tapoja on useita. Päivitetty 12.2.2014 127 7 Lineaaristen yhtälöiden ratkaisumenetelmät 7.1 Yhtälöiden ratkaisutarve Edellä on johdettu painekorjausmenetelmän yhteydessä kahden tyyppisiä lineaarisia yhtälöryhmiä, jotka voidaan kirjoittaa muotoon Aφ = Q (7.1) Tärkein on itse painekorjausyhtälö, joka on symmetrinen Poisson-tyyppinen yhtälö, jonka kertoimille pätee ilman alirelaksointia ehto ApP = X Apn (7.2) nb mikäli alirelaksointi suoritetaan yhtälön (6.53) avulla, saadaan lävistäjää kasvatetuksi. (Yhtälössä (7.2) oletetaan lävistäjän ulkopuoliset termit siirretyiksi yhtälön oikealle puolelle. Tarkasti ottaen matriisin kertoimet toteuttavat yhtälön (4.10)). Toinen yhtälötyyppi saatiin liikemääräyhtälöiden diskretoinnissa ja se on konvektiotermin vuoksi yleensä epäsymmetrinen. Mikäli konvektiotermille käytettäisiin keskeisdifferenssiä, saataisiin symmetrinen yhtälö, mutta lävistäjävaltaisuuden toteutuminen tuottaisi ongelmia. Keskeisdifferenssinkin yhteydessä kannattaa implisiittisessä vaiheessa yleensä käyttää ensimmäisen kertaluvun ylävirtapainotusta täsmällisen linearisoinnin sijaan, koska menettely on numeerisesti stabiili eikä approksimaatio vaikuta lopputulokseen. Mahdollisilla skalaariyhtälöillä saadaan samanlainen yhtälöryhmä kuin liikemääräyhtälöilläkin. Edellä olemme lisäksi omaksuneet periaatteen, että liikemääräyhtälöitä alirelaksoidaan inertiatermin avulla. Tällöin lävistäjäalkio on huomattavasti suurempi kuin lävistäjän ulkopuolisten alkioiden summa. Tämä ero painekorjausyhtälön kertoimiin (7.2) on merkittävä yhtälöryhmän ratkaisemisessa. Yleensä voidaan katsoa suurimman hankaluuden paine- 7.2. FYSIKAALISEN PROBLEEMAN RATKAISU 128 korjausmenetelmän yhteydessä liittyvän painekorjausyhtälön ratkaisemiseen. Muiden yhtälöiden ratkaisu sujuu paljon nopeammin lävistäjävaltaisuuden vuoksi eikä ratkaisutavan valinnalla ole suurta merkitystä. Kaksidimensioisilla rakenteellisilla hiloilla matriisi A on muotoa ∗ ∗ 0 0 ∗ . .. 0 0 ∗ ∗ ∗ 0 0 .. . 0 0 0 ∗ ∗ ∗ 0 .. . 0 0 0 0 ∗ ∗ ∗ .. . 0 0 0 0 0 ∗ ∗ .. . 0 0 0 ∗ 0 0 ∗ .. . 0 0 0 0 ∗ 0 0 .. . 0 0 0 0 0 ∗ 0 .. . 0 0 ··· ··· ··· ··· ··· .. . ··· ··· 0 0 0 0 0 0 0 0 0 0 .. .. . . ∗ ∗ 0 ∗ 0 0 0 0 0 .. . ∗ ∗ Yksidimensioinen matriisi on tridiagonaalinen. Kahdessa dimensiossa saadaan lävistäjän kahden puolen etäisyyden imax päähän nauhat ja kolmidimensioisessa tilanteessa nauhat tämän lisäksi etäisyydelle imax × jmax . Tällöin laskenta-alueen koko ja matriisin dimensio on imax × jmax × kmax . Esimerkkinä voimme ajatella tapausta 1003, jolloin koppien lukumäärä on miljoona ja matriisissa A on 1012 alkiota. Nollasta poikkeavia elementtejä on kuitenkin vain seitsemän nauhan verran eli yhteensä 7 × 106 . Voidaan todeta, että virtaussimuloinnissa syntyvät matriisit ovat hyvin harvoja. Seuraavassa käydään läpi yleisimpiä yhtälöryhmien ratkaisukeinoja. Läheskään kaikkia niistä ei kannata käyttää virtauslaskuissa, mutta ne tuodaan tässä yhteydessä esille kertauksen vuoksi. Eräitä menetelmiä esitellään tarkasti Ferziger-Pericin seitsemännessä luvussa. 7.2 Fysikaalisen probleeman ratkaisu Edellisissä luvuissa kuvattu painekorjausmenetelmä ei poikkea yleisestä fysikaalisen probleeman ratkaisemisesta, joka voidaan kirjoittaa seuraavaan algoritmimuotoon: 1. Tilannetta kuvaavat luonnonlait, joita yleisesti ottaen voidaan pitää tarkkoina, mutta jotka tietenkin filosofisessa mielessä ovat vain kuvaus todellisuudesta. Virtauksen yhteydessä meillä on taustalla massan, liikemäärän ja energian häviämättömyys, joiden avulla johdetaan ratkaisua varten taseyhtälöt. 7.2. FYSIKAALISEN PROBLEEMAN RATKAISU 129 2. Yleensä aivan yksinkertaisia tilanteita lukuunottamatta joudutaan kirjoittamaan luonnonlakien perusteella approksimatiivinen yhtälö tai yhtälöryhmä, joka yleensä on epälineaarinen. 3. Epälineaarisen yhtälöryhmän ratkaisua varten tarvitaan yleensä täydentävää tietoa (constitutive equations), joka on tyypillisesti mitattua, korrelaatiopohjaista ja approksimatiivista. Esimerkkinä tästä on tiheyden ja viskositeetin laskenta. 4. Tulokseksi saadaan yhtälöjärjestelmä, joka ratkeaa vain iteroiden. Iteraation kuluessa syntyy lineaarisia yhtälöryhmiä, jotka on ratkaistava. Koska perusyhtälöt on epälineaarisuuden vuoksi ratkaistava iteroiden, lineaaristen yhtälöryhmien ratkaisun tarkkuudesta voidaan usein tinkiä ilman, että lopputuloksen tarkkuus kärsii. Epälineaaristen yhtälöiden ratkaisu perustuu Newtonin menetelmään, jossa lähtökohtana on seuraava approksimaatio f (x) ≈ f (x0 ) + f ′ (x0 )(x − x0 ) (7.3) Ratkaistaessa yhtälöä f (x) = 0 saadaan kierroksella k approksimaatio xk = xk−1 − f (xk−1 ) f ′ (xk−1 ) (7.4) Yhtälöryhmille fi (x1 , x2 , ..., xn ) = 0, i = 1, 2, ..., n (7.5) saadaan vastaava lineaarinen ryhmä n X j=1 aij (xkj − xjk−1 ) = −fi (xk1 , xk2 , ..., xkn ), i = 1, 2, ..., n (7.6) j = 1, 2, ..., n (7.7) missä aij muodostaa yhtälöryhmän Jacobin matriisin aij = ∂fi (xk1 , xk2 , ..., xkn ) , ∂xj i = 1, 2, ..., n, Periaatteessa Newtonin menetelmä konvergoi nopeasti. Konvergenssi on kvadraattista, mikä tarkoittaa, että kierroksella k + 1 suhteellinen virhe on verrannollinen 7.2. FYSIKAALISEN PROBLEEMAN RATKAISU 130 kierroksen k virheen neliöön. Siten menetelmä konvergoi hyvin nopeasti. Virtausprobleemoille Newtonin menetelmää ei sinällään juuri käytetä. Viime kädessä syynä on se, että Jacobin matriisia aij ei pystytä evaluoimaan eksplisiittisessä muodossa. Jacobin matriisin evaluointi edellyttäisi vuotermien linearisoinnin kaikkien laskenta-alueen muuttujien suhteen ja suurimpana hankaluutena tässä ovat viskositeetin ja erityisesti turbulenssimallin linearisointi. Vaikka matriisi voitaisiin yksinkertaistavin oletuksin saada aikaan, niin sen laskenta on aikaa vievää ja tuloksena saatava yhtälöryhmä ei ole yhtä harva kuin toimivissa laskenta-algoritmeissa. Tällöin yhtälöryhmän ratkaisuunkin kuluu myös paljon aikaa. Virtausyhtälöiden ratkaisussa kehitys on johtanut kompromissiin linearisoinnin tarkkuuden ja laskennan nopeuden suhteen. On kannattavampaa tehdä useita nopeita iteraatiokierroksia kuin yksi hidas. Pohjalla oleva periaate (1.2) on syytä palauttaa mieliin tässäkin yhteydessä. Rakenteellisilla hiloilla linearisointi suoritetaan siten, että kokoonpuristuvassa tapauksessa kaikki yhtälöt ratkaistaan kerralla hyödyntäen toisessa luvussa esitettyjä vuovektorin Jacobin matriisiin liittyviä diagonalisointikeinoja. Tuloksena on blokkitridiagonaalinen yhtälö yksidimensioisessa tapauksessa ja dimensioiden lisäys tuottaa matriisiin lohkoista koostuvia nauhoja. Painekorjauksen yhteydessä taas pyritään tridiagonaalisten (yhdessä dimensiossa) yhtälöiden ryhmiin, jotka ratkaistaan toisistaan erillään. On myös mahdollista konstruoida ratkaisumenetelmä, jossa liikemääräyhtälöt ja painekorjausyhtälö on linkitetty toisiinsa (Galpin ja Raithby, 1986), mutta tapa ei ole osoittautunut yhtälöiden erillistä ratkaisemista selvästi tehokkaammaksi, vaikka sitä nykyisin sovelletaan kaupallisissa ohjelmissa. Linearisoinnin periaatteet ovat jo tulleet esille edellisissä luvuissa. Eräänä kompromissina on mainittu epälineaaristen vuotermien osittainen linearisoimatta jättäminen. Tällöin linearisoitaessa nopeuden ui liikemääräyhtälöä (ρui uj )k+1 ≈ (ρuj )k ∆ui + (ρui uj )k (7.8) ja vastaavasti yhtälöä nopeudelle uj (ρui uj )k+1 ≈ (ρui )k ∆uj + (ρui uj )k (7.9) menettelyä kutsutaan Picardin iteraatioksi. On myös osoittautunut käteväksi ja toimivaksi ratkaisutavaksi approksimoida myös termiä (ρui ui )k+1 ≈ (ρui )k ∆ui + 7.3. SUORAT RATKAISUTAVAT 131 (ρui ui )k eikä (ρui ui )k+1 ≈ 2(ρui )k ∆ui + (ρui ui )k . Mikäli liikemääräyhtälöissä suoritettaisiin linearisointi kaikkien nopeuskomponenttien suhteen, tuloksena saataisiin yhteen kytketyt yhtälöt. Painekorjausmenetelmä saattaa joskus tuntua mystiseltä reseptiltä. Sen pohjalla on kuitenkin tavanomainen epälineaarisen probleeman ratkaisu. Aikojen kuluessa on kokeilemalla löydetty erilaisia toimivia menettelytapoja, kuten eri termien linearisointitavat. Näille menettelyille ei ole olemassa täsmällistä teoreettista perustelua. 7.3 Suorat ratkaisutavat 7.3.1 Gaussin eliminaatio Gaussin eliminaatio on yleisin suora yhtälöryhmien ratkaisutapa. Periaatteessa yhtälöryhmän kerroinmatriisin muodolla ei ole merkitystä itse algoritmin kannalta, mutta kylläkin ratkaisun tarkkuuden kannalta. Perusmatriisi on muotoa a11 a 21 A= a31 .. . an1 a12 a22 a32 .. . an2 a13 a23 a33 .. . ··· a14 a24 a34 ··· ··· · · · a1n · · · a2n · · · a3n .. . ··· · · · ann (7.10) Gaussin eliminaatiossa muutetaan matriisi A yläkolmiomatriisiksi U. Tämä tapahtuu esimerkiksi toisen rivin osalta siten, että ensimmäinen rivi kerrotaan tekijällä a21 /a11 ja vähennetään toisesta yhtälöstä, jolloin termin a21 tilalle jää nolla. Vastaava tehdään kaikille riveille, joista siis vähennetään ensimmäinen rivi kerrottuna tekijällä ai1 /a11 . Tämän jälkeen ensimmäisellä pystyrivillä on a11 :n lisäksi vain nollia. Seuraavaksi eliminoidaan toisen vaakarivin alapuolelta yhtälöiden toinen vaakarivin termi. Jatkamalla näin viimeiselle riville asti, saadaan yläkolmiomatriisi a′11 0 0 U = .. . 0 a′12 a′22 0 .. . a′13 a′23 a′33 .. . 0 ··· a′14 a′24 a′34 ··· ··· ··· ··· ··· .. . a′1n a′2n a′3n ··· · · · a′nn (7.11) Seuraavassa vaiheessa suoritetaan eliminointi taaksepäin lähtien viimeiseltä vaakariviltä φn = qn′ a′nn (7.12) 7.3. SUORAT RATKAISUTAVAT 132 ja jatkaen rekursiivisesti φi = qn′ − n X a′ik φk k=i+1 a′ii (7.13) summalausekkeessa esiintyvät ratkaistavien suureiden arvot ovat tunnetut edellisiltä i:n arvoilta. Gaussin eliminaatiota joudutaan jonkin verran modifioimaan prosessissa lävistäjällä esiintyvien nollien tai suurilla yhtälöryhmillä tapahtuvan virheen kasaantumisen vuoksi. Apukeinona on rivien vaihto (pivoting). Rivien vaihdolla voidaan saada lävistäjäalkio mahdollisimman suureksi, mikä estää virheen kasaantumisen. Gaussin eliminaatioon liittyvä laskentaoperaatioiden määrä on verrannollinen tuntemattomien lukumäärän kuutioon n3 /3. Tämä tekee algoritmista virtauslaskentaan sopimattoman aivan pieniä tehtäviä lukuunottamatta. Gaussin eliminaatiota ei kannata käyttää harvoille matriiseille, mutta täysille matriiseille se on yhtä hyvä kuin mikä tahansa muu (iteratiivinen ) menetelmä. Koska algoritmi on rekursiivinen se ei vektoroidu eikä rinnakkaistu kunnolla. 7.3.2 LU-hajotelma Gaussin eliminaatiolle on esitetty erilaisia muunnoksia, joista tässä esitetään vain LU hajotelma (LU decomposition). Tässä muunnoksessa kerroinmatriisi A hajotetaan ylä- ja alakolmiomatriisien tuloksi A = LU (7.14) Jotta hajotelma olisi yksikäsitteinen vaaditaan, että joko Lii = 1 tai Uii = 1. Yläkolmiomatriisi (7.11) syntyy Gaussin eliminaation yhteydessä. Alakolmiomatriisin alkiot ovat eliminaatioprosessissa käytetyt kertoimet lij = aji /aii (7.15) LU-hajotelma voidaan siis tehdä pienin muunnoksin Gaussin eliminaation suorittavasta ohjelmasta. Kun matriisit L ja U ovat olemassa, saadaan määrittelemällä Uφ = Y (7.16) LY = Q (7.17) yhtälöstä (7.1) 7.3. SUORAT RATKAISUTAVAT 133 Ratkaisu aloitetaan siis ensin yhtälöstä (7.17) samaan tapaan kuin Gaussin eliminaatiossakin, mutta aloittamalla ensimmäiseltä riviltä. Tämän jälkeen jatketaan kuten Gaussin eliminaatiossa yhtälöstä (7.16). LU-hajotelman etu on siinä, ettei yhtälöryhmän oikean puolen vektoria Q tarvitse tuntea LU-hajotelmaa tehtäessä. Jos ratkottavana on useita yhtälöitä, joilla on sama kerroinmatriisi, voidaan hajotelma tehdä vain kerran ja soveltaa sitä eri yhtälöille, joilla Q on erilainen. LU-hajotelmaa ei sinällään juuri käytetä virtausratkaisuissa, mutta se muodostaa perustan usealle iteratiiviselle menetelmälle. 7.3.3 Tridiagonaaliset yhtälöt Laskennallisen virtausmekaniikan kursseilla on jo tullut hyvin tutuksi työkaluksi tridiagonaalisten yhtälöiden ratkaisu Thomasin algoritmin avulla. Kirjoitetaan yhtälö esiin ilmansuuntamerkintöjen avulla AW,i φi−1 + AP,i φi + AE,i φi+1 = Qi (7.18) Thomasin algoritmi perustuu Gaussin eliminaatioon, mutta nyt tarvitsee eliminoida vain yksi termi A′P,i = AP,i − AW,i AE,i−1 A′P,i−1 (7.19) Vastaava oikean puolen termi on myös modifioitava Q′i = Qi − AW,i Q′i−1 A′P,i−1 (7.20) Algoritmin toinen vaihe on myös yksinkertainen φi = Q′i − A′E,i φi+1 A′P,i (7.21) Thomasin algoritmin laskenta-aika on verrannollinen yhtälöiden lukumäärään n, mitä parempaa tulosta ei yleensä voi saada millään menetelmällä. Tämän vuoksi algoritmia kannattaa hyödyntää aina silloin, kun se on mahdollista. Monet iteratiiviset menetelmät, kuten approksimatiivinen faktorointi (kts. peruskurssi, sivu 118), hyödyntävät Thomasin algoritmia. Myös blokkitridiagonaalisille yhtälöille on olemassa ratkaisualgoritmi (esim. Anderson-Tannehill-Pletcher). Kuten luvussa kaksi tuotiin esille, voidaan kokoonpuristuvien yhtälöiden ratkaisussa muodostuva matriisi diagonalisoida, jolloin tehtävä on myös mahdollista muuttaa tridiagonaalisten yhtälöiden ratkaisuksi. 7.4. ITERATIIVISET MENETELMÄT 134 7.4 Iteratiiviset menetelmät 7.4.1 Peruskäsitteitä Koska virtauslaskennassa syntyvien yhtälöryhmien kerroinmatriisit ovat harvoja, käytetään niiden ratkaisussa iteratiivisia menetelmiä. Kokemus on osittanut, että melko suppealla menetelmien perusarsenaalilla tulee hyvin toimeen. Klassiset ratkaisutavat on aikoinaan kehitetty differenssimenetelmän yhteydessä ja perustuvat usein siten rakenteelliseen hilaan. Joitakin menetelmiä voidaan pienin modifikaatioin käyttää rakenteettomille, mutta rakenteellisen hilan ratkaisumenetelmät ovat tehokkaampia kuin rakenteettomien. Tärkeäksi työkaluksi virtauslaskennassa muodostui 1980-luvun lopulta lähtien monihila-algoritmi, jota voidaan hyödyntää monella eri tavalla ja joka soveltuu myös rakenteettomille hiloille. Tarkastellaan seuraavaksi eräitä iteratiivisten menetelmien peruskäsitteitä. Kaikkien iteratiivisten menetelmien yhteydessä residuaalin käsite on hyödyllinen. Kun edellisissä luvuissa laadittiin epälineaaristen yhtälöiden ratkaisualgoritmia, käytettiin delta-muotoa, jolloin oikealle puolelle jäi residuaali. Residuaalia käytetään myös lineaaristen yhtälöryhmien ratkaisussa. Merkitsemällä residuaalia kierrokselta n ρn :llä, voidaan kirjoittaa Aφn = Q − ρn (7.22) Vähentämällä tämä yhtälöstä (7.1) saadaan konvergenssivirheelle ǫn = φ − φn yhteys Aǫn = ρn (7.23) Iteraatioprosessin tarkoituksena on jauhaa residuaali nollaksi, jolloin myös virhe menee nollaksi (tietokoneen laskentatarkkuudella). Iteratiivinen menetelmä voidaan kirjoittaa muotoon Mφn+1 = Nφn + B (7.24) Kun menetelmä on konvergoinut φn+1 = φn = φ, jolloin yhtälön (7.1) perusteella saadaan A = M − N ja B = Q (7.25) P A = M − N ja B = P Q (7.26) tai yleisemmin 7.4. ITERATIIVISET MENETELMÄT 135 missä P on ns. pohjustusmatriisi (pre-conditioning matrix). Iteratiivisen menetelmän konstruointi tarkoittaa siis matriisien M, N ja P muodostamista. Toiseen muotoon päädytään vähentämällä yhtälöstä (7.24) molemmilta puolilta termi Mφn , jolloin saadaan M(φn+1 − φn ) = B − (M − N)φn = B − Aφn (7.27) Tämä voidaan kirjoittaa muotoon Mδ n = ρn (7.28) missä δ n = φn+1 − φn on iteraatiokierrosten välinen korjaus. Yhtälö (7.28) vastaa aiemmin epälineaarisille yhtälöille johdettua delta-muotoa. Iteratiivisessa menetelmässä saatetaan käyttää approksimatiivisen faktoroinnin kaltaista menettelyä, jossa M hajotetaan osamatriiseiksi (suoritetaan esimerkiksi linja-Gauss-Seidel -iterointi jokaisessa indeksisuunnassa). Menetelmissä pyritään siihen, että M olisi mahdollisimman yksinkertainen tai hajotettavissa yksinkertaisten operaatioiden tuloksi. Lisäksi M:n tulisi approksimoida mahdollisimman hyvin matriisia A. 7.4.2 Konvergenssi ja spektraalisäde Määritellään seuraavaksi käsite spektraalisäde, joka on hyödyllinen konvergenssin arvioinnissa. Tarkka ratkaisu toteuttaa yhtälön Mφ = Nφ + B (7.29) Vähentämällä tämä yhtälöstä (7.24) saadaan tarkan ratkaisun ja olemassa olevan ratkaisun väliselle virheelle yhtälö ǫn+1 = M −1 Nǫn (7.30) Menetelmä konvergoi, jos lim ǫn = 0. Konvergenssia voidaan tutkia matriisin n→∞ M −1 N ominaisarvojen λk ja ominaisvektorien ψ k avulla, jotka määritellään seuraavasti M −1 Nψ k = λk ψ k , k = 1, ..., K (7.31) 7.4. ITERATIIVISET MENETELMÄT 136 missä K on yhtälöiden (hilapisteiden) lukumäärä. Olettamalla, että ominaisvektorit muodostavat K-ulotteisen vektoriavaruuden kannan, voidaan alkuperäinen virhe lausua kyseisen kannan avulla ǫ0 = K X ak ψ k (7.32) k=1 missä ak on vakio. Ensimmäisen iteraatiokierroksen jälkeen virhe on ǫ1 = M −1 Nǫ0 = M −1 N K X ak ψ k = k=1 mistä induktiolla saadaan ǫn = K X K X ak λk ψ k (7.33) k=1 ak (λk )n ψ k (7.34) k=1 Kuten nähdään, on matriisin M −1 N ominaisarvojen oltava pienempiä kuin yksi, jotta menetelmä konvergoisi. Kun n on suuri, sarjassa dominoi lähinnä ykköstä oleva suurin ominaisarvo. Tätä ominaisarvoa λ1 kutsutaan matriisin M −1 N spektraalisäteeksi ja virheen pienenemiselle saadaan sen avulla approksimaatio ǫn = a1 (λ1 )n ψ 1 (7.35) menetelmä konvergoi siis sitä nopeammin, mitä pienempi on sen spektraalisäde. Käytännössä useiden menetelmien spektraalisäteet isoilla matriiseilla ovat hyvin lähellä ykköstä. Triviaali esimerkki saadaan käyttäen yhtä malliyhtälöä ax = b. Iteratiivinen menetelmä on muotoa mxp+1 = nxp + b (7.36) missä m = a + n ja p on iteraatiokierros. Virheelle saadaan yhtälö ǫp+1 = n p ǫ m (7.37) Tästä nähdään menetelmän konvergoivan sitä nopeammin, mitä pienempi suhde on eli mitä lähempänä m on a:ta. n m Spektraalisäde voidaan määrittää konvergenssihistoriasta ja sen avulla voidaan tehdä arvio virheen pienenemiselle iteraatiota jatkettaessa. Kahden iteraatiokierroksen väliselle korjaukselle voidaan kirjoittaa yhtälön (7.35) avulla δ n = φn+1 − φn = (φn+1 − φ) − (φn − φ) ≈ (λ1 − 1)(λ1 )n a1 ψ1 (7.38) 7.4. ITERATIIVISET MENETELMÄT 137 Tästä voidaan määrittää spektraalisäde approksimatiivisesti kahden peräkkäisen korjauksen avulla k δn k (7.39) k δ n−1 k missä k δ n k on korjauksen L2 -normi. Konvergenssivirheelle saadaan seuraava apλ1 ≈ proksimaatio käyttäen yhtälöitä (7.38) ja (7.35) ǫn = φ − φn ≈ δn 1 − λ1 (7.40) Hyvä estimaatti käyttäen kakkosnormia on siten k ǫn k≈ k δn k 1 − λ1 (7.41) Edellä esitetty tarkastelu pätee, jos ominaisarvot ovat reaaliset. Kompleksisille ominaisarvoille tarkastelu on monimutkaisempi (Ferziger-Peric). Käytännössä spektraalisädettä ei kannata arvioida kahden peräkkäisen kierroksen avulla, vaan ottaen riittävän iso lukemaväli. Esimerkiksi kuvasta 7.2 nähdään toiseksi harvimmalla tasolla residuaalin putoavan lähes kuusi dekadia noin sadassa kierroksessa. Tästä saadaan arvio λ1 ≈ 0,87. Jos spektraalisädettä käytetään konvergenssiarvioissa ennen kuin iteraatio on supennut, on tietenkin käytettävä lyhyempää iteraatiokierrosten väliä sen arvioinnissa. 7.4.3 Perusmenetelmiä Ihmisille kirjoitettuna yksinkertaisin iteraatiomenetelmä on Jacobin iteraatio, joka on muotoa qP − AS φnS − AW φnW − AN φnN − AE φnE (7.42) AP Tämän menetelmän konvergenssi on hidas eikä sitä juuri käytetä. Tietokoneen ymφn+1 = P märtämällä kielellä vielä yksinkertaisempi menetelmä on Gauss-Seidel, jossa yhtälössä (7.42) jo lasketut φ:n arvot käytetään hyväksi. Jacobin menetelmä vaatii ohjelmallisesti joitain temppuja, joten kun Gauss-Seidelin konvergenssi on kaksinkertainen Jacobiin verrattuna, käytetään yleensä sitä, jos näin yksinkertaista tapaa halutaan käyttää. Jacobi on kuitenkin nopeampi vektoritietokoneella, koska se ei sisällä rekursiota ja vektoroituu. Gauss-Seidel näyttäisi soveltuvan sinällään liikemääräyhtälöiden ratkaisuun, koska niiden konvergenssi yhdellä ulkoisella iteraatiokierroksella ei ole kovin kriittinen. Gauss-Seidelia kannattaa tehostaa aloittamalla pyyhkäisyt alueen yli vuoron 7.4. ITERATIIVISET MENETELMÄT 138 perään eri nurkista. Menetelmästä on myös monimutkaisempia versioita. Ns. redblack -menettelyssä pisteet väritetään kuten shakkilaudassa ja ensin loikitaan toisella ja sen jälkeen toisella värillä. Linjoittaisessa Gauss-Seidelissa (line-GaussSeidel, LGS) käytetään hyväksi Thomasin algoritmia ja ratkotaan linjoittain tridiagonaalinen yhtälö. Tällöin kaksidimensioisessa tapauksessa yhtälössä (7.42) vain yksi termi oikealla puolella otetaan edelliseltä iteraatiokierrokselta. LGS on huomattavasti parempi kuin perus-Gauss-Seidel ja sitä käytetäänkin tällä kurssilla painekorjausyhtälön ratkaisussa. LGS tulee implementoida siten, että ’sweepit’ otetaan kaikissa indeksisuunnissa. Siten yksi iteraatiokierros kolmidimensioisessa tapauksessa koostuu kolmeen eri suuntaan tehtävistä tridiagonaalisista ratkaisuista ja on eräänlainen ADI- tai likimääräinen ositus -menetelmä. Gauss-Seidelia kehittyneempi menetelmä on ylirelaksaatiomenetelmä SOR (successive over-relaxation) φn+1 P n n qP − AS φn+1 − AW φn+1 S W − AN φN − AE φE =ω + (1 − ω)φnP AP (7.43) Menetelmä redusoituu Gauss-Seideliksi, kun ylirelaksaatiokerroin ω = 1. Kun kerroin on suurempi kuin yksi iteraatio tehostuu, mutta liian suurilla kertoimien arvoilla iterointi divergoi. Sopivan kertoimen valinta on tapauskohtaista. Koska kerroin on herkkä yhtälön muodolle, SORia käytetään ehkä enemmän tilanteissa, joissa matriisin A kertoimet muuttuvat laskenta-alueessa vähän tai ei ollenkaan, siis esimerkiksi differenssimenetelmän yhteydessä, kun ∆xi = vakio. Menetelmä ei ole riittävän robusti painekorjausyhtälön ratkaisuun. 7.4.4 Epätäydellinen LU-hajotelma: Stonen menetelmä Epätäydellinen LU-hajotelma (incomplete LU factorization, ILU) on menetelmäryhmä, joka on yleistynyt viime vuosina. Menetelmässä ei hajotetakaan matriisia A tekijöihinsä, vaan M = LU = A + N (7.44) Koska sovelletut matriisit A ovat harvoja, myös L ja U ovat harvoja ja N pieni. Jos matriisi A on symmetrinen, puhutaan epätäydellisestä Choleskyn faktoroinnista. Choleskyn faktorointia käytetään usein myös konjugaattigradienttimenetelmien yhteydessä. Epäsymmetrisille matriiseille, kuten konvektio-diffuusio -yhtälön tuottamille, käytettyä menettelyä nimitetään ILUksi. Tällöin ainoastaan ne matriisien L 7.4. ITERATIIVISET MENETELMÄT 139 ja U diagonaalit, jotka ovat nollasta poikkeavia alkuperäisessä matriisissa A, saavat olla nollasta poikkeavia. Tässä muodossa LU approksimoi huonosti matriisia A. Stonen menetelmässä, jota myös kutsutaan vahvasti implisiittiseksi proseduuriksi (strongly implicit procedure, SIP), käytetään hyväksi konvektio-diffuusio yhtälöiden ominaisuuksia laadittaessa mahdollisimman hyvää approksimaatiota A:lle. Menetelmä ei siten edes toimi yleisille matriiseille. Matriisien L, U ja M rakenne on seuraava: LW LS LP . 1 UN UE = MWMN WMSMPMN MS EME Kuva 7.1: Matriisien L, U ja M rakenne Matriisiin M = LU syntyy siis kaksi nauhaa, joita ei ole alkuperäisessä matriisissa. Nämä nauhat vastaavat kaksidimensioisessa tapauksessa ’väli-ilmansuuntia’ luode ja kaakko. Stonen menetelmässä näissä ilmansuunnissa olevien ratkaistavien suureiden arvoja φN W ja φSE approksimoidaan interpoloimalla ne muiden hilapisteiden uusista arvoista sen sijaan, että käytettäisiin vanhoja edellisen kierroksen arvoja. Tästä nimitys ’vahvasti implisiittinen’. SIP on ilmeisen hyvä ja tehokas menetelmä, jota voidaan käyttää myös tasoittajana monihila-algoritmin yhteydessä. Ferziger-Peric käyttävät SIPiä. Koska monihilamenetelmään voidaan yhdistää muitakin yksinkertaisempia menetelmiä, ei tässä yhteydessä perehdytä Stonen menetelmään tarkemmin. 7.4.5 ADI ja muut ositusmenetelmät Peruskurssilla käytettiin monidimensioisten ongelmien ratkaisussa likimääräistä ositusta (approximative factorization). Todettiin myös, että ensimmäinen vastaava menetelmä oli ADI (alternating direction implicit), joka kehitettiin 1950-luvun puolivälissä. Ositusmenetelmissä lävistäjällä on oltava enemmän painoa kuin muiden 7.4. ITERATIIVISET MENETELMÄT 140 termien summa. Yleensä diskretointi perustuu aikaintegrointiin, esimerkiksi tyyppiä ∂2T ∂T ∂2T =α + ∂t ∂x2 ∂y 2 ! (7.45) oleviin yhtälöihin, jotka diskretoidaan ajan suhteen implisiittisesti. Tuloksena oleva Jacobin matriisi jaetaan kahdeksi (kolmessa dimensiossa kolmeksi) yhtälöryhmäksi, joiden ratkaisussa voidaan hyödyntää Thomasin algoritmia. Jos ositus tehdään ’nurkasta nurkkaan’ -periaatteella eikä indeksien ijk-mukaan, puhutaan tässäkin menetelmäryhmässä LU-faktoroinnista. Peruskurssilta muistamme jaon tuottavan alkuperäiseen matriisiin lisänauhoja, mutta nyt ne ovat pieniä, koska ne ovat verrannollisia tekijään ∆t2 . Koska aika-askel on samassa asemassa kuin alirelaksaatio, havaitaan, että approksimatiivista faktorointia soveltavissa menetelmissä matriisi M saadaan hyväksi approksimaatioksi matriisille A lisäämällä alirelaksaatiota, mikä puolestaan tietenkin lisää tarvittavien iteraatiokierrosten lukumäärää. ADImenetelmillä on siten jokin optimiaika-askel, joka löytyy kokemuksen myötä ja on onneksi melko ’samalla pelikentällä’ samantyyppisissä tilanteissa. ADI-menetelmistä on lisäksi hyvä muistaa, ettei alkuperäistä ADI-menetelmää juuri käytetä ja alkuperäisellä menetelmällä kolmidimensioisessa tapauksessa on jopa aika-askeleen pituudelle rajoitus. Menetelmistä on olemassa versioita, joissa matriiseja yksinkertaistetaan, mikä on mahdollista virtausyhtälöiden luonteen perusteella. Esimerkkinä tästä on Jamesonin LU-SGS -menetelmä (lower-upper– simplified-Gauss-Seidel). Lävistäjävaltaisuus parantaa aina iteroinnin robustisuutta, erästä tällaista kutsutaan termillä ’diagonally dominant ADI’ (DDADI). ADI-menetelmät ovat virtauslaskentaan sopivia ja ne soveltuvat myös monihilaalgoritmien osaksi. Menetelmiä ei kuitenkaan käytetä tällä kurssilla. 7.4.6 Konjugaattigradienttimenetelmät Konjugaattigradienttimenetelmät on kehitetty epälineaaristen yhtälöryhmien ratkaisuun. Epälineaaristen yhtälöiden ratkaisumenetelmät voidaan jakaa kahteen luokkaan: Newton-tyyppisiin ja globaaleihin. Newton-tyyppiset menetelmät ovat tehokkaita, mutta tarvitsevat hyvän alkuarvauksen. Globaalit menetelmät ovat varmempia, mutta tehottomia. Konjugaattigradienttimentelmät ovat globaaleja menetelmiä, joissa alkuperäinen ongelma muunnetaan optimointiprobleemaksi. Esimerkiksi po- 7.4. ITERATIIVISET MENETELMÄT 141 sitiivisesti definiitille matriisille A yhtälön Aφ = Q ratkaisu voidaan muuttaa funktion 1 F = φT Aφ − φT Q (7.46) 2 minimoinniksi. (Positiivisesti definiitti matriisi on symmetrinen ja sillä on positiiviset ominaisarvot). Funktio F voidaan ikään kuin ajatella olevan pinta n-ulotteisessa avaruudessa. Kaksiulotteinen vastine on kartta ja minimoinnissa haetaan kartan matalinta kohtaa. Konjugaattigradienttimenetelmä eroaa gradienttimenetelmästä siten, että siinä edetään vuoronperään ns. konjugaattisuuntiin. Suunnat p~1 ja p~2 ovat toistensa konjugaatteja jos (7.47) p~1 · A~p2 = 0 Menetelmässä jokainen uusi suunta on kaikkien edellisten suuntien konjugaatti. Esimerkiksi kaksiulotteisessa tapauksessa (jota ei tietenkään kannata iteratiivisella menetelmällä ratkaista), minimi saavutetaan minimoimalla suuntiin p~1 ja p~2 erikseen. Menetelmä sisältää yksiulotteisen minimointirutiinin, jolla minimi yhdessä suunnassa kerrallaan haetaan. Perusmuodossaan konjugaattigradienttimenetelmä saattaa konvergoida hyvin hitaasti. Konvergenssi on riippuvainen matriisin A suurimman ja pienimmän ominaisarvon suhteestasta. Mitä suurempi tämä suhde on, sitä hitaampi konvergenssi. Ominaisarvojen suhdetta voidaan pienentää käyttämällä matriisin pohjustusta (preconditioning). Pohjustus tehdään muodossa C −1 AC −1 Cφ = C −1 Q (7.48) Konjugaattigradienttimenetelmää sovelletaan siten matriisille C −1 AC −1 . Menetelmään sisältyy matriisin A epätäydellinen Choleskyn faktorointi. Virtausyhtälöitä ratkottaessa tämä voidaan korvata Stonen menetelmässä sovellettavilla matriiseilla L ja U. Algoritmi on esitetty Ferziger-Pericissä. Konjugaattigradienttimenetelmät soveltuvat vain symmetrisille matriiseille, joten ne eivät sinällään sovellut konvektio-diffuusio -yhtälön ratkaisuun. Bikonjugaattimenetelmissä matriisi tehdään symmetriseksi lisäämällä probleeman kokoa 0 AT A 0 · ψ φ = Q 0 (7.49) Bikonjugaattigradienttimenetelmien versioita, joita näkyy käytettävän virtauslaskennassa, ovat mm. CGS (conjugate gradient squared), CGSTAB (CGS stabilized) 7.5. MONIHILA-ALGORITMI 142 ja GMRES. Kaikkia näitä voidaan käyttää epäsymmetrisille matriiseille ja sekä rakenteellisille että rakenteettomille hiloille. 7.5 Monihila-algoritmi 7.5.1 Peruskäsitteitä Kaikilla perusmenetelmillä on se ominaisuus, että kun laskenta-alueen kokoa (muuttujien lukumäärää) kasvatetaan, niin iteraatiokierrosten määrä kasvaa. Esimerkkinä voidaan tarkastella LGS-menetelmän suppenemista diffuusioyhtälön tapauksessa Dirichlet-reunaehdoin (kuva 7.2). Hilatiheyden kaksinkertaistaminen kummassakin suunnassa likimain kolminkertaistaa iteraatiokierrosten määrän. Siirryttäessä tiheimmälle 64 × 64 -hilalle kierrosmäärä lähes nelinkertaistuu. Suurilla laskentahiloilla ollaankin jo tilanteessa, jossa LGS-menetelmää ei sinällään kannata käyttää. Tilanteeseen on olemassa hyvä ratkaisu, ns. monihilan (multigrid) käyttö. Kuva 7.2: LGS-menetelmän suppeneminen erikokoisilla laskentahiloilla Monihila-algoritmeissa perusideana on käyttää harvempia hilatasoja hyödyksi. Yksinkertainen tapa saada hyvä alkuarvaus esimerkiksi virtausprobleemassa, on interpoloida ratkaisu harvemmalta tasolta. Rakenteellisella hilalla harvempi taso saa- 7.5. MONIHILA-ALGORITMI 143 daan poistamalla joka toinen hilaviiva kaikissa suunnissa. Rakenteettomalla harvempi taso saadaan yhdistelemällä tiheämmän tason koppeja sopivasti. Alkuarvauksen käyttöä lähtien harvimmalta tasolta ja päätyen kaikkein tiheimmälle, nimitetään täydeksi monihilaksi (full multigrid, FMG). Tapaa voidaan nimittää myös geometriseksi monihilamenetelmäksi silloin, kun se kohdistuu alkuperäisiin epälineaarisiin (virtaus)yhtälöihin, koska ratkaisua haetaan alkuperäiselle probleemalle kyseisellä hilatasolla. Vastakohtana on algebrallinen monihila (AMG), jossa monihilaratkaisija periaatteessa ei tarvitse muuta tietoa kuin yhtälöryhmän. Algebralliset monihilaratkaisijat ovat yleistyneet viime vuosina kaupallisissa virtausratkaisijoissa. Ne sopivat yhtä hyvin sekä rakenteellisille ja rakenteettomille hiloille. Rakenteettomien hilojen yhteydessä menetelmän implementointi ei ole yhtä suoraviivaista, koska koodiin on laadittava jokin strategia muuttujien yhdistämiselle. Tässä yhteydessä kannattaa huomata, että vaikkei algebrallisessa monihilamenetelmässä käytetäkään eksplisiittistä geometriatietoa, on taustalla kuitenkin ajattelu siitä, että tuntemattomat suureet muodostavat jonkinlaisen verkon avaruudessa. Tätä tietoa hyödynnetään esimerkiksi interpoloinnissa, joka on menetelmän oleellinen osa. Esimerkki geometrisen monihilan käytöstä annetaan luvussa kahdeksan. Menetelmää kutsutaan myös joskus termillä ’FAS’ (full approximation scheme, myös storage). Tässä luvussa tarkastellaan lähinnä algebrallisen monihilan perusteita. Menetelmä ei kuitenkaan eroa oleellisilta osiltaan geometrisesta monihilamenettelystä ja tässä esitetty algoritmi voidaan pukea määrittelemällä residuaali yhtälön (7.22) avulla samaan muotoon kuin seuraavassa luvussa esitetty algoritmi. Monihila-algoritmeissa ratkaisu haetaan tiheimmällä tasolla ja ratkaisua harvemmilla tasoilla ajaa tiheimmällä tasolla laskettu residuaali. Tasoja voidaan käyttää niin paljon, että harvimmalla tasolla jäljellä on vain yksi yhtälö (tai geometrisessa monihilassa yksi laskentatilavuus). Tästä ei ole enää juuri hyötyä, vaan käytännössä lopetetaan, kun harvin taso sisältää muutaman laskentatilavuuden kaikissa hilan indeksisuunnissa. Algoritmi säästää laskenta-aikaa kahdella tavalla: Ensinnäkin on edullista viedä laskennasta alemmille tasoille niin paljon kuin mahdollista. Kolmidimensioisessa tilanteessa harvempi taso sisältää vain 1/8-osan edellisen tason yhtälömäärästä ja laskentatyöstä. Vielä tärkeämpi on se ominaisuus, että ratkaisu löytyy harvemmilla tasoilla pienemmässä iteraatiokierrosmäärässä, kuten kuvasta 7.2 nähdään. Monihila-algoritmit toimivat periaatteessa niin tehokkaasti, että 7.5. MONIHILA-ALGORITMI 144 iteraatiokierrosten määrä säilyy ennallaan, vaikka muuttujien määrää kasvatetaan. Kun vielä monihilan aiheuttama laskenta-ajan kasvu on pientä perusmenetelmän vaatimaan laskenta-aikaan verrattuna harvoilla tasoilla tapahtuvan laskenta-ajan lisäyksen ollessa vähäistä, menetelmä on todella houkutteleva isojen laskentatehtävien yhteydessä. Jotta menetelmä toimisi, on eron tarkan ratkaisun ja vallitsevan approksimaation välillä oltava tasainen. Tällöin laskentaa voidaan tehdä harvemmalla tasolla ja tuoda sieltä tuleva korjaus interpoloimalla tiheämmälle tasolle. Esimerkiksi Gauss-Seidel -menetelmä ja SIP tuottavat muutaman iteraatiokierroksen jälkeen tuloksen, jossa virhe muuttuu tasaisesti kaikissa koordinaattisuunnissa. Näitä menetelmiä voidaan käyttää monihila-algoritmissa tasoittajina (smoother). Jacobin iteraatio tai SOR eivät ole hyviä tasoittajia, koska niiden tuottama iterointivirhe voi olla oskilloiva. Iterointivirheen käyttäytymistä voidaan tutkia iterointimatriisin ominaisarvojen avulla ja käytännössä vielä helpommin seuraamalla konvergenssihistoriaa. Hyvillä tasoittajilla konvergenssi on tasaista, huonoilla oskilloivaa. Oskilloiva konvergenssi ei kuitenkaan merkitse, että perusmenetelmä, esim. SOR olisi huono. Monihilaa käytettäessä tiheämmän tason residuaali siirretään harvemmalle tasolle. Operaatiota nimitetään rajoittamiseksi (restriction). Kun korjaus tuodaan takaisin tiheämmälle tasolle, kyseessä on takaisin interpolointi, josta englannin kielessä käytetään termiä ’prolongation’. 7.5.2 Yksinkertainen esimerkki ∆x i−3 i−2 I −1 i−1 i I Tiheä hila i +1 i+2 i +3 I+1 ∆X H a r v hila a Kuva 7.3: Yksidimensioisessa tilanteessa käytettävät kaksi hilatasoa pidettäessä harvan ja tiheän tason noodit samassa pisteessä. Tarkastellaan seuraavaksi diskretoidun Poisson-yhtälön ratkaisemista yksidimen- 7.5. MONIHILA-ALGORITMI 145 sioisessa tapauksessa. Esimerkillä ei ole käytännön merkitystä, koska yhdessä dimensiossa monihilaa ei kannata käyttää, kun Thomasin algoritmi hoitaa saman asian tehokkaammin. Differenssimenetelmällä päädytään seuraavaan diskreettiin yhtälöön 1 (φi+1 − 2φi + φi−1 ) = fi (7.50) ∆x2 Iteraatiokierroksella n approksimatiivinen ratkaisu on φn ja yhtälö toteutuu siten, että jäljellä on residuaali ρn 1 (φn − 2φni + φni−1 ) = fi − ρni ∆x2 i+1 (7.51) vähentämällä yhtälöt toisistaan toisistaan saadaan 1 (ǫni+1 − 2ǫni + ǫni−1 ) = ρni 2 ∆x (7.52) jota voidaan käyttää monihila-algoritmissa. Tarkoituksena on hakea approksimaatio korjaukselle ǫn käyttäen harvempaa hilaa. Esimerkin kannalta yksinkertaisin tapa harventaa hilaa on jättää pois joka toinen noodi, kuten kuvassa 7.3 on esitetty. Koska harvan hilan noodi peittää yhden tiheän hilan laskenta-alueen kokonaan ja kaksi rinnakkaista puoliksi, voidaan ajatella seuraavaa diskretointia 1 1 (ǫni+2 − 2ǫni + ǫni−2 ) = (ρni+1 + 2ρni + ρni−1 ) 2 4∆x 4 (7.53) Käyttäen harvan hilan merkintöjä, tämä voidaan kirjoittaa muotoon 1 (ǫnI+1 − 2ǫnI + ǫnI−1 ) = ρ¯nI 2 ∆X (7.54) Residuaalin siirto (restriction) tiheältä tasolta harvemmalle tapahtuu siis tässä tapauksessa seuraavasti 1 ρ¯nI = (ρni+1 + 2ρni + ρni−1 ) 4 (7.55) Tämän jälkeen voidaan esittää kahden tason monihila-algoritmi: • Suoritetaan tiheimmällä hilatasoilla iterointeja käyttäen jotain menetelmää, jolla on hyvät tasoitusominaisuudet, esim. LGS. (Yksidimensioisessa tapauksessa LGS tuottaisi yhdellä kierroksella tarkan ratkaisun). Yleensä tiheällä tasolla kannattaa tehdä vain yksi iteraatiokierros, jotta aikaa säästyisi. • Lasketaan tiheän tason residuaalit ρi . 7.5. MONIHILA-ALGORITMI 146 • Siirretään residuaalit harvalle tasolle käyttäen yhtälöä (7.55) (rajoittaminen). • Suoritetaan iterointeja harvalla tasolla, tyypillinen määrä on esimerkiksi viisi iteraatiota (tasoittaminen). • Interpoloidaan korjaus ǫI tiheälle tasolle (prolongaatio). • Toistetaan prosessi, kunnes tiheän tason residuaali on riittävän pieni Joka toinen piste voidaan tässä esimerkissä siirtää sinällään, joka toinen ottaa keskiarvona kahdesta harvan tason rinnakkaisesta arvosta. Interpoloinnissa kannattaa huomata, että siirretään korjausta, ei itse ratkaistua arvoa. Sen vuoksi on mahdollista käyttää epätarkkaakin interpolaatiota, joka korjaa tiheän tason tulosta kuitenkin oikeaan suuntaan. Kontrollitilavuusmenetelmän yhteydessä kannattaa harvempi taso muodostaa siten, että yhdistetään rinnakkaisia laskentatilavuuksia. Mikäli käytännössä meneteltäisiin kuten tässä esimerkissä, ongelmia tulisi laskenta-alueen reunoilla, koska niiden käsittely poikkeaisi alueen keskellä olevien koppien käsittelystä. Tässä esimerkissä käytettiin tavallaan tietoa geometriasta ja hilaväli ∆x esiintyy kaavoissa eksplisiittisesti. Menetelmä olisi voitu konstruoida myös algebrallisesti käyttäen vain annettua yhtälöryhmää, mutta tällöinkin interpoloinnissa ja residuaalin rajoittamisessa käytettäisiin implisiittisesti tietoa yhtälöryhmän taustalla olevasta probleemasta. 7.5.3 Algebrallinen monihila-algoritmi yhtälöryhmille Monihila-algoritmi voidaan laajentaa useammalle tasolle. Helpoin laajentamistapa on ajatella kakkostason ratkaisua uutena probleemana, joka on ratkaistava. Sen sijaan, että kakkostasolla iteroitaisiin ratkaisu tarkaksi ja interpoloitaisiin ykköstasolle, voimme soveltaa edellä esitettyä algoritmia tasojen kaksi ja kolme välille jne. Algebrallinen monihila on yksinkertainen, koska residuaalien lisäksi vain matriisi A on muodostettava eri hilatasoilla. Tämä tarvitsee tehdä iteraation kuluessa vain kerran. Seuraavassa luvussa esitettävässä geometrisessa monihilassa geometria ja myös ratkaisuvektori on siirrettävä tasolta toiselle. Merkitään seuraavassa hilatasoa alaindeksillä m ja tasojen kokonaismäärää M:llä. 7.5. MONIHILA-ALGORITMI 147 Residuaalimuodossa tehtävänä on siis ratkaista ykköstason yhtälö A1 δ1 = ρ1 (7.56) Tämä vastaa yhtälöä (7.1). Harvemmilla tasoilla ratkaistaan yhtälöä Am δm = ρm , m = 2...M. Tehtävänä on muodostaa matriisit Am . Algebrallisessa monihilassa käytetään ns. Galerkinin approksimaatiota (Galerkin Coarse Grid Approximation, GCA). Kohdistetaan ensin ratkaistavaan yhtälöön rajoitusoperaattori (kerrotaan matriisilla R) RAm δm = Rρm (7.57) ja lausutaan korjausvektori harvemman tason korjausvektorin avulla. Tässä käytetään interpolointioperaattoria P RAm P δm+1 = Rρm (7.58) Merkitsemällä Am+1 = RAm P ja ρm+1 = Rρm , saadaan harvemman tason probleema muodostetuksi Am+1 δm+1 = ρm+1 (7.59) Monihila-algoritmi alustetaan muodostamalla matriisit Am . Algoritmissa suoritetaan kullakin hilatasolla tasoituksia ja lasketaan lopuksi residuaali ρm , joka siirretään seuraavalle tasolle. Kontrollitilavuusmenetelmässä residuaali saadaan yhdistämällä rinnakkaisten koppien residuaalit. Operaattori R on siten hyvin yksinkertainen. Interpolointi voidaan sen sijaan tehdä usealla tavalla. Matriisin Am+1 GCA muodostetaan käytännössä seuraavasti: Lasketaan yhteen harvemman tason kopin sisältämien tiheämmän tason koppien yhtälöt Am δm = ρm . Yhtälöissä esiintyvät tiheämmän hilan suureet lausutaan harvemman hilan suureiden avulla interpoloimalla ne. Yksinkertaisin interpolointioperaattori saadaan siirtämällä harvan tason ratkaisu muuntumattomina niihin muuttujiin, jotka sisältyvät harvan tason laskentatilavuuteen, esimerkiksi kaksidimensioisessa tilanteessa korjaus δm+1 siirretään sinällään niitä neljää laskentatilavuutta vastaaviin muuttujiin, jotka ovat harvemman tason kopin sisällä. Tämä yksinkertainen prolongaatiooperaattori on itse asiassa transpoosi rajoitusoperaattorista P = RT ja matriisin Am+1 kertoimet saadaan yksinkertaisesti summaamalla yhteen ne tiheämmän tason kertoimet, jotka ovat tason m + 1 koppien sisällä. Tämä vastaa laskentakaavaa Am+1 = RAm RT . Tässä siis käytetään geometrista tietoa implisiittisesti, kuten 7.5. MONIHILA-ALGORITMI 148 myös tarkemmissa interpolaatiokaavoissa, vaikka periaatteessa operoidaankin pelkällä ratkaistavalla algebrallisella yhtälöllä. Edellä kuvattu yksinkertainen interpolointi säilyttää alkuperäisen yhtälöryhmän muodon. Mikäli käytetään monimutkaisempaa interpolointia, P 6= RT ja harvem- man tason yhtälössä myös ’väli-ilmansuunnille’ tulee nollasta poikkeavat termit. Kaksidimensioisessa tilanteessa harvojen tasojen yhtälöihin tulee yhdeksän nollasta poikkeavaa nauhaa, kun niitä ykköstasolla on viisi ja kolmidimensioisessa tapauksessa peräti 27 nauhaa, kun niitä ykköstasolla on vain seitsemän. Tämä lisää laskenta-ajan tarvetta huomattavasti ja pienentää tarkemman interpolaation tehokkuutta. (Muistitilan tarve ei lisäänny yhtä dramaattisesti. Miksi?). Kolmidimensioisessa tapauksessa tarkempi trilineaarinen interpolaatiokaava on (Tuomas Pensala, muistio CFD/TERMO-27-98) δi,j,k = 27 9 δI,J,K + δI+1,J,K + 64 64 9 3 9 + δI,J+1,K + δI,J,K+1 + δI+1,J+1,K + 64 64 64 3 3 + δI+1,J,K+1 + ¸δI,J+1,K+1 + 64 64 1 + δI+1,J+1,K+1 64 (7.60) missä isot alaindeksit viittaavat harvemman tason muuttujiin. Kaikkiaan suoritetaan kahdeksan yhtälön (7.60) mukaista interpolointia, muita laskentakoppeja vastaavat kaavat saadaan manipuloimalla yhtälön alaindeksejä symmetrian perusteella. Käyttäen yhtälöä (7.60) interpoloinnissa ja normaalia yksinkertaista rajoitusoperaattoria, saadaan matriisin Am+1 kertoimet. Kertoimien lausekkeet ovat kymmeniä ohjelmarivejä pitkät, minkä vuoksi on houkuttelevaa yrittää käyttää myös yksinkertaista interpolointioperaattoria (eli jättää interpolointi kokonaan tekemättä). Esimerkiksi FLUENT-ohjelmassa sovelletaan algebrallista monihilaa tällä tavoin. Tämän jälkeen voidaan esittää yleinen algebrallinen monihila-algorimi: GCA muodostaa harvemman tason kerroinmatriisin tiheämmän tason matriisin perusteella, GS suorittaa yhtälölle tietyn määrän Gauss-Seidel- tai LGS-iteraatioita eli tasoittaa sitä. MG-algoritmi hilatasojen maksimimäärä: M 7.5. MONIHILA-ALGORITMI 149 V-syklien maksimimäärä: N Yläraja residuaalin normille: tol do m = 2 to M GCA(Am−1 → Am ) enddo do n = 1 to N δ1 = 0 GS(A1 δ1 = ρ1 ) do m = 2 to M R : ρm−1 → ρm δm = 0 GS(Am δm = ρm ) enddo do m = M − 1 to 1 P : δm+1 → cm δm = δm + cm GS(Am δm = ρm ) enddo if kr1 k ≤ tol exit enddo Ylemmässä m:n yli juoksevassa silmukassa suoritettavaa tasoitusta (GS) kutsutaan esitasoitukseksi ja alemmassa suoritettavaa jälkitasoitukseksi (pre- ja postsmoothing). Karkeasti voidaan sanoa, että esitasoitus poistaa lyhyen aallonpituuden virhekomponentteja ja jälkitasoitus parantaa alkuarvausta ylemmän tason tuntemattomalle. On tärkeää huomata, että esitasoituksessa korjauksen alkuarvaus tulee nollata. Mikäli käytettäisiin edellisen kierroksen arvoja, konvergenssi huononisi. Jälkitasoitusta ei yleensä kannata käyttää, koska laskentakierrosten lukumäärän pieneneminen kompensoituu laskenta-ajan kasvulla. Jälkitasoituksessa kannattaa huomata, että residuaalia ei lasketa uudestaan, vaan käytetään alaspäin tullessa rajoitet- 7.6. LASKENTAESIMERKKEJÄ 150 tua residuaalia. Interpoloinnissa korjaus alemmalta tasolta lisätään ylemmällä tasolla esitasoituksen jäljiltä jo olemassa olevaan korjaukseen. Ylivoimaisesti suurin osa laskenta-ajasta kuluu tasoittamiseen. Tämän vuoksi yleensä kannattaa tehdä tiheimmällä tasolla tasoituksia mahdollisimman vähän. Tässä algoritmissa sovelletaan ns. V-sykliä eli tullaan hilataso kerrallaan alaspäin ja sen jälkeen vastaavasti ylöspäin. Monihila-algoritmia voidaan soveltaa myös muunlaisille sykleille (esim. W). Menetelmä voidaan konstruoida hyvin monella tavalla. Monihilaan liittyvä teoria on monimutkaista ja siitä on kirjoitettu paljon kirjoja (esim. P. Wesseling, An Introduction to Multigrid Methods, Trottenberg, Oosterlee, Schüller, Multigrid). 7.6 Laskentaesimerkkejä Tarkastellaan seuraavaksi monihila-algoritmin toimivuutta kaksidimensioisen diffuusioyhtälön ratkaisussa. Tasoittajana on käytetty LGS-menetelmää, joka on osoittautunut huomattavasti perus Gauss-Seidel -menetelmää paremmaksi. LGS-kierroksia tehtiin tiheimmällä tasolla yksi ja muilla viisi. Samoja kierrosmääriä käytettiin sekä esi- että jälkitasoituksessa, mikäli se oli käytössä. Esimerkissä käytetään Dirichlet-reunaehtoja ja ∆x ja ∆y ovat vakioita. Menetelmän konvergenssi nähdään kuvasta 7.4 sekä jälkitasoituksella että ilman sitä. Kuten nähdään, iteraatiokierrosten määrä ei juuri muutu, vaikka probleeman kokoa kasvatetaan. Jälkitasoitus pudottaa hieman tarvittavien iteraatiokierrosten määrää, mutta kuluttaa myös enemmän laskenta-aikaa. Vastaava tulos siirrettäessä virhe suoraan tiheämmän tason koppeihin ilman interpolointia, on kuvassa 7.5. Nyt huomataan iteraatiokierrosten määrän hieman kasvavan, kun probleeman kokoa kasvatetaan. Konvergenssi hidastuu noin viiden kierroksen jälkeen, kun residuaali on pudonnut pari dekadia. Jälkitasoituksella tilanne korjaantuu jossain määrin, mutta taas laskenta-ajan kustannuksella. Menetelmä vaatii vähemmän laskenta-aikaa kuin trilineaarinen interpolaatio, mutta se ei kompensoi iteraatiokierrosten määrän kasvua. Konvergenssikäyriä kannattaa verrata kuvan 7.3 vastaaviin käyriin ilman monihila-algoritmia. Tiheimmällä hilalla yksitasoisella menetelmällä tarvittiin yli 1100 iteraatiokierrosta (kuvan skaala loppuu kesken). Kolmidimensioisessa tapauksessa tilanne säilyy kvalitatiivisesti ennallaan, mutta nyt trilineaarisella interpolaatiolla laskenta-aika / iteraatiokierros on paljon pi- 7.6. LASKENTAESIMERKKEJÄ 151 Kuva 7.4: Diffuusioyhtälön konvergenssi eri hilatiheyksillä käytettäessä trilineaarista interpolointia. Vasemmalla jälkitasoituksella, oikealla ilman jälkitasoitusta. Kuva 7.5: Diffuusioyhtälön konvergenssi eri hilatiheyksillä ilman virheen interpolointia. Vasemmalla jälkitasoituksella, oikealla ilman jälkitasoitusta. dempi. Tästä aiheutuu se, että menetelmä on vielä 643 -hilalla hitaampi kuin sama monihilamenetelmä ilman interpolaatiota. Vasta erittäin tiheillä hiloilla yksinkertaisemman menetelmän iteraatiokierrosten kasvu tekee siitä hitaamman. Johtopäätösten tekoa vaikeuttaa tässä vielä se seikka, että käytetty esimerkki on mahdollisimman yksinkertainen. Painekorjausyhtälöä iteroitaessa kerroinmatriisin alkiot voivat olla hyvin eri kokoisia, mikä heijastelee lähinnä hilatiheyden muutoksia. Algebral- 7.6. LASKENTAESIMERKKEJÄ 152 lisessa monihilassa käytetty interpolointi ei ota huomioon hilatiheyden muutoksia, koska mitään geometrista tietoa ei ole käytettävissä. Monihila-algoritmia on verrattu vastaavaa esimerkkiä käyttäen perusmenetelmiin (Ferziger-Peric). Monihila-algoritmin tasoittajina on tällöin käytetty sekä GaussSeidelia että Stonen SIP-menetelmää. Tulokset on esitetty kuvassa 7.6. Konvergenssi on esitetty sekä residuaalin että tarkan ratkaisun ja lasketun tuloksen erojen avulla. Kuten nähdään, konjugaattigradienttimenetelmä ja SIP ovat selvästi tehokkaampia kuin perinteiset iterointimenetelmät, mutta eivät pärjää vertailussa monihila- 1 1 ,1 ,1 ,01 ,01 Virhe Virhe algoritmin kanssa. ICCG SIP M G − S I P ,001 M G − G S ADI G S ,001 ,0001 , 0 00 0 1 0 ICCG SIP MG−SIP M G − G S ADI G S ,0001 50 100 150 Iteraatiot ,00001 200 0 50 100 150 Iteraatiot 200 Kuva 7.6: Diffuusioyhtälön konvergenssi hilatiheydellä 64 × 64 käyttäen eri menetelmiä. Vasemmalla residuaalin konvergenssi, oikealla ero tarkkaan ratkaisuun. Eräät menetelmät ovat herkkiä niiden sisältämille parametreille. Tarkastellaan ylirelaksaatiomenetelmän (SOR) parametria ω. Kuvan 7.7 iteraatiohistorioista nähdään useita seikkoja. Ensinnäkin iteraatiokierrosten määrä luonnollisesti kasvaa, kun hilatiheys kasvaa. Toiseksi nähdään parametrin ω vaikutus. Jos parametrin arvo on alle optimin, konvergenssi on tasainen. Tällöin menetelmän kerroinmatriisin ominaisarvot ovat reaaliset. Kun ω:n arvoa kasvatetaan, ominaisarvot muuttuvat kompleksiluvuiksi ja konvergenssihistoriasta tulee oskilloiva. Konvergenssia on kuvassa monitoroitu eri tavoin, mm. arvioimalla yhtälöstä (7.41) käyttäen siinä kahden ensimmäisen iteraatiokierroksen arvoja. 7.6. LASKENTAESIMERKKEJÄ 10 153 Virhe, tarkka Virhe, arvio Erotus Residuaali 1 Virhe, tarkka Virhe, arvio Erotus Residuaali 10 ,1 1 Virhe Virhe ,01 ,001 ,1 ,01 ,0001 ,00001 ,001 ,000001 ,0001 0 50 100 Iteraatiot 150 0 Virhe, tarkka Virhe, arvio Erotus Residuaali 10 100 Iteraatiot 150 Virhe, tarkka Virhe, arvio Erotus Residuaali 10 1 1 ,1 Virhe Virhe 50 ,1 ,01 ,01 ,001 ,001 ,0001 ,0001 0 200 400 600 800 Iteraatiot 1000 0 50 100 150 200 250 300 Iteraatiot Kuva 7.7: Diffuusioyhtälön konvergenssi SOR-menetelmällä. Yläkuvissa hilatiheys on 20× 20, alakuvissa 80 × 80. Vasemmalla parametrin ω arvo on alle optimin, oikealla yli optimin. Toisena esimerkkinä tarkastellaan SIP-menetelmää. Edellä mainittiin menetelmään sisältyvän interpolaatiokaavan, jolla puuttuvia väli-ilmansuunta-arvoja estimoidaan uudella iteraatiokierroksella. Tätä yhtälöä on alirelaksoitava tekijällä α, joka vaikuttaa huomattavasti konvergenssiin. Edellä kuvatussa diffuusioyhtälön tapauksessa parametrin vaikutus nähdään kuvasta 7.8. Erityisesti tiheämmällä hilalla 7.7. LOPPUPÄÄTELMIÄ 154 parametrin pieni muutos vaikuttaa oleellisesti konvergenssiin ja menetelmän divergointi on myös erittäin herkkä parametrin kasvulle. 1500 64 x 64 32 x 32 KT KT Iter. 1000 500 0 0 ,2 ,4 α ,6 ,8 1,0 Kuva 7.8: Parametrin α vaikutus SIP-menetelmän konvergenssiin. 7.7 Loppupäätelmiä Suurilla yhtälöryhmillä algebrallinen monihila-algoritmi on ylivoimaisen tehokas ratkaisutapa. Menetelmä on yleistynyt myös kaupallisissa virtausratkaisijoissa. Painekorjausyhtälön ratkaisussa menetelmä on tämänhetkisen käsityksen mukaan suositeltava. Painekorjausyhtälön ratkaisun tarkkuusvaatimuksesta ei ole täysin selvää käsitystä, mutta vaikka yhtälön ratkaisemisessa riittäisi melko vähäinen tarkkuus, monihila-algoritmi vaikuttaa robustilta valinnalta. Monihilaa sovellettaessa saadaan jo muutamalla iteraatiokierroksella ratkaisulle likimain oikea muoto. Isoilla probleemoilla tavanomaiset iteratiiviset menetelmät saattavat tuottaa oskilloivia ratkaisuja vielä usean sadan iteraatiokierroksen jälkeen. Historia saattaa olla sellainen, että vaikka välillä jostain sopivasta kohdasta otettu tulos näyttäisi olevan kunnossa, niin sadan lisäkierroksen jälkeen se onkin muuttunut virheelliseksi ja kunnon ratkaisua on odotettava vielä satoja kierroksia. Esimerkkinä konvergenssihistoriasta on edellä mainittu diffuusio (lämmönjohtavuus) -yhtälön ratkaisu. Reunaehdot ovat sellaiset, että kolmella seinällä lämpötila on 100 astetta ja yhdellä T = 0. Laskentahila on 64 × 64 ja ∆x = ∆y = 1. Kuvassa 7.9 on lämpötilajakaumat eri iteraa- 7.7. LOPPUPÄÄTELMIÄ 155 tiokierroksilta kohdassa y = 51. Tässä esimerkissä jakauma konvergoi monotonisesti tarkkaa ratkaisua kohden, mutta ero vielä satojen kierrosten jälkeen tarkkaan ratkaisuun on huomattava. Monihila-algoritmilla käyttäen samaa LGS-menetelmää tasoittajana ratkaisu olisi viivanpaksuuden tarkkuudella tarkka kymmenellä tai viidellätoista iteraatiokierroksella riippuen siitä käytetäänkö trilineaarista interpolointia vai yksinkertaista siirtomenettelyä. Kuva 7.9: Lämpötilajakauma kohdassa y = 51 eri iteraatiokierroksilla. Edellä jo todettiin, ettei liikemäärä- tai skalaariyhtälöiden ratkaisutarkkuuden tarvitse olla painekorjausyhtälön luokkaa. Lisäksi yhtälöryhmien ratkaisu on ongelmallista vasta isoilla laskentahiloilla. Tällä kurssilla on pienissä laskentaesimerkeissä sovellettu LGS-menetelmää painekorjausyhtälölle. Muille yhtälöille GaussSeidelkin konvergoi riittävän nopeasti. 7.7. LOPPUPÄÄTELMIÄ 156 • Painekorjausmenetelmässä syntyy symmetrinen Poisson-tyyppinen yhtälö painekorjauksille ja epäsymmetriset konvektio-diffuusio -yhtälön diskretoinnit muille ratkaistaville suureille • Käytettäessä alirelaksaatiota konvektio-diffuusio -yhtälöt ovat lävistäjävaltaisia ja niiden ratkaisu konvergoi nopeasti • Epälineaaristen yhtälöiden ratkaisu perustuu aina sopivasti tehtyihin linearisointeihin. Painekorjausmenetelmässä ei sovelleta sinänsä mitään normaalista epälineaaristen yhtälöiden ratkaisusta poikkeavaa, mutta yhtälöiden peräkkäinen ratkaiseminen ja erillinen Poisson-yhtälö ovat tietenkin ratkaisun kannalta tärkeitä ’kikkoja’. • Yhtälöryhmien ratkaisumenetelmät voidaan jakaa suoriin ja iteratiivisiin. • Gaussin eliminaatio muunnoksineen on suora ratkaisumenetelmä. Täysille matriiseille se on myös nopein menetelmä. • Iteratiiviset menetelmät voidaan lausua muodossa Mδ n = ρn , missä ρn on yhtälöryhmään liittyvä residuaali ja matriisi M approksimoi mahdollisimman tarkasti alkuperäisen yhtälöryhmän kerroinmatriisia. • Konvergenssinopeutta voidaan arvioida spektraalisäteen avulla. Spektraalisäde on matriisin M suurin ominaisarvo. • Oskilloivaan iteraatiohistoriaan liittyy kompleksinen spektraalisäde. • Thomasin algoritmin laskenta-aika on verrannollinen muuttujien lukumäärään. Tämän vuoksi algoritmia kannattaa soveltaa aina kun se on mahdollista ja monet iteratiiviset menetelmät hyödyntävätkin sitä. • Klassisia yhtälöryhmien ratkaisutapoja ovat Gauss-Seidel, Jacobi, LGS, SOR ja approksimatiivinen faktorointi. Kaksidimensioisissa pienissä tehtävissä esimerkiksi LGS:n tai faktorointimenetelmien teho on riittävä. • Monimutkaisempia menetelmiä ovat konjugaattigradienttimenetelmät ja Stonen vahvasti implisiittinen proseduuri (SIP). Näiden käyttö painekorjausmenetelmässä ei ole välttämätöntä. • Eräät menetelmät sisältävät parametreja, jotka ovat tapauskohtaisia. 7.7. LOPPUPÄÄTELMIÄ 157 • Monihila-algoritmin osat ovat tasoitus, rajoitus ja takaisin interpolointi. • Monihila-algoritmia voidaan soveltaa monin eri tavoin. Yksinkertaisinta on käyttää V-sykliä. • Monihila-algoritmilla on mahdollista pitää laskenta-aika verrannollisena muuttujien lukumäärään eli iteraatiokierrosten määrä ei kasva, vaikka probleeman koko kasvaakin. • Yhtälöryhmille sovelletaan algebrallista monihilaa. Geometrisessa monihilassa muodostetaan itse ratkaisu harvemmilla hilatasoilla. Algebrallinen monihila sopii lineaarisille tehtäville. • Algebrallisessa monihilassa kerroinmatriisi siirretään seuraavalle (harvemmalle) tasolle käyttäen rajoitus- ja interpolointioperaattoreita R ja P Am+1 = RAm P • Jos käytetään interpoloinnin sijasta yksinkertaista korjauksen injektointia seuraavalle hilatasolle niin P = RT . Tämä yksinkertaistaa matriisin Am+1 konstruointia, mutta huonontaa konvergenssia. • Monihila-algoritmille sopivia tasoittajia ovat mm. LGS ja SIP. Monihila-algoritmia suositellaan käytettäväksi isoissa tehtävissä. Päivitetty 26.2.2014 158 8 Virtausratkaisun tehostaminen 8.1 Rinnakkaistaminen 8.1.1 Rinnakkaistamistavat rakenteellisella ja rakenteettomalla hilalla Rakenteellista hilaa käytettäessä monimutkainen geometria on jaettava osa-alueisiin, joille kullekin generoidaan oma laskentaverkkonsa. Rakenteettomalla hilalla koko alue voidaan käsitellä yhtenäisenä alueena. Rakenteettoman hilan etuna on myös hilangeneroinnin automatisointi ja koppijaon muuttaminen ratkaisun mukana eli ns. adaptiivisuus. Toisaalta, jos ratkaisua halutaan tehostaa rinnakkaistamisella, tarjoaa monilohkoinen rakenne siihen valmiin perustan. Rakenteeton hila on puolestaan jaettava osa-alueisiin rinnakkaistusta varten. Näiden alueiden valinta ei ole yksikäsitteistä, joten tarkoitusta varten on kehitetty algoritmeja. Koska rakenteelliseen hilaan liittyvät laskennan tehostamiskeinot, kuten rinnakkaislaskenta tai monihila, ovat suhteellisen yksinkertaisia, käsitellään jatkossakin etupäässä vain rakenteellista hilaa. Ferziger-Pericissä rinnakkaistaminen perustuu paljolti yhden yhtenäisen laskentaalueen jakamiseen osa-alueisiin. Kyseessä on ns. hienon tason rinnakkaistaminen (fine-grain parallelization). Rinnakkaistus voidaan sen jälkeen tehdä joko niin, että ratkaisu etenee rinnan siten, että yksi osa-alue sijaitsee yhdessä tietokoneen laskentanoodissa, joka vaihtaa tietoa (reunaehdot) naapuriensa kanssa. Toinen tapa on rinnakkaistaa jokin aikaa vievä osa ratkaisusta. Tyypillisesti tämä on painekorjausyhtälön ratkaisu. Kokonaan erilainen strategia on ajatella rinnakkaistamista jo alunperin monilohkoisen topologian pohjalta. Tällöin ei yritetäkään ratkaista koko aluetta kerralla, vaan yhdelläkin laskentaytimellä kukin iteraatiokierros tehdään täysin riippumatta naapurilohkojen ratkaisusta. Vasta iteraatiokierroksen suorittamisen jälkeen päivitetään reuna-arvot naapurilohkoista. Tällöin puhutaan karkean tason rin- 8.1. RINNAKKAISTAMINEN 159 TWO LAYERS OF GHOST CELLS Kuva 8.1: Laskentalohkoa reunustaa kaksi riviä ’haamukoppeja’, joihin sijoitetaan naapurilohkojen reunoilla olevat arvot. nakkaistamisesta (coarse-grain parallelization). Ainoastaan tällä tavoin päästään ns. täydelliseen skaalautuvuuteen (scaling), jolloin laskentateho kasvaa suoraan verrannollisena laskentaprosessorien lukumäärään. Seuraavassa tarkastellaan lähinnä tätä tapaa. Ferziger-Pericissä tarkastellaan puolestaan ensiksi mainittuja tapoja. 8.1.2 Lohkorakenne Kuten aikaisemmin on todettu yksinkertaisin tapa soveltaa lohkorakennetta on jättää kunkin lohkon reunoille kaksi riviä laskentatilavuuksia, joihin liitetään naapurilohkoissa olevien reunimmaisten koppien arvot (kuva 8.1). Linkitys tehdään yleensä aina ennen iteraatiokierroksen alkua, mutta on mahdollista päivittää reuna-arvot myös iteraatiosyklin sisällä. Esimerkiksi painekorjaukset voidaan päivittää myös painekorjausyhtälön ratkaisun jälkeen. Ja kuten aikaisemmin on mainittu, reunatilavuuksia tarvitaan kaksi riviä, jotta toisen kertaluvun tarkkuus saavutettaisiin. Keskeisdifferenssillä periaatteessa selvitään yhdellä rivillä, mutta paineesta riippuva vaimennustermi vaatii silloinkin kahden koppirivin arvot. Joissakin ohjelmissa ei lohkorajalla voida käyttää korkeamman kertaluvun ylävirtamenetelmiä, mikä osoittaa, ettei ohjelmissa ole käytetty tässä kuvattua kahden koppirivin menettelyä. Oikeassa lohkorakenteessa lohkojen ’liimaustapa’ toisiin lohkoihin on mielivaltainen. Joissakin vanhemmissa ohjelmissa harrastettiin myös näennäistä lohkorakennetta, jolloin rakenne näkyi lähinnä käyttäjälle, mutta ohjelman sisällä olikin vain yksi lohko, josta rajoitettiin alueita pois. Tällainen tapa oli tietenkin muistika- a 8.1. RINNAKKAISTAMINEN 160 a BC PATCHES Kuva 8.2: Lohkon reunalla voidaan soveltaa erilaisia reunaehtoja kullakin ’tilkulla’. Kuvaan on piirretty myös haamukoppirivit. pasiteetin tuhlausta eikä anna kunnollista joustavuutta geometrian kuvauksen suhteen. Varsinaisessa lohkorakenteessa mielivaltaisista liitospinnoista seuraa, että ku- kin lohko voi kultakin seinältään liittyä useisiin naapurilohkoihin ja seinällä saattaa olla sisään- tai ulosvirtausta. Seinä tulee tällöin jaetuksi erillisiin tilkkuihin, joilla kullakin on erilaiset reunaehdot tai jotka liittyvät eri naapurilohkoihin kuten kuvassa 8.2 on esitetty. Rinnakkaislaskentaa voidaan suorittaa joko ns. jaetun muistin tai hajautetun muistin koneilla. Jaetun muistin koneella reunakoppien päivittäminen eri lohkoista on yksinkertaista. Hajautetun muistin koneella reunalohkojen päivitys tapahtuu viestinvälityksellä eri laskentanoodien välillä. Kaikki reunaehdot eivät tarvitse viestinvälitystä. Esimerkkejä reunaehdoista on taulukossa 8.1. Yksinkertaisin lohkoliimaus on sellainen, jossa hilaviivat ovat jatkuvia lohkos- ta toiseen. Jos hilaviivat ovat epäjatkuvia, tarvitaan interpolointi lohkojen välillä. Rakenteellisella hilalla tämä on mahdollista kuvan 8.3 tapauksessa tehdä siten, että lohkoreunalla on säilymisominaisuus. Ratkaisukin on periaatteessa myös ’jatkuva’, mikäli diskreetillä esityksellä tällaisesta voidaan puhua. Kuvassa 8.3 on tiheyden tasa-arvokäyriä yksinkertaisessa virtaustapauksessa. Hilan harvetessa kanavan kes- kellä tasoarvokäyrissä näkyy pieni ryppy, mutta kyse on enemmän interpolointirutiinin epätarkkuudesta kuin itse ratkaisun. Jos lohkoissa on eri määrä laskentatilavuuksia, tarvitaan haamukoppien lisäksi aputaulukoita, koska suureita ei voida suoraan liittää naapurilohkon haamutilavuuksiin. Aputaulukosta voidaan tehdä globaa- 8.1. RINNAKKAISTAMINEN 161 Taulukko 8.1: Boundary condition types. Boundary condition Exchange of data Connectivity (continuous) External Inlet Mirror Outlet Cyclic Singularity Solid Rotating solid Moving solid Sliding mesh Chimera Connectivity (discontinuous) yes no no no no yes no no no no yes yes yes lin säilymisperiaatteen toteuttavalla tavalla interpolointi haamukoppiriveihin, jonka jälkeen laskenta sujuu samalla tavoin kuin siinä tapauksessa, että hilaviivat olisivat jatkuvia. Syklisessä reunaehdossa lohko liittyy itseensä. Reunaehtoa käytetään erityisesti pyörivien koneiden laskennassa, jolloin riittää simuloida yhden virtauskanavan osuus. Liukuvan hilan (sliding mesh) reunaehto liittyy myös pyöriviin koneisiin (kuva 8.4). Reunalla voidaan liittää pyörivä roottori ja kiinteä staattori tai pumpun pesä toisiinsa ajan suhteen tarkassa laskennassa. Pinta voidaan hoitaa samaan tapaan kuin edellä esitettiin epäjatkuvalle lohkoliimaukselle. Sekä liukuvan hilan että epäjatkuvan lohkoliimauksen yhteydessä epätarkkuutta säilymisominaisuuteen syntyy siitä, että pinnat eivät ole jatkuvia, vaan koostuvat paloittain lineaarisista osista. Tällöin pintojen laskennalliset pinta-alat, so. laskentatilavuuksien pinta-alojen summa ei ole täsmälleen sama tällaisen reunaehdon kahden puolen olevissa lohkoissa. Tilannetta voidaan korjata ottamalla huomioon kokonaispinta-aloissa oleva ero. Reunaehtojen määrittelyyn palataan luvussa 9. 8.1.3 Laskennan tehostaminen rinnakkaistamalla Virtaussimulointi on eräs maailman laskentaintensiivisimmistä tutkimusalueista. Jotta ratkaisuista saataisiin kaikki mahdollinen irti, on laskenta-algoritmin oltava tehokas sekä iteraatiokierrosten määrän suhteen että laskenta-ajassa mitattuna iteraa- 8.1. RINNAKKAISTAMINEN 162 Kuva 8.3: Lohkorajalla hilaviivat voivat olla epäjatkuvia (vasemmalla). Ratkaisu saadaan silti lohkorajalla globaalisessa mielessä konservatiiviseksi ja tasa-arvokäyrätkin likimain jatkuviksi. tiokierrosta ja laskentatilavuutta kohden. Tällöin tehtävien liukulukuoperaatioiden määrä on saatava mahdollisimman pieneksi ilman, että iteraatiokierrosten määrä kasvaa vastaavasti. Menetelmän yksinkertaisuudella ja vaaditulla iteraatiokierrosmäärällä on jokin suhde, jonka kanssa algoritmin kehittäjän on tasapainoiltava. Edellisen lisäksi laskentanopeuteen vaikuttaa tietokoneen nopeus ja erityisesti se minkä verran koneen tehosta saadaan irti. Tämä riippuu nykyisin monista tekijöistä, tässä yhteydessä kiinnitetään huomiota vain prosessoritehoon. Perinteinen tapa tehostaa laskentaa on algoritmin vektorointi, johon kiinnitettiin huomiota jo peruskurssin ohjelmia tehtäessä. Noudattamalla tiettyjä yksinkertaisia periaatteita, joista tärkein on rekursioiden välttäminen, ohjelman DO-silmukat vektoroituvat. Rekursiolla tarkoitetaan tuloksen riippuvuutta saman silmukan sisällä aiemmin lasketusta tuloksesta. Vektoroinnilla on voitu nopeuttaa laskentaa noin kymmenkertaiseksi Cray-tietokoneella ja jopa 40-kertaiseksi japanilaisilla supertietokoneilla. Ohjelman näin tehokas vektorointi edellyttää kaikkien sisimpien DO-silmukoiden 8.1. RINNAKKAISTAMINEN 163 Kuva 8.4: Liukuvan hilan reunaehtoa sovelletaan pyörivissä virtauslaitteissa. Reunaehto on ominaisuuksiltaan samantapainen kuin kuvan 8.3 reunaehto. Kehän suunnassa käytetään syklistä reunaehtoa. vektoroituvuutta. Parhaimmillaan vektorikoneista saatiin lähes puolet niiden teoreettisesta huipputehosta. FINFLO-ohjelmalla saatiin C94-koneen yhdestä prosessorista 0,4-0,5 Gflops, mikä oli tällä koneella lähellä käytännön maksimia eli noin kymmenkertaista nopeutta skalaarilaskentaan verrattuna. Vektorikoneita valmistetaan edelleen Japanissa, mutta ne ovat kalliita. Vektorointi on kuitenkin tullut myös osaksi arkipäivää, koska tavallisten pöytäkoneiden prosessorit vektoroivat lyhyehköt DO-silmukat. Vektoroidun silmukan laskenta on Intelin prosessoreilla noin kaksinkertainen vektoroimattomaan verrattuna. Vektoriprosessorien laskentanopeus on kasvanut hitaasti ja niihin liittyvä tekniikka on kallista. Laskentanopeutta saadaan oleellisesti nykyisin kasvatettua vain rinnakkaistamalla. Huomattavasti halvempaa on kytkeä vektoriprosessoreiden ase- 8.1. RINNAKKAISTAMINEN 164 mesta tavallisia prosessoreita yhteen. 1990-luvulla esimerkiksi Cray T3E-koneessa, jolla jatkossa esitettävät esimerkit aikoinaan laskettiin, käytettiin RISC-prosessoreita (Reduced Instruction Set Computer). RISC-prosessorista ei yleensä saada irti kuin 10-20% niiden nimellisestä huipputehosta. RISC-prosessoreidenkin käyttö on harvinaistunut ja tilalle ovat tulleet Intelin ja AMD:n ns. CISC-prosessorit (Complex Instruction Set Computer). Osa uusimmista x86-suorittimista yrittää hyödyntää RISClähestymistavan etuja kääntämällä sisäisesti CISC-komentoja yksinkertaisempaan RISC-tyyliseen muotoon. Nykyisin käskykannan luonne ei enää ole niin vahvasti sidoksissa suorittimen sisäiseen toimintaan kuin aiemmin, mikä on tehnyt tiukasta jaottelusta RISC- ja CISC-arkkitehtuureihin melko tarpeettoman. Prosessorit jakaantuvat ’ytimiin’ ja rinnakkaistamisen yhteydessä tulisikin käyttää termejä ’prosessi’ tai ’ydin’ laskentasolmujen lukumäärää kuvatessa. Yksi prosessoriydin on tätä kirjoitettaessa (2009) nimellisteholtaan yli 5 Gflops. Prosessikohtainen laskentateho kasvoi voimakkaasti 2000-luvun alkupuolelle asti, mutta nykyisin tehoa voidaan kasvattaa lähinnä rinnakkaistamalla. Jotta saataisiin riittävä kokonaisteho, on valittava sellainen rinnakkaistamisstrategia, että teho kasvaa lineaarisesti prosessien lukumäärän funktiona. Tällöin puhutaan laskentatehtävän skaalautuvuudesta. Hyvä skaalautuvuus on mahdollinen hyödyntämällä koodin lohkorakennetta. 8.1.4 Rinnakkaistaminen käyttäen viestinvälitystä Varsinaisesta rinnakkaistamisesta puhuttaessa tarkoitetaan yleensä hajautetun muistin koneella tehtyä laskentaa. Rinnakkaistaminen voidaan tehdä myös jaetun muistin koneella samanlaiseen viestinvälitykseen perustuen kuin hajautetulla muistillakin. Jaetulla muistilla voidaan viitata myös samoihin globaaleihin muistiosoitteisiin. Tällöin yksinkertaisin tapa rinnakkaistaa perustuu vektoroituvien DO-silmukoiden pätkimiseen osiin, joita on yhtä monta kuin käytössä olevia laskentaytimiä. Tämä voidaan hoitaa kääntäjän optiolla. Tapa on yksinkertainen, mutta käytännössä laskennan teho ei enää juuri nouse, kun prosessien lukumäärä kasvaa yli kymmenen. Eräänä mahdollisena syynä jaetun muistin tehottomuuteen on nopeankin väylän hitaus muistin ja eri prosessorien välillä. Parempi skaalautuvuus voidaan saada aikaan vain viestinvälityksellä. Kukin ydin 8.1. RINNAKKAISTAMINEN 165 PE 0 read and send input, boudary conditions and PE 1 mesh receive input, boudary conditions and from PE 0 mesh receive input, boudary conditions and from PE 0 initialization initialization initialization block connectivity block connectivity block connectivity advance computation one time step advance computation one time step block connectivity receive and write global residuals Yes PE 2 continue iteration? advance computation one time step block connectivity send global residuals to PE 0 Yes continue iteration? mesh block connectivity send global residuals to PE 0 Yes continue iteration? No No No write solution write solution write solution Kuva 8.5: Rinnakkaislaskennan periaate. Ratkaisu etenee yhden iteraatiokierroksen kussakin laskentaprosessissa riippumatta muista prosesseista, jonka jälkeen päivitetään reunaehdot ja lasketaan globaalit residuaalit konvergenssin seuraamista varten (PE = prosessing element, laskentaelementti tai noodi. hoitaa laskentaa itsenäisesti irrallaan toisista laskentaelementeistä, kunnes on aika vaihtaa reunaehtoihin ja konvergenssiin liittyvät tiedot viestinvälityksen avulla. Yleisin viestinvälityskirjasto lienee tällä hetkellä MPI (Message Passing Interface). Muita ovat esimerkiksi PVM ja TCGMSG. Tyypillisiä viestinvälityskäskyjä ovat käskyparit SEND ja RECV sekä BCAST ja GATHER. Näistä edellinen käskypari suorittaa viestinvaihdon kahden laskentanoodin välillä, BCAST lähettää kaikille muille viestin ja GATHER vastaanottaa viestin kaikilta muilta laskentaelementeiltä. Pyrkimyksenä oli myös saada muistiosoitus yhdistettyä suoraan FORTRANkieleen, mutta tämä tulee tuskin koskaan niin tehokkaaksi kuin ohjelmaan itse suunniteltu kommunikointi. Viestinvälityskirjastoa voidaan käyttää paitsi rinnakkaistietokoneella, myös erillisten verkkoon kytkettyjen koneiden välillä. Rinnakkaislaskennan periaatetta on hahmoteltu kuvaan 8.5. Kukin lohko käsitellään omassa laskentaprosessissaan. Ferziger-Pericissä pohditaan rinnakkaistamista toisaalta yksittäisten algoritmien, kuten SIP, suhteen ja toisaalta jakamalla laskenta-alue yhtä suuriin osa-alueisiin 8.1. RINNAKKAISTAMINEN Block 1 Block 2 166 1 2 3 4 5 6 7 8 => Kuva 8.6: Alkuperäiset hilangeneroinnin jäljiltä olevat lohkot jaetaan tasakokoisiin rinnakkaistusta varten. (domain decomposition). Jälkimmäisessä tavassakin on oleellista pyrkiä saamaan painekorjausalgoritmi toimimaan koko alueessa suorittamalla mahdollisia yksinkertaistuksia. Tällä on periaatteellinen ero edellä esitettyyn lohkoittain etenevään ratkaisuun. Saavutettu teho ei käy F-P:stä täysin selville, mutta todennäköisesti ongelma ei esitetyillä tavoin skaalaudu täydellisesti. Täydellinen skaalautuvuus saadaan siis aikaan samankokoisilla lohkoilla käsittelemällä lohkoja täysin erillään toisistaan koko iteraatiokierroksen ajan. Sen sijaan, että painekorjausyhtälöä pyrittäisiin ratkaisemaan koko laskenta-alueessa, ratkaistaan se jokaisessa osa-alueessa erikseen. 8.1.5 Hilan jako osa-alueisiin Kun geometria kuvataan useammalla lohkolla, jonkinlainen perusta rinnakkaistamiselle on jo valmis. Yleensä lohkot eivät ole tällöin samankokoisia. Jako kelpaakin sellaisenaan vain muutamalle laskentaytimelle, mikä saattaa jo ratkaista sen saadaanko laskentatulos yhdessä yössä. Erikokoisilla lohkoilla kannattaa usein sijoittaa useampia pikkulohkoja yhden ytimen laskettaviksi. Yksi ydin hoitaa tällöin useampia pieniä lohkoja samassa ajassa, kuin muut selviävät isommista lohkoista. Massiivisesta rinnakkaislaskennasta saadaan hyötyä vain, jos koko laskenta-alue voidaan jakaa suurimmalta osaltaan samankokoisiin osa-alueisiin. Yleensä varsinainen laskentahila laaditaan muutamassa lähinnä geometrian säätelemässä lohkossa. Nämä lohkot tulee jakaa rinnakkaistusta varten kuten kuvassa 8.6. Sopivia lohkokokoja rinnakkaistusta varten ovat esimerkiksi 243 , 323 tai 403 . Tällöin voidaan lohkon sisällä soveltaa monihila-algoritmia riittävän monelta tasolta ja prosessorille saadaan sopivan kokoinen kuorma. Jos yhden lohkon koko on 163 tai alle, laskentaytimellä alkaa olla liian vähän työtä verrattuna kommunikointiin naapuriensa kans- 8.1. RINNAKKAISTAMINEN a) 167 b) Kuva 8.7: Alkuperäisen lohkon jako kun a) alkuperäinen lohko on pienempi kuin 2× toivottu lohko, b) kun alkuperäinen lohko on suurempi kuin 2× toivottu lohko sa. Tehokkaassa rinnakkaistuksessa on tarpeen saada laskenta-aika mahdollisimman suureksi kommunikointiaikaan nähden. Kun vaatimus lopullisesta lohkokoosta tiedetään, on se luonnollisesti otettava huomioon jo hilangenerointivaiheessa luotaessa alkuperäisiä suurempia lohkoja. Aina ei ole mahdollista saavuttaa tilannetta, jossa kaikki lohkot olisivat yhtä suuria. Tällöin jako kannattaa tehdä kuten kuvassa 8.7. Jos jaettava lohko on pienempi kuin 2 × toivottu lohko, se jaetaan yksinkertaisesti keskeltä. Jos se on taas suurempi kuin 2 × toivottu lohko, kannattaa jättää ’jako- jäännös’ keskelle. Numeriikan kannalta ja myös turbulenssin kuvauksen kannalta on edullista jättää laskenta-alueen reunoille täysikokoiset lohkot. Turbulenssin kuvauksen kannalta edullisuus perustuu siihen, että seinät sijaitsevat yleensä alkuperäisen laskenta-alueen reunoilla. Seinien lähellä turbulenssimallit sisältävät sellaisia korjaustermejä, joiden ulottaminen lohkorajan yli saattaa olla hankalaa. Kummassakin kuvan 8.7 tapauksessa rinnakkaistukseen tulee toivottua pienempiä lohkoja. Siitä ei ole varsinaista haittaa, jos suurin osa lohkoista on samaa kokoa. Laskentaaika/iteraatiokierros määräytyy tällöin niiden perusteella. Prosessit, joissa on pienempi lohko, yksinkertaisesti odottavat kunnes kaikki muut ovat valmiita. Tähän hupeneva laskentakapasiteetti ei ole merkittävä. Rakenteettomalla hilalla rinnakkaistaminen pohjautuu samaan periaatteeseen. Toteustupa on monimutkaisempi, koska mitään lohkojakoa ei ole. Alueen jako onkin automatisoitava, mutta tuloksena saadaan aina tasainen jako prosessien kesken. Esimerkki alueen jaosta on esitetty kuvassa 8.8. Koska laskentakoppien määrä on hyvin suuri, saadaan aina käytännössä yhtä suuret kuormat eri prosesseille. Laskentatilavuuksien lajitteluun sopivasti tarvitaan ohjelman sisällä ’älyä’ samalla tavoin kuin itse rakenteettoman hilan generointiin tai sen adaptiivisuuteen. Rakenteellisella hilalla nämä seikat ovat yksinkertaisia, mutta painolastiksi tulee hilan generointi. Rakenteettomalla hilalla laskenta-algoritmi ja geometrian käsittely ovat hyvin mo- 8.1. RINNAKKAISTAMINEN 168 Kuva 8.8: Rakenteettomalla hilalla rinnakkaistaminen tapahtuu jakamalla laskenta-alue likimain yhtä suuriin osa-alueisiin. nimutkaisia, mutta tavoitteena on päästä kokonaan eroon hilangeneroinnista käsityönä. 8.1.6 Rinnakkaistamisesta saavutetun hyödyn arviointi Rinnakkaistamista voidaan tarkastella kahdella tavalla. Virtauslaskennan kannalta järkevä tapa on pitää yhden laskentaytimen kuorma optimaalisen suurena. Tällöin laskentaan kuluu selvästi suurempi aika kuin kommunikointiin ja toisaalta myös yhden laskentaelementin muisti tulee kohtuullisesti hyödynnetyksi. Jos käytetään esimerkiksi lohkokokoa 323 = 32768 laskentatilavuutta, ollaan kohtuullisen lähellä optimitilannetta. Tällöin laskenta-aika yhdellä tämän kokoisella tapauksella on sama kuin laskenta-aika 200 kertaa suuremmalla eli yli kuudella miljoonalla kopilla edellyttäen, että täydellinen skaalautuvuus on saavutettu. Rinnakkaislaskenta tarjoaa siis keinon laskea isoja tehtäviä samassa ajassa kuin pieniä. Vain prosessien määrää on lisättävä. Laskentanopeus määräytyy tässä esimerkissä yhden laskentaytimen nopeudesta hilakoolla 323 . Toinen ajatusmalli on yrittää laskea pienehköä tehtävää niin nopeasti kuin mahdollista. Esimerkiksi jos hilalla 323 menee laskentaan yhdellä ytimellä puoli tuntia, 8.1. RINNAKKAISTAMINEN 169 aikaa voidaan lyhentää rinnakkaistamalla. Tämä johtaa kuitenkin tehon alenemiseen ja erityisesti muistin käytön tuhlaukseen. Laskennan suorittajan kannalta on tällöin kannattavampaa ajaa esimerkiksi 16 erilaista pientä tehtävää yhtä aikaa, kuin ajaa niitä yksi kerrallaan 16:ta laskentaytimellä. Ensimmäisessä tapauksessa jos kokonaisajankulutus on E ja prosessien lukumäärä N, niin ideaalinen seinäkelloaika olisi tideal = E N (8.1) Todellisuudessa kommunikointiin kuluu kokonaisaika c′ . Tällöin treal = c′ E + N N (8.2) Laskenta nopeutuu siis todellisuudessa tekijällä E N 1+c (8.3) E c + N N ′ missä c = c /E on kokonaiskommunikaatioaika / kokonaislaskenta-aika. Tämä on η= ′ = likimain sama kuin kommunikaatioaika / laskenta-aika yhdessä prosessissa. Jos oletetaan, että jokaisella laskentanoodilla on oma kaistanleveytensä viestinvälityksessä, kommunikaatioaika on sama jokaiselle laskentaprosessille ja c siten vakio. Tällöin laskennan nopeutuminen tulee olemaan verrannollinen prosessien lukumäärään eli täydellinen skaalautuvuus saavutetaan pitämällä yksittäisen lohkon kokoa vakiona. Jos lähdetään kiinteästä tehtäväkoosta ja halutaan nopeuttaa sitä jakamalla se aina vain pienempiin osiin, laskenta-aika yhdessä prosessissa on likimain tcalc ∝ n3 /N (8.4) missä n3 on probleeman koko ja n yhdellä ytimellä ajettaessa lohkon sivun pituus. Usealla laskentaytimellä n3 /N on myös lohkon koko yksittäisessä laskentanoodissa. Kommunikaatioaika on verrannollinen lohkon pinnan kokoon. Tällöin kommunikaatioajalle saadaan tcom ∝ [(n3 /N)1/3 ]2 = n2 /N 2/3 (8.5) Suhteeksi c saadaan tällöin c = tcom /tcalc ∝ n2 /N 2/3 N 1/3 = n3 /N n (8.6) 8.1. RINNAKKAISTAMINEN 170 Taulukko 8.2: Laskentateho pitämällä lohkokoko vakiona. NPS N. of cells η T3E η T3D η SGI 1 2 4 8 16 32 64 1.000 0.992 0.978 0.978 0.985 0.963 0.913 32 768 65 536 131 072 262 144 524 288 1 048 576 2 097 152 1.000 0.998 0.998 0.998 0.998 0.998 0.998 1.000 0.950 0.850 0.904 0.859 N/A N/A Taulukko 8.3: Laskentateho pitämällä tehtävän koko vakiona. NPS N. of cells/block η T3E 1 2 4 8 16 32 64 131 072 65 536 32 768 16 384 8 192 4 096 2 048 1.000 0.992 0.981 0.948 0.927 0.894 0.876 Tämän avulla saadaan käyttäen verrannollisuuskerrointa β η= N N = 1+c 1 + βN 1/3 (8.7) Vakioprobleemakoolla teho ei siis ole suoraan verrannollinen prosessien lukumäärään. On lisäksi huomattava, ettei kummassakaan tapauksessa teholauseke noudata Amdahlin lakia N N = 1+c 1 + βN joka usein mainitaan rinnakkaislaskennan oppikirjoissa tässä yhteydessä. η= (8.8) Rinnakkaistamisen tehoa on ensimmäisessä tapauksessa testattu eri tietokoneilla taulukossa 8.2. T3E-koneella saavutettiin täydellinen skaalautuvuus, joten yksi iteraatiokierros yli kahdella miljoonalla laskentatilavuudella vaatii saman laskentaajan kuin iteraatiokierros 32 768:lla kopilla. Taulukossa on myös tuloksia työasemaklusterille, jotka on liitetty toisiinsa standardi Ethernet-linjalla. Tällöin laskentateho luonnollisesti pienenee prosessien lukumäärä kasvatettaessa, mutta vielä 16lohkoisessa tapauksessa on saavutettu hyvä laskentateho. Toisessa tapauksessa on pidetty probleeman koko 64 × 64 × 32 = 131 072 va- kiona ja jaettu sitä pienempiin prosesseihin. Tulos on esitetty taulukossa 8.3. Kuten 8.2. MONIHILAMENETELMÄN KÄYTTÖ 171 Kuva 8.9: Laskentateho pitämällä tehtäväkokoa vakiona. Sovitetuista käyristä Sp1 (N ) viittaa Amdahlin lakiin ja Sp2 (N ) yhtälöön (8.7). havaitaan tulos alkaa heikentyä ja skaalautuvuus on huonompi. Tosin vielä niinkin pienellä lohkokoolla kuin 16 × 16 × 8 = 2048 laskentatilavuutta, saavutetaan lähes 90% teoreettisesta laskentatehosta. Taulukon 8.3 tulokset on esitetty myös kuvassa 8.9. Kuvaan on sovitettu myös käyrät (8.7) ja (8.8). Yhtälön (8.7) voidaan havaita noudattavan paremmin todellisia laskentatehoja kuin Amdahlin lain tässä tapauksessa. Käsittelemällä ratkaisua lohkoittain lokaalisesti kytkentä laskenta-alueen laidalta toiselle katkeaa ja konvergenssi hidastuu. Jos lohkokoko pidetään riittävän suurena, tällä ei ole merkitystä. Kuvassa 8.10 on jaettu tehtävää, jonka alkuperäinen koko on 128 × 64 × 64 osiin ja verrattu konvergenssia. Konvergenssissa ei näy suuria ero- ja, vaikka on käytetty maksimissaan 32 lohkoa. Tässä tapauksessa pieninkin lohko on kohtuullisen kokoinen 32 × 32 × 16, mikä tietenkin vaikuttaa asiaan. Voidaan to- deta, että myös numeriikan kannalta on tärkeää, ettei rinnakkaistamista viedä kovin pienen lohkon asteelle. 8.2 Monihilamenetelmän käyttö Edellä laskentaa nopeutettaessa todettiin ratkaisuajan / iteraatiokierros pysyvän samana, jos probleema skaalautuu täydellisesti. Iteratiivisen ratkaisun kierrosmäärä kuitenkin nousee tehtäväkoon kasvaessa, joten ratkaisuajat eivät pysy samoina ilman erikoistoimenpiteitä. Aikaisemmin on ollut esillä monihilan käyttö lineaaris- 8.2. MONIHILAMENETELMÄN KÄYTTÖ 172 Kuva 8.10: Ratkaisun konvergoiminen (liikemäärän L2 -normi) eri lohkojaoilla. ten yhtälöryhmien yhteydessä. Tällöin saavutetaan se ominaisuus, ettei iteraatiokierrosten määrä (periaatteessa) nouse yhtälöryhmän koon kasvaessa. Virtausyhtälöt ovat epälineaarisia ja vaativat kaikista hyvistä keinoista huolimatta kohtalaisen paljon iteraatiokierroksia riippuen tehtävän luonteesta. Tämä kierrosmäärä saadaan kuitenkin likimain vakioksi soveltamalla monihilaa myös itse virtausyhtälöiden ratkaisuun. Monihila-algoritmia voidaan siis soveltaa kahdessa vaiheessa. Itse yhtälöiden ratkaisuun (ulkoinen iteraatio) ja mahdollisesti myös lineaaristen yhtälöryhmien ratkaisuun (sisäinen iteraatio). Ulkoisessa iteraatiossa tehtävä ratkaistaan eri hilatasoilla käyttäen kyseisen tason geometriaa. Tämän vuoksi käytetään menettelystä myös nimitystä geometrinen monihila. Jatkossa esitettävästä algoritmista käytetään myös nimitystä ’FAS’ (full approximation scheme) tai geometrinen monihila ’GMG’. Kuten lineaaristen yhtälöryhmien yhteydessä, voidaan myös virtausyhtälöille monihila-algoritmi rakentaa monella tavoin. Yhteistä näille tavoille on kuljettaa ratkaisua myös harvemmilla hilatasoilla, jotka saadaan yhdistämällä tiheän tason koppeja kuten kuvassa 8.11 on esitetty. Seuraavassa esitetään FINFLO-ohjelmassa käytetyn monihilamenetelmän rakenne. FINFLOn menetelmä toimii sellaisenaan kokoonpuristuvan virtauksen yhteydessä, mutta tämän hetken käsityksen mukaan se on laajennettavissa painekorjausmenetelmälle. Painekorjausmenetelmällä kokoonpuristumattomassa tapauksessa ratkaistavaksi jää vain liikemääräyhtälöt. Jos liikemääräyhtälöt olisivat lineaarisia, ratkaisus- 8.2. MONIHILAMENETELMÄN KÄYTTÖ harva hila 173 t i h e ähila F 2 F 1 C F 3 F 4 Kuva 8.11: Harvan hilan kopit saadaan yhdistämällä tiheän hilan laskentatilavuuksista. Suureet tasojen välillä siirretään eri tyyppisillä interpoloinneilla. sa riittäisi algebrallinen monihila. GMG:ssä pyritään kiihdyttämään epälineaarisen probleeman ratkaisua. Monihilamenetelmässä suoritetaan yleensä yksi iteraatiokierros tiheimmällä tasolla (yleensä lineaaristen yhtälöiden yhteydessä suoritetaan useampia kierroksia). Kun ratkaisu on saatu, lasketaan uudet residuaalit tiheimmällä tasolla. Merkitään jatkossa kaikkien ratkaistavien suureiden uutta residuaalivektoria Rh∗ 1 . Konvergenssia voidaan kiihdyttää käyttäen toista harvempaa hilatasoa seuraavasti: • Siirretään uusi residuaali Rh∗ 1 harvemmalle tasolle. Toiselle hilatasolle siirretty residuaali on yksinkertaisesti tiheämmän tason neljän (kolmessa dimen- siossa kahdeksan) kopin, jotka sisältyvät harvan hilan yhteen laskentatilavuuteen, residuaalien summa Rht 2 = X Rh∗ 1 (8.9) • siirretään ratkaistavien suureiden vektori toiselle hilatasolle yhtälöstä Uth2 = X Vh1 Uth1 /Vh2 (8.10) missä summaus on jälleen niiden tiheän hilan laskentatilavuuksien yli, jotka sisältyvät kyseiseen harvan hilan noodiin ja Vh1 on laskentakopin tilavuus tasolla h1 . Kahden tason menetelmässä suureita Uth2 tarvitaan vain implisiittisen vaiheen kertoimien laskennassa. 8.2. MONIHILAMENETELMÄN KÄYTTÖ 174 • suoritetaan tasolla kaksi implisiittinen vaihe yhtälöillä (6.18) ja (6.19) sekä päivitetään ratkaisuvektori Uth2 (kahden tason menetelmässä uutta ratkaisu- vektoria ei oikeastaan tarvita). Implisiittisellä vaiheella on oltava hyvät ratkaisun tasoitusominaisuudet, koska se vastaa algebrallisen menetelmän tasoitusoperaattoria. • siirretään toisella hilatasolla laskettu ∆Uth2 ensimmäiselle tasolle. Periaatteessa tällöin voidaan käyttää jotain interpolointimenetelmää, kuten Ferziger- Pericissä. Käytännössä kuitenkin riittää siirtää sama korjaus kaikkiin neljään (kahdeksaan) koppiin tiheällä tasolla. Tämä johtuu siitä vanhasta seikasta, että deltamuotoisen ratkaisun yhteydessä monenlaiset yksinkertaistukset ovat luvallisia. Kahden tason menetelmässä oikeastaan tarvitaan siis vain itse korjaus ∆Uth2 , arvoja Uth2 toisella tasolla ei tarvitse edes päivittää. Useammalla hilatasolla algoritmi tulee monimutkaisemmaksi, koska siirryttäessä tasolle kolme, on kakkostason residuaalia korjattava siten kuin ykköstason tulos muuttuu kakkostason korjauksen vuoksi. Tämä tapahtuu käyttäen ns. pakotefunktiota (forcing function). Kokonaisuudessaan monihilasykli voidaan kirjoittaa seuraavasti: 1. Lasketaan tiheimmällä tasolla normaali iteraatiokierros, jolloin saadaan residuaali Rh1 2. Siirrytään seuraavalle tasolle 3. Lasketaan edellisen tiheämmän tason residuaali yhtälöistä (6.7) ja (6.18) käyttäen tällä tasolla päivitettyjä arvoja. Kakkostasolla h2 lasketaan siis ykköstason residuaali Rh1 uusiksi, kuten edellä jo kuvattiin. Merkitään tätä uutta residuaalia Rhi−1 . 4. Lasketaan uusi residuaali Rh∗ i−1 käyttäen pakotefunktiota Phi−1 . Rh∗ i−1 = Rhi−1 + Phi−1 (8.11) Kakkostasolle siirryttäessä Phi−1 ≡ 0, joten myös Rh∗ i−1 = Rhi−1 kuten yhtä- lössä (8.9) tehtiin. 8.2. MONIHILAMENETELMÄN KÄYTTÖ 175 5. Siirretään residuaali Rht i = ja ratkaistavien suureiden vektori Uthi = X X Rh∗ i−1 Vhi−1 Uthi−1 /Vhi seuraavalle hilatasolle. 6. Lasketaan tasolla hi uusi residuaali Rhi käyttäen siirrettyjä muuttujien arvoja Uthi . 7. Lasketaan pakotefunktio Phi = Rht i − Rhi (8.12) Pakotefunktio on siis harvalle hilalle siirretyn residuaalin ja harvalla tasolla lasketun residuaalin erotus ja sitä käytetään seuraavalla hilatasolla kohdassa 3. Kahden tason menetelmässä pakotefunktiota ei siis tarvita. 8. Lasketaan uusi residuaali Rh∗ i = Rhi + Phi (8.13) jonka voidaan taas todeta toisella tasolla olevan sama kuin ykköstasolta siirretyn residuaalin. 9. Suoritetaan implisiittinen vaihe käyttäen residuaalia Rh∗ i ja päivitetään ratkaisu Uhi 10. Palataan kohtaan 2 hilatasolle hi+1 , jos hilatasoja on vielä käytettävissä. Kun harvin taso on saavutettu, interpoloidaan korjaus seuraaville tiheämmille tasoille yhtälöstä i Uh+i = Uhi + Ihhi+1 (Uh+i+1 − Uht i+1 ) (8.14) missä Uh+i+1 on hilatason hi+1 lopullinen arvo koostuen kyseisellä tasolla tehdysi tä ratkaisusta ja alemmilta tasoilta tulleesta korjauksesta. Tässä Ihhi+1 on interpo- lointioperaattori hilatasojen välillä. Tämän valintaa selvitetään Ferziger-Pericissä. 8.2. MONIHILAMENETELMÄN KÄYTTÖ 176 FINFLO-ohjelmassa ei suoriteta mitään interpolointia, vaan korjaus siirretään sinällään kaikkiin neljään (2D tapauksessa) laskentatilavuuteen. Algebrallisen monihilamenetelmän yhteydessä tämän havaittiin jonkin verran huonontavan konvergenssia, mutta kokemukset tässä yhteydessä puoltavat yksinkertaisen menetelmän käyttöä. Yllä olevaa algoritmia pakotefunktioineen voitaisiin soveltaa myös algebrallisen monihilamenetelmän yhteydessä. Tällöin ratkaisuvektori olisi interpoloitava harvemmille tasoille ja residuaali laskettava sen avulla uudestaan. Geometriaa ei tarvitsisi tietenkään käyttää, koska menetelmä perustuu pelkän yhtälöryhmän käyttöön. Vaikka menettely vaikuttaa erilaiselta kuin aikaisemmin esitetty algebrallinen monihilamenetelmä, niiden konvergointihistoriassa ei ole käytännössä mitään eroa. Pakotefunktion avulla menetelmä tulee ohjelmallisesti monimutkaisemmaksi, joten sitä ei kannata käyttää algebrallisen monihilan kanssa. Mielenkiintoista on lisäksi se, ettei laskenta-aika pitenisi monimutkaisemmalla tavalla juuri ollenkaan, koska operaatiot ovat yksinkertaisia ja tehdään harvemmilla tasoilla. Suurin osa algebrallisen monihilan ratkaisuajastahan kuluu tasoittamiseen. Geometrisella monihilalla implisiittinen vaihe toimii tasoittajana ja siihen kuluu tyypillisesti vain noin puolet laskenta-ajasta. Monihilan lisäksi virtausratkaisu kannattaa aina aloittaa harvemmalta tasolta ja siirtää tulos seuraavan tason alkuarvaukseksi. Kullakin tasolla ratkaisun oikeellisuutta voi jo arvioida ja lisäksi on mahdollisuus Richardsonin ekstrapolaation avulla arvioida hilan suhteen täysin konvergoitunutta tulosta. Kun näitä alkuarvauksia käytetään, kyseessä on myös ns. full multigrid (FMG) ratkaisu, jonka kulku nähdään kuvasta 8.12. Virtausratkaisua ei kannata automaattisesti tehdä FMG:llä, vaan jokaisen saadun ratkaisun (neliö kuvassa 8.12) tulosta myös tarkastellaan ja todetaan sen oikeellisuus. Tämän jälkeen interpoloidaan alkuarvaus seuraavalle tiheämmälle tasolle, jolla voidaan iteroida monihilaa käyttäen. Monihilassa voidaan käyttää virtausyhtälöilläkin jotain muuta kuin yksinkertaista V-sykliä, mutta yleensä laskentaaikaa ei monimutkaisemmilla strategioilla säästy. Monihila-algoritmin tehosta on esimerkki kuvassa 8.13, jossa viiden tason menetelmää on verrattu yhden tason menetelmään. Periaatteessa tihennettäessä laskentahilaa ratkaisuaika pysyy ennallaan monihilaa sovellettaessa. Usein konvergenssin kiihdytys millä tahansa keinolla kuitenkin heikentää menetelmän stabiilisuutta, 8.3. RATKAISUN ADAPTIIVISUUS 177 K o n v e r g o i t u n u at i rsaut k Interpolointi t i h em ä malle tasolle 5 Väliaikainen ra s tuk a i 1 Siirtoh a r − ve m m a l l e tasolle 2 2 3 2 5 4 3 Hilataso 1 2 1 Kuva 8.12: Kaavio täyden monihilan ratkaisusta. Kullakin hilalla tehdään käytännössä suuri määrä V-syklejä ennen kuin tulos on konvergoitunut. Tässä kuvassa viides taso on tihein, päinvastoin kuin tekstissä. jolloin tiheällä hilalla joudutaan tinkimään mm. maksimimäärästä monihilatasoja. Konvergenssi tällöin huononee jonkin verran, mutta jo kolmella tasolla saavutettu hyöty on erittäin suuri. Monihila-algoritmi voidaan yhdistää myös rakenteettomaan hilaan, mutta jälleen toteuttaminen on hankalampaa verrattuna rakenteelliseen. Perusajatuksena on yhdistää sopivalla tavalla vierekkäisiä kolmioita tai tetraedrejä. Monihilamenettely ei ole kovin herkkä sille, miten laskentatilavuuksia yhdistellään. Riittää, kun harvat tasot ovat selvästi harvempia kuin tiheät. Harvoilla tasoilla laskentakopit eivät säily kolmioina, vaan niiden seinistä tulee epämääräinen murtoviiva. Menetelmästä käytetään nimitystä agglomeraatiomonihila (’agglomeration multigrid’), jonka voisi suomentaa lumipallon pyörittämiseksi (mitä harvempi taso, sen pallomaisempia laskentatilavuuksista tulee). 8.3 Ratkaisun adaptiivisuus Kolmas tapa tehostaa ratkaisua on laskentahilan adaptiivisuus. Konventionaalisessa laskennassa simuloinnin suorittaja generoi hilan, jossa tulee olla tihentymät oikeissa paikoissa: seinien lähellä ja siellä, missä gradientit ovat suuria. Menettelytapa on toimiva, mutta vaatii suorittajaltaan kokemusta. Adaptiivinen ratkaisija tihentää laskentaverkkoa simuloinnin kuluessa joitain sopivia kriteerejä käyttäen. Tehottomin tapa on lähentää rakenteellisen hilan hilaviivoja esimerkiksi paikallisen nopeusgra- 8.3. RATKAISUN ADAPTIIVISUUS 178 1 F M G S G Residuaali ,1 ,01 ,001 ,0001 ,00001 ,000001 ,0000001 ,1E−07 0 200 400 600 Iter. Kuva 8.13: Turbulenssin kineettisen energian residuaali laskettuna yhden tason menetelmällä ja käyttäen viittä monihilatasoa (Lilek 1995). dientin mukaan. Tällöin hilaviivat saattavat vääristyä ja tihentymät aiheuttavat harventumia ympäristöönsä. 8.3. Ferziger-Pericissä esitetään eräitä parempia tapoja soveltaa adaptiivisuutta. Kuvassa 8.15 esitetään hilan tihennys kaksinkertaiseksi. Menettelytapa on yksinkertaisinta toteuttaa lohkorajalla ja siinä voidaan hyödyntää haamukoppeja. Vielä parempi tapa on luopua hilaviivojen jatkuvuudesta kokonaan. Kuten aikaisemmin todettiin, lohkorajalla on mahdollista saavuttaa ainakin likimain globaali säilymisominaisuus, vaikka hilaviivat eivät olisi jatkuvia. Harventamalla hilaa tällä tavoin estetään esimerkiksi rajakerrostihentymien eteneminen kauas sellaiselle alueelle, missä niistä on vain haittaa. Tällä tavoin säästetään muistikapasiteettia ja parannetaan konvergenssia. Lisäksi tihentymät saattavat todella olla haitallisia diskretointitarkkuuden kannalta kaukana kiinteiltä pinnoilta, koska peräkkäisten laskentatilavuuksien ∆xi /∆xi+1 -suhde saattaa poiketa liiaksi ykkösestä (kts. peruskurssi). Vielä tehokkaampi tapa on jakaa laskentatilavuuksia paikallisesti kuten kuvassa 8.14. Ongelmana on, että alkuperäiseen rakenteelliseen hilaan liittyvä topologia häviää. Menetelmä vaatii erilaista tiedonhallintaa, joksi sopii eräänlainen puurakenne. Termit ’octree’ ja ’quadtree’ liittyvät tämänkaltaiseen adaptiivisuuteen. Puurakenne soveltuu myös hyvin monihila-algoritmiin. Erona edellä esitettyyn on se, että osa laskentatilavuuksista on ikään kuin valmiiksi seuraavalta hilatasolta eikä 8.3. RATKAISUN ADAPTIIVISUUS 179 Kuva 8.14: Paikallinen hilan tihentäminen rakenteellisella hilalla. niihin tarvitse interpoloida arvoja edelliseltä tasolta. Puurakenteisia hiloja voidaan pitää myös rajoitetussa mielessä rakenteettomina. Kuvan 8.14 hilatyypille voidaan soveltaa myös täysin rakenteetonta algoritmia, jolla tiedonhallinta ei perustu puurakenteeseen. Monihila-algoritmikin on silloin rakennettava toisin, agglomeraation avulla. Adaptiivisuus saadaan helpoiten toteutettua kolmioilla tai tetraedreillä. Kuvassa 8.16 on kaksi siipiprofiilia, joiden läheisyydessä kolmiointia on tihennetty. Kolmiointiin on kaksi perustapaa, etenevän rintaman menetelmä ja Delaunayn kolmiointi. Näillä voidaan toteuttaa perushila. Ratkaisun edetessä kolmioita voidaan jakaa paikallisesti kahtia jonkin sopivasti valitun kriteerin mukaan. Kriteerillä pyritään arvioimaan paikallista katkaisuvirhettä. Menetelmällä on mahdollista päästä niin pitkälle, että kitkattomalla virtauksella esiintyvät epäjatkuvuuskohdat (tiivistysaallot) 8.3. RATKAISUN ADAPTIIVISUUS 180 N5 N6 c6 P c1 N1 c5 c4 N4 c3 c2 N3 N2 Kuva 8.15: Tihennys rakenteellisella hilalla hoidetaan helpoiten lohkorajalla. Tihennys on mahdollista tehdä myös epäjatkuvalla tavalla. näkyvät käytännössäkin epäjatkuvuuskohtina. Rakenteettoman hilan adaptiivisuus on virtauslaskennassa voimakkaan tutkimuspanoksen kohteena. Vaikka rakenteetonta hilaa periaatteessa voidaan adaptoida miten tiheälle tasolle tahansa, käytännön raja tulee vastaan laskentatilavuuksien määrän kasvaessa. Erityisenä hankaluutena ovat rajakerrokset, joissa kolmioinnista aiheutuu suurempi katkaisuvirhe kuin rakenteellisella hilalla. Tämän vuoksi seinien lähellä pyritään yhdistämään nämä hilatyypit. Lupaavimmalta vaikuttava tekniikka on korvata kolmiot (tetraedrit) seinien läheisyydessä prismoilla. Toinen tapa on käyttää seinien lähellä heksaedrejä. 8.3. RATKAISUN ADAPTIIVISUUS Kuva 8.16: Rakenteettomaan hilaan adaptiivisuus liittyy luonnollisella tavalla. 181 8.3. RATKAISUN ADAPTIIVISUUS 182 • Reunaehtona kontrollitilavuusmenetelmässä on vuo. Vuon laskenta voidaan useimmiten laskentalohkon reunoilla tehdä samalla tavoin kuin sisäalueessa käyttämällä kahta haamukoppiriviä. • Haamukoppien avulla lohko liitetään naapurilohkoihin. • Joskus vuo lohkon reunalla kannattaa laskea eri tavoin kuin sisäalueessa. Esimerkkinä on vuo kiinteällä pinnalla. • Lohkorakenne antaa hyvän pohjan rinnakkaistamiselle. Rakenteeton hila on myös jaettava vyöhykkeisiin rinnakkaistusta varten. • Massansäilyminen voidaan toteuttaa lohkorajalla vaikka hilaviivat eivät olisi jatkuvia. • Rinnakkaistaminen voi perustua jaetun muistin koneella DOsilmukoiden pätkimiseen. Varsinainen massiivinen rinnakkaislaskenta hajautetun muistin koneella perustuu lohkojakoon ja viestinvälitykseen. • Laskennan nopeutuminen vakiolohkokoolla η= N 1+c • Laskennan nopeutuminen, kun tehtäväkoko on vakio η= N 1 + βN 1/3 • Geometrisella monihila-algoritmilla (GMG tai FAS) saadaan iteraatiokierrokset pysymään vakiona, vaikka tehtävän koko kasvaisikin. • Kahdella tasolla GMG-monihilamenetelmässä suoritetaan vain implisiittinen vaihe toisella tasolla käyttäen ykköstasolta siirrettyä residuaalia. Useammalla tasolla käytetään pakotefunktiota ja algoritmi on monimutkaisempi. • Kokenut virtauslaskija aloittaa harvalta tasolta ja käyttää alkuarvauksena tulosta seuraavalla tasolla (FMG). • Varsinainen adaptiivinen ratkaisu toteutetaan yleensä rakenteettomalla hilalla. Päivitetty 5.3.2014 183 9 Käyräviivainen laskentahila 9.1 Hilatyypit Erityisesti kokoonpuristumattomien ns. teollisuusprosessien virtauksien yhteydessä käytettiin pitkään karteesista tai muita suorakulmaisia laskentahiloja. Geometria otettiin kömpelöllä tavalla huomioon rajaamalla alueesta pois osia. Reunojen käsittelystä ei myöskään piitattu, vaan ne kuvattiin sahalaitoina, kuten kuvassa 9.1. Tällä tavoin ei tietenkään saavuteta mitään tarkkuutta seinän läheisyydessä. Seinämällä ja sen läheisyydessä olevalla rajakerroksella ei saa olla mitään merkitystä sen ilmiön kannalta, jota laskennassa pyritään saamaan esille kuvan 9.1 laskentaverkolla. Käyräviivaisella laskentahilalla (kuva 9.2) voidaan kuvata virtaus myös seinien lähellä. Rajakerrosta varten tulee kitkallisella virtauksella tehdä seinän läheisyydessä tihennys, joka riippuu rajakerroksen paksuudesta ja sitä kautta probleemaan liittyvästä globaalista Reynoldsin luvusta. Tämä hilatyyppi sopii monessa suhteessa hyvin virtauslaskentaan. Koska virtaus pyrkii olemaan enemmän tai vähemmän kiinteiden seinien suuntainen, se on myös hilaviivojen suuntainen. Tämä puolestaan näkyy pienempänä katkaisuvirheenä verrattuna kuvan 9.1 hilaan. Rajakerroksessa kopeista tulee hyvin litteitä, mutta likimain tiiliskivimäisiä. Kolmiota käytettäessä rakenteettomalla hilalla koppeja kuluu kahdessa dimensiossa kaksinkertainen määrä, jotta saataisiin sama tarkkuus kuin rakenteellisella hilalla. Tämän vuoksi seinien lähellä on rakenteettomalla hilalla käytettävä prismoja. Tällöinkin katkaisuvirhe tulee suuremmaksi kuin rakenteellisella hilalla. Aikaisemmin on useassa kohden tullut esille rakenteellisen hilan numeriikkaan, mukaan lukien monihila ja rinnakkaistaminen, liittyvä ohjelmoinnin helppous. Eräs tekijä on vielä jälkikäsittely ja tulosten tarkastelu. Rakenteellinen hila muodostaa hyvän pohjan tarkastella eräitä taseita ja myös ratkaisua pitkin vakiohilaviivaa. Rakenteettomalla hilalla tällaisia ei ole, vaan esitystavassa joudutaan aina interpoloimaan. Mutta kuten jo on mainit- 9.1. HILATYYPIT 184 Kuva 9.1: Yritys kuvata karteesisella hilalla vinoa seinää johtaa porrasmaiseen laitaan. Kuva 9.2: Käyräviivaisella hilalla saadaan rakenteen muoto tarkasti. Yllä olevassa tapauksessa alueen kulmikkuus aiheuttaa epätasaisuutta hilaviivoihin. Se poistuisi tässä tapauksessa kaksilohkoisella hilalla, jossa ylös kulman taakse jäävä alue on omassa lohkossaan. tu, hilangeneroinnin automatisointi ja adaptiivisuus ovat puolestaan rakenteettoman hilan etuja. Puurakenne on tuonut takaisin periaatteellisen mahdollisuuden käyttää kuvan 9.1 kaltaisia laskentaverkkoja myös vinoilla seinillä. Tällöin hilaa voidaan tihentää seinän lähellä niin paljon, että haluttu tarkkuus saavutetaan. Ongelmaksi tulee virtaus suurella globaalilla Reynoldsin luvulla, jolloin on tarve saada pinnan lähelle korkeudeltaan hyvin ohuita koppeja. Puurakenteella niistä tulee tällöin myös pituudeltaan pieniä, mikä johtaa mielettömiin laskentatilavuusmääriin. Tämän vuoksi puurakenteella ei voida hoitaa rajakerrostihentymiä, vaan ne on kuvattava käyräviivaisella hilalla. Aikaisemmin pyrittiin käyttämään suorakulmaisia käyräviivaisia hiloja (esim. Patankar). Tämä yksinkertaistaa kitkatermiä ja painekorjausyhtälöä, mutta itse hi- 9.2. HILANGENEROINTI 185 langenerointi tulee hankalaksi, minkä vuoksi tapaa ei enää juuri käytetä. Yleisessä käyräviivaisessa tapauksessa kitkaton osa vuosta ei juuri monimutkaistu verrattuna suorakulmaiseen käyräviivaiseen hilaan. Viskoosi osa tulee monimutkaisemmaksi, mutta tällä ei ole juuri merkitystä. Hankalin asia on itse painekorjausyhtälö, joka täydellisenä tulisi täydemmäksi, koska ’väli-ilmansuunnissa’ olevat nurkkapaineiden korjaukset p′i±1,j±1 tulisivat mukaan. Nämä yleensä pudotetaan pois, mutta stabiilisuuden kustannuksella, mikä johtaa alentuneeseen alirelaksaatiokertoimeen αp . Kontrollitilavuusmenetelmällä kitkattoman vuon laskenta suoritetaan aina samalla edempänä esitettävällä tavalla. Sama menettely voidaan ottaa käyttöön rakenteettomalla hilalla, jos muuttujien arvot rajapinnoille interpoloidaan MUSCLkaavaa yleisemmällä lausekkeella. Kitkatermi voidaan diskretoida useammalla tavalla, mutta kuten peruskurssilla todettiin, kitkatermin diskretointi ei tuota periaatteellisia ongelmia virtausratkaisun yhteydessä. 9.2 Hilangenerointi Laskentahilan generointi on muodostunut omaksi tieteenlajikseen. Hyvää, nopeaa ja robustia rakenteellisen hilan generointimenetelmää ei ole. Ensimmäisenä tehtävänä on pintojen luonti, joka on tehtävä myös rakenteettomalla hilalla. Aiemmin on mainittu rakenteettoman hilan generointimenetelmät: Delaunayn kolmiointi ja etenevän rintaman menetelmä. Rakenteellisella hilalla nopein tapa on interpoloida avaruushila seinillä olevasta hilajaosta. Menetelmää sanotaan algebralliseksi. Yleisimmin käytetty algebrallinen menetelmä on ns. transfiniitti interpolointi. Tapa on nopea, mutta sillä ei voida välttää hilaviivojen menemistä ristiin vähänkään monimutkaisemmissa tapauksissa. Tämän tuloksena syntyy negatiivisia laskentakoppeja ja pinta-aloja, joiden vuoksi laskenta kaatuu. Differentiaaliyhtälöiden ratkaisuun perustuvilla menetelmillä voidaan generoida hiloja, jotka seuraavat monimutkaisiakin pinnanmuotoja juoheasti. Hilapinnat ovat tällöin differentiaaliyhtälön ratkaisun tasa-arvopintoja. Menetelmiä on kolmea päätyyppiä: elliptiset, paraboliset ja hyperboliset. Yleisimmin käytetty menetelmä on elliptinen. Parabolisen ja hyperbolisen menetelmän etuna on se, ettei pintahilaa tarvitse antaa kaikilla aluetta rajoittavilla pinnoilla. Niitä voidaan käyttää vain ns. ulkopuolisten virtausten laskennassa, jolloin vapaan virtauksen reunan tarkalla 9.3. NOPEUSKOMPONENTTIEN VALINTA JA KOORDINAATISTOMUUNNOS 186 sijainnilla ei ole suurta merkitystä. Yleensä differentiaaliyhtälöihin pohjautuvat menetelmät tuottavat lopulta laskentaan kelpaavan hilan. Tämän muoto saattaa olla kuitenkin pahoin vääristynyt. Parempi keino on interpoloida ensin mahdollisimman hyvä hila ja sen jälkeen ajaa se muutaman kerran elliptisen ratkaisun läpi. Tässä tavassa ei pyritä siihen, että saataisiin hila elliptisen yhtälön konvergoituneena ratkaisuna, vaan elliptisen yhtälön yksi iteraatiokierros toimii hilan tasoittajana. Tasoittajia voi olla monenlaisia ja niiden käyttö vaatii kokemusta, kuten hilangenerointi yleensäkin. Edellä mainittujen tapojen lisäksi on olemassa ja jatkuvasti kehitetään uusia hilangenerointimenetelmiä. Rakenteellisella verkolla juuri hilangenerointi muodostaa pääosan simulointiin kuluvasta ajasta. Hilangenerointi alkaa aina pintojen luomisella. Koko vaihetta nimitetään esikäsittelyksi. Sitä varten on olemassa kaupallisia ohjelmia (esim. IGG, GRIDPRO). Kaupallisissa virtausratkaisijoissa on luonnollisesti olemassa esikäsittelijä, jonka taso saattaa olla varsin vaihteleva. 9.3 Nopeuskomponenttien valinta ja koordinaatistomuunnos Nopeuskomponentit, joita laskennassa käytetään, voidaan valita monella tavalla. Suorakulmaisilla hiloilla on perinteisesti käytetty nopeuskomponentteja, jotka ovat hilaviivojen suuntaisia (kovariantit komponentit). Tällöin kyseiset komponentit ovat myös kohtisuorassa laskentatilavuuksien pintoja vastaan. Peruskurssilla tämä kohtisuora nopeuskomponentti nimettiin skaalatuksi kontravariantiksi nopeudeksi, joka on se nopeus, jolla konvektio tapahtuu. Kirjallisuudessa nopeutta nimitetään usein myös yksinkertaisesti kontravariantiksi nopeudeksi (Ferziger-Peric) tai konvektionopeudeksi. Yleisessä käyräviivaisessa tapauksessa hilaan liittyviä nopeuskomponentteja on kolme: karteesiset, kovariantit ja kontravariantit komponentit. Kaikkia näitä on käytetty painekorjausmenetelmän yhteydessä. Kokoonpuristuvan virtauksen ratkaisussa käytetään vain karteesisia komponentteja. Kovariantit komponentit ovat hilan määrittelemään koordinaatistoon liittyvät varsinaiset, siis hilaviivojen suuntaiset, nopeuskomponentit. Näiden käyttö on kaikkein hankalinta painekorjausmenetelmän yhteydessä, mutta tällaisiakin yrityksiä on nähty. Kontravariantti komponentti 9.3. NOPEUSKOMPONENTTIEN VALINTA JA KOORDINAATISTOMUUNNOS a) b) 187 c) Kuva 9.3: Käyräviivaisella hilalla olevia mahdollisia nopeuskomponentteja: (a) limitetty hila ja kontravariantit nopeuskomponentit, (b) limitetty hila ja karteesiset nopeuskomponentit, (c) tavanomainen hila ja karteesiset nopeuskomponentit. on samalla konvektionopeus ja erityisesti limitetyllä hilalla (kuva 9.3a) sen käyttö on kätevähköä. Painekorjausyhtälön jälkeen voidaan suoraan korjata kontravariantteja nopeuksia samantapaisesta yhtälöstä kuin karteesisessa tai suorakulmaisessa tapauksessa. Tavanomaisella hilalla (kuva 9.3c) tämä ei ole aivan yhtä yksinkertaista, koska viime kädessä halutaan korjata kopin keskellä olevia nopeuskomponentteja eikä seinillä olevia. Keskipisteissä lausutuille komponenteille ainoa järkevä valinta onkin karteesinen. Tällöin painekorjauksen jälkeen voidaan korjata kontravariantit ’pintanopeudet’ ja niiden avulla karteesiset. Toinen vaihtoehto on korjata suoraan karteesisia. Tämä ei ole aivan suoraviivaista, koska paineita korjattavien keskipisteissä lausuttujen karteesisten nopeuskomponenttien kahden puolen ei tunneta, vaan ne on laskettava keskiarvoina hilapistearvoista. Tällöin reunat saattavat olla ongelmallisia jos haamukoppien painekorjauksia ei ole ratkaistu. Yleisten kontravarianttien komponenttien lisäksi käytetään jonkin verran sylinterija pallokoordinaatistoja ja niiden määrittelemiä komponentteja. Pääsyy, miksi tässä ei ole suurta järkeä, on yhtälöiden monimutkaisuus. Diskretoituihin yhtälöihin tulee lähdetermejä, joiden mallinnus tuo hankaluuksia. Ainoa keino, jolla yhtälöistä tulee yksinkertaisia ja säilymismuotoisia (ei synny lähdetermejä), on käyttää karteesisia nopeuskomponentteja kaikissa tapauksissa. Myös sylinterikoordinaatiston tapauksessa kannattaa tehdä näin, vaikka katkaisuvirheestä tulee suurempi kuin käytettäessä kontravariantteja komponentteja (on muistettava, että suorakulmaisella hilalla kontravariantit ovat samoja kuin kovariantit komponentit). Katkaisuvirhe saataisiin pienemmäksi virtauksen hilaviivoja seuraavan luonteen vuoksi käyttämällä MUSCL-kaavassa sylinterikoordinaatiston nopeuskomponentteja (siis kovariantte- 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 188 ξ2 x2 N E N NW ∆ξ 1 j +1 E P ∆ξ 2 W j S ξ1 SE S W i2 j− 1 i1 i +1 i i−1 x1 Kuva 9.4: Koordinaatistomuunnoksessa hilaviivat muodostavat uuden koordinaatiston, jossa hilaviivat ovat ξi = vakio käyriä. ja) ja muuntamalla ne interpoloinnin jälkeen takaisin karteesisiksi. Operaatio ei ole tarpeellinen riittävän tiheällä hilalla. Kummallakin interpolointitavalla katkaisuvirhe on toista kertalukua, mutta hyvin harvalla hilalla karteesisista komponenteista saattaa syntyä merkittävän kokoinen virhe. Peruskurssilla todettiin rakenteelliseen laskentahilaan liittyvän myös koordinaatistomuunnoksen. Periaatteessa yhtälöt voidaan muuntaa differentiaaliyhtälöiksi tässä koordinaatistossa ja diskretoida sen jälkeen. Operaatiossa ei ole mitään järkeä, koska sama asia voidaan tehdä luotettavammin suoraan äärellisellä tilavuusalkiolla. Koordinaatistomuunnoskeinossa on yhtälöihin tulevien symbolien diskretoinnissa oltava tarkkana, jotta yhtälöillä olisi säilymisominaisuus. Ja tuloksena tällaisesta diskretoinnista on kuitenkin kontrollitilavuusmenetelmä. Ferziger-Pericissä kerrataan lyhyesti yhtälöiden muuntamista. Jostain syystä tavaksi on esimerkiksi ’Numerical Heat Transfer’-lehdessä tullut esittää yhtälöt muunnetussa muodossa. Koordinaatistomuunnoksilla on varsinaista käyttöä vain laskentahilan generoinnissa ja eräissä teoreettisissa tarkasteluissa. 9.4 Kontrollitilavuusmenetelmä käyräviivaisella hilalla Käyräviivaisella laskentahilalla yhtälöiden diskretointi perustuu samaan integraalimuotoiseen yhtälöön kuin aikaisemmin esitetty karteesisen hilan ratkaisu. Koska skalaariyhtälöt voidaan käsitellä samaan tapaan kuin liikemääräyhtälön yksittäiset 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 189 η N n ne """""""""""""""""" NW y """""""""""""""""" """""""""""""""""" """""""""""""""""" n nw """""""""""""""""" """""""""""""""""" e """""""""""""""""" n """""""""""""""""" """""""""""""""""" n P """""""""""""""""" """""""""""""""""" w """""""""""""""""" W """""""""""""""""" s """""""""""""""""" se """""""""""""""""" """""""""""""""""" s w """""""""""""""""" n ξ E n SE S j x i Kuva 9.5: Kaksidimensioinen kontrollitilavuus ilmansuuntamerkinnöillä. komponentit, lähdetään tässä x-suuntaisen liikemääräyhtälön (1.21) Z Z Z ∂ ρudV + ρuV~ · ~ndS + pnx dS = ∂t V S S Z Z ∂u ∂u ∂u µ (nx + ny + nz )dS + ρbx dV ∂x ∂y ∂z S V (9.1) diskretoinnista. Pintaintegraalit voidaan hajottaa summaksi laskentatilavuuden kaikkien seinien yli X d(ρu)i X + (ρuV~ · ~nS)j + (pnx S)j = dt S S X ∂u ∂u ∂u + ny + nz )j + Vi (ρbx )i Sj µj (nx ∂x ∂y ∂z S Vi (9.2) missä Vi on kopin tilavuus, Sj seinämän pinta-ala ja ~n = nx~i + ny~j + nz~k pinnan yksikkönormaali. Summaus tapahtuu kopin kaikkien pintojen yli. On huomattava, että summauksessa on aina ’+’-merkki. Karteesisessa tapauksessa lausekkeeseen tuli aina vuoarvojen erotus. Nyt negatiivisen suunnan hoitaa pinnan yksikkönormaali, joka osoittaa aina tilavuudesta ulospäin (kuva 9.5). Yhtälö voidaan kirjoittaa kopin pinnoilla olevan kitkattoman vuon Fˆ ja kitkallisen vuon Fˆv avulla muotoon Vi X d(ρu)i =− Sj (Fˆ − Fˆv )j + Vi (ρbx )i dt S (9.3) missä kitkaton osuus vuosta on S Fˆ = SρuV~ · ~n + Sx p = mu ˙ + Snx p (9.4) ja massavirta pinnan läpi m ˙ = SρV~ · ~n = Sρ¯ u. Näin määritelty suure u¯ = ~n · V~ = nx u + ny v + nz w (9.5) 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 190 on skaalattu kontravariantti nopeus eli nopeuden komponentti kopin pintaa vasten kohtisuorassa suunnassa. Suuretta nimitetään myös konvektionopeudeksi. Yhtälöstä (9.5) saatava nopeus on keskeinen virtausyhtälöiden ratkaisussa. Kaikissa yhtälöissä kaikilla pinnoilla pätee sama yhteys (9.5) konvektionopeudelle. Periaatteessa painekorjauksessa korjataan juuri tätä nopeutta, vaikka itse korjaus voidaan välillisesti kohdistaa suoraan karteesisiin nopeuskomponentteihin. Samaa nopeutta käytetään myös implisiittisessä vaiheessa yhtälön kertoimien laskentaan. Massataseyhtälössä käytetään niinikään samaa nopeutta, johon analogisesti karteesisen hilan ratkaisun kanssa on lisättävä paineesta riippuva vaimennustermi. Nopeutta u¯ käytettäessä konvektiotermin käsittely säilyy muodollisesti samana kuin karteesisessa tapauksessakin. Yllä olevissa yhtälöissä (9.1)-(9.5) on oleellista, että ne pätevät kaikenmuotoisille kontrollitilavuuksille, joiden pintojen voidaan katsoa koostuvan tasoista. Summaus yhtälössä (9.3) ulotetaan vain kaikkien tilavuuden pintojen yli. Joskus taso-käsitettä on laajennettava. Esimerkiksi heksaedreillä pinnat ovat topologialtaan nelikulmioita, jotka yleisessä tapauksessa eivät ole tasoja. Ne voidaan kuitenkin jakaa lävistäjällään kahdeksi kolmioksi, jotka ovat tasoja. Siten tavallinen rakenteellinen hilakin kolmidimensioisessa tapauksessa tavallaan perustuu vuon laskentaan kolmioiden läpi. Painetermi yllä lausuttiin pinta-alavektorin ~ = Sx~i + Sy~j + Sz~k = S(nx~i + ny~j + nz~k) S (9.6) avulla kahdella tavalla, joista ehkä laskennallisesti selkeämpi on Snx p Tällöin pinta-alalla on selkeästi määritelty itseisarvo S, jolla voidaan ohjelmassa kertoa koko vuotermi. Tällöin kuluu yksi muistipaikka hukkaan, koska tarvitaan sekä pinnan normaali ~n että skalaari S. Tällä ei ole kuitenkaan suurta merkitystä. Koska koppia kohden on rakenteellisella hilalla kolme pintaa, saadaan tällöin 12 pintasuuretta ja kopin tilavuus Vi eli yhteensä 13 talletettavaa geometrista suuretta laskentatilavuutta kohden. Muistitilaa voidaan säästää laskenta-ajan kustannuksella tallettamalla vain kopin kärkien koordinaatit ja laskemalla geometriset suureet uudestaan joka kierroksella. Tämä tapa on yleisesti käytetty rakenteettomalla hilalla. 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 191 Kitkaton vuo y-suuntaiselle liikemäärälle on S Fˆ = Sρv V~ · ~n + Sy p = mv ˙ + Sny p (9.7) Ero x-suuntaiseen vuohon näkyy konvektiotermissä ja painegradientissa. Skalaarisuureilla φ vuo on muotoa mφ. ˙ Erityisesti käyräviivaisella hilalla, missä massavirran m ˙ laskeminen on hiukan monimutkaisempaa kuin karteesisessa tapauksessa, massavirta on hyödyllinen käsite. Sen avulla saadaan kaikkien yhtälöiden vuot samaan muotoon. Kuten karteesisen tapauksen yhteydessä tuotiin esille, massavirrassa voidaan käyttää paineesta riippuvaa vaimennustermiä, mutta se ei ole välttämätöntä muualla kuin massataseessa. Diffuusiovuon laskenta on hiukan monimutkaisempaa kuin karteesisessa tapauksessa. Kokoonpuristumattomassa tapauksessa x-suuntaisen liikemäärän diffuusiovuo on ∂u ∂u ∂u + ny + nz ) (9.8) ∂x ∂y ∂z Jotta yllä olevaan muotoon päästään on lisäksi oletettava viskositeetti vakioksi. S Fˆv = Sµ(nx Yleisessä tapauksessa yhtälössä (1.16) diffuusiovuo on monimutkaisempi, mutta oleellista on vain se, että diffuusiovuota varten tarvitaan nopeuden derivaatat laskentakopin seinällä. Nämä voidaan laskea keskiarvona kopin keskellä olevista derivaattojen arvoista, kuten Ferziger-Pericissä on tehty. Tämä tapa johtaa laaja-alaisiin laskentamolekyyleihin diffuusiovuon osalta, mikä on todettu haitalliseksi mm. konvergenssin kannalta. Kuten jo peruskurssilla oli esillä, kompaktimpaan esitysmuotoon päästään laskemalla derivaatta suoraan kopin seinälle. Tämä voidaan tehdä soveltamalla Gaussin lausetta limitetylle tilavuudelle Vi+1/2 , joka riittävällä tarkkuudella voidaan laskea keskiarvona tilavuuksista Vi ja Vi+1 . Gaussin lauseen avulla Z Vi +1/2 ∂φ ∂φ dV ≈ Vi+1/2 ∂x ∂x = i+1/2 Z S φ~i · ~ndS ≈ X Snx φ (9.9) S missä summaus tapahtuu limitetyn aputilavuuden seinien yli. Yhtälöstä (9.9) saadaan ∂φ ∂x i+1/2 ≈ 1 Vi+1/2 X Snx φ (9.10) S Tätä yhtälöä sovellettaessa tarvitaan geometrista tietoa limitetylle kopille. Tämä voidaan ottaa keskiarvona rinnakkaisista kopeista. Esimerkiksi kuvan 9.6 tilanteessa tarvitaan pinta-alat ja pinnan normaalit pinnoilla (i, j), (i+1, j) ja (i+1/2, j ±1/2). 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 192 i+1,j+1 i,j+1 i,j i+1/2,j i+1,j Kuva 9.6: Laskettaessa derivaattaa pinnalla i + 1/2 sovelletaan Gaussin lausetta limitetylle aputilavuudelle. Pintaintegraalissa tarvitaan suureiden arvot ristillä merkityissä kohdissa. Ratkaistavat suureet tunnetaan noodipisteissä (ympyrät) ja geometriaan liittyvät pintasuureet laskentakopin pinnoilla (ehyt viiva). Esimerkiksi pinta-ala voidaan laskea seuraavasti olemassa olevasta geometrisesta tiedosta: 1 Si+1/2,j+1/2 = (Si,j+1/2 + Si+1,j+1/2 ) 2 (9.11) Vastaavia yhteyksiä voidaan käyttää myös pinnan normaalin komponenteille. Suureen φ arvo tiedetään hilapisteissä. Limitetyn kopin kaksi pintaa kulkee pisteiden (i, j), (i + 1, j) kautta, joten esimerkiksi nopeudet näissä pisteissä tunnetaan. Pinnoilla (i + 1/2, j ± 1/2) ratkaistavat suureet on laskettava keskiarvona pisteiden (i, j), (i + 1, j), (i, j + 1) ja (i + 1, j + 1) arvoista (kuva 9.6). Kaksidimensioisessa tapauksessa derivaatta lasketaan tällöin kuuden ja kolmidimensioisessa tapauksessa 18 hilapisteen avulla. Kokonaisuudessaan laskentamolekyyliin (diffuusiovoiden taseeseen) tulee yhdeksän (27) noodia. Karteesisella hilalla selvittiin viiden (seitsemän) laskentakopin arvoilla. Laskentamolekyylin koko vaikuttaa ainakin konvergenssiin. Jos derivaatat laskettaisiin hilapisteissä eikä pinnalla ja sitten keskiarvotettaisiin kopin pinnoille, laskentamolekyyleistä tulisi vieläkin laajempia. Jos yhtälöä (9.10) sovelletaan suorakulmaiselle, esimerkiksi karteesiselle las- 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 193 6 5 7 8 6 7 5 6 7 8 2 1 4 2 1 2 3 3 3 5 8 4 1 4 Kuva 9.7: Tiiliskivimäisellä laskentakopilla voi olla degeneroituneita pintoja, jotka kontrollitilavuusmenetelmää käytettäessä eivät pilaa ratkaisua. kentahilalle, diffuusiovuoksi saataisiin u-nopeudelle ui+1 − ui Fˆv,i+1/2 = (Sµ)i+1/2 ∆xi+1/2 (9.12) missä ∆xi+1/2 on koppien Vi,j ja Vi+1,j keskipisteiden etäisyys. Suorakulmaisen hilan etu on tässä tapauksessa siinä, että ristikkäistermit putoavat pois. Implisiittinen vaihe voidaan diffuusiovuolla rakentaa siten, että ’väli-ilmansuunnat’ pudotetaan pois. Tämä tarkoittaa sitä, että implisiittisessä vaiheessa approksimoidaan diffuusiovuota lausekkeella (9.12) vaikka se eksplisiittisessä vaiheessa (residuaalin laskennassa) lasketaankin täydellisempänä. Kuten peruskurssilla esitettiin, diffuusiovuon laskentaan liittyy myös tarkkuuskysymyksiä silloin kun hila on epätasavälinen. Monidimensioisessa tapauksessa tämä vielä korostuu, koska hila voi olla myös muodoltaan vääristynyt ja laskentakopeilla voi olla degeneroituneita pintoja kuten kuvassa 9.7. Tähän epätarkkuuteen on viime vuosina kiinnitetty enemmän huomiota, mutta peruskysymykset ovat vielä ratkaisematta. Ferziger-Pericissä pohditaan diffuusion tarkempaa laskentaa, mutta tämänhetkinen käsitys on, etteivät kyseiset keinot ole tarpeellisia eivätkä edes paranna asiaa ongelmatilanteissa. Paras keino on pyrkiä käyttämään mahdollisimman tasaisia laskentahiloja ja välttää nopeaa koppikoon kasvua. Yhtälössä (9.3) on vielä lähdetermi (Vi ρbx )i . Tämä voidaan lausua noodin i suureiden avulla eikä se yleensä aiheuta ongelmia. Poikkeuksena on ehkä nostetermi, joka tietyissä tilanteissa saattaa vaatia erikoiskäsittelyä, jotta laskenta konvergoisi. Lähdetermi linearisoidaan aina siten, että lävistäjäalkio implisiittisen vaiheen kerroinmatriisissa kasvaa. Ferziger-Pericissä käsitellään myös paine lähdeterminä, missä ei ole mitään järkeä. Ensimmäisessä F-P:n esittämässä tavassa tosin päädytään juuri edellä esitettyyn paineen laskentaan. Toisessakin tavassa käy täs- 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 194 mälleen samalla tavoin, jos paineen derivaatat lasketaan Gaussin lauseen avulla. Jos ne lasketaan jollain muulla tavoin päädytään liikemääräyhtälön diskretoinnissa epäkonservatiiviseen muotoon. Paras tapa on siis käsitellä paine pintaintegraalin alla vuoterminä eikä keinotekoisena lähdeterminä. Lähdetermiajattelu on pesiytynyt kokoonpuristumattoman virtausratkaisun maailmaan tarpeesta esittää kaikki yhtälöt samalla malliyhtälöllä (1.3). Liikemääräyhtälö muissa suunnissa saadaan samalla tavoin kuin yllä x-suuntainen liikemääräyhtälökin. Nopeuskomponentti ja pinnan normaalin komponentti paineen kertojana on korvattava kyseisillä suureilla ui ja nxi . Myös skalaariyhtälöt voidaan käsitellä samalla tavoin jättämällä painetermi pois yhtälöstä (9.4). Energiayhtälön tapauksessa taas joudutaan lisäämään vuotermiin paine, jolloin tosiasiallisesti saadaan entalpia vuotermiin laskettaessa sisäenergialle kirjoitettua yhtälöä. Näiden termien diskretointi tapahtuu samalla tavoin kuin edellä on esitetty liikemääräyhtälölle. Yhtälöiden (esimerkkinä x-suuntainen liikemääräyhtälö) ratkaisu voidaan kokonaisuudessaan esittää nyt seuraavasti: 1. Lasketaan koppien pinnoilla konvektionopeus. Esimerkiksi pinnalla i + 1/2 ui+1 + ui vi+1 + vi wi+1 + wi u¯i+1/2 = nx,i+1/2 + ny,i+1/2 + nz,i+1/2 (9.13) 2 2 2 Nopeudet pinnalla voidaan siis laskea keskiarvona hilapistearvoista ja vaimennustermiä ei tarvita. 2. Lasketaan kitkaton vuo yhtälöstä Fˆ = (ρ¯ u)i+1/2 ui+1/2 + (nx p)i+1/2 (9.14) Tässä tiheys ja paine voidaan laskea keskiarvoina hilapistearvoista, konvektionopeus saadaan yhtälöstä (9.13) ja konvektoituva nopeus ui+1/2 MUSCLkaavasta. Implementoinnissa kannattaa käyttää MAX-funktiota. Vuon laskennassa on huomattava, että ne lasketaan kaikille pinnoille ja määritellään positiivisiksi, kun vuo on nousevan indeksin suuntaan. Tällöin merkki on otettava residuaalin laskennassa huomioon. Yhtälössä (9.3) vuon merkki määräytyi muodollisesti pinta-alavektorin suunnan mukaan. 3. Lasketaan kitkallinen vuo yhtälöstä (9.8), lisätään se vuon lausekkeeseen ja kerrotaan koko vuon lauseke pinta-alalla Si+1/2 . Käytännön laskennassa kannattaa laskea kitkallinen ja kitkaton vuo omassa aliohjelmassaan ja summata 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 195 samaan muistipaikkaan. Vuot lasketaan ensin esimerkiksi i-suuntaa vastaan kohtisuorassa suunnassa, sen jälkeen j-suuntaa ja lopuksi k-suuntaa vasten kohtisuorassa suunnassa. 4. Jokaisen suunnan jälkeen vuoerotukset koppien pinnoilla kyseisessä suunnassa summataan residuaaliin Riu = − X S Sj (Fˆ − Fˆv )j (9.15) 5. Lisätään residuaaliin mahdollinen lähdetermi. 6. Implisiittistä vaihetta varten linearisoidaan vuot kopin rajapinnoilla käyttäen ensimmäisen kertaluvun approksimaatiota konvektiotermeille n+1 n Fˆi+1/2 = Fˆi+1/2 + n ∂ Fˆi+1/2 n ∆u = Fˆi+1/2 + [max(m ˙ i+1/2 , 0) + (Sµ/∆ξ)i+1/2]∆ui ∂u − [max(−m ˙ i+1/2 , 0) + (Sµ/∆ξ)i+1/2 ]∆ui+1(9.16) missä on käytetty diffuusiolle yksinkertaistettua linearisointia (9.12). Rinnakkaisten hilapisteiden välistä etäisyyttä i-suunnassa on merkitty ∆ξ:llä. Muissa suunnissa tehdään vastaava linearisointi. 7. Suorittamalla linearisoinnit ja keräämällä implisiittisen vaiheen kertoimet kasaan saadaan ai,i−1 ≡ AW,i = ai,i+1 ≡ AE,i = ai,i−imax ≡ AS,i = ai,i+imax ≡ AW,i = aii ≡ AP,i = + + = Sµ − max(m ˙ i−1/2 , 0) − ∆ξ i−1/2 Sµ − max(−m ˙ i+1/2 , 0) − ∆ξ i+1/2 Sµ − max(m ˙ j−1/2 , 0) − ∆η j−1/2 Sµ − max(−m ˙ j+1/2 , 0) − ∆η j+1/2 Vi ρi + max(m ˙ i+1/2 , 0) + max(−m ˙ i−1/2 , 0) ∆t max(m ˙ , 0) + max(−m ˙ j−1/2 , 0) j+1/2 Sµ Sµ Sµ Sµ + + + ∆ξ i−1/2 ∆ξ i+1/2 ∆η j−1/2 ∆η j+1/2 Vi ρi − AW,i − AE,i − AN,i − AS,i (9.17) ∆t missä ∆η on koppien keskipisteiden etäisyys j-suunnassa ja lävistäjäalkio AP on jälleen syytä laskea muiden kertoimien avulla, jotta Scarboroughin kriteeri täyttyisi. 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 196 8. Suoritetaan implisiittinen vaihe ja päivitetään nopeudet. Verrattaessa nyt residuaalin laskentaa karteesisen hilan tapaukseen ja yllä olevaa yhtälöä yhtälöön (6.13) havaitaan menetelmän oleellisilta osiltaan pysyneen samana. Muutosta on tullut konvektionopeuden laskentaan, paine on kerrottava pinnan komponentilla nxi ja kitkatermi on monimutkaistunut. Implisiittinen vaihe on muodollisestikin ennallaan, kun kitkatermin ∆xi korvattiin yhtälössä (9.17) koppien keskipisteiden etäisyyksillä. Tässä näkyy kontrollitilavuusmenetelmän yksinkertaisuus rakenteellisessa hilassa käytettäessä karteesisia nopeuskomponentteja. Oikeastaan mikään oleellinen ei muutu monimutkaisemmaksi, vaan pikemminkin yksinkertaistuu. Karteesisella hilalla vuo jouduttiin määrittelemään erilaiseksi x- ja ysuunnissa. Nyt selvitään muodollisesti yhdellä ja samalla lausekkeella. Ero vuohon tulee geometriatietojen kautta. Voidaan paradoksaalisesti todeta, että laskentarutiinit lyhenevät, kun yleinen käyräviivainen laskentahila on käytössä. Tavallaan siis karteesinenkin laskenta kannattaa tehdä niin. Todellisuudessa geometrian käsittely toki monimutkaistaa tilannetta esimerkiksi syöttötietojen vuoksi, mutta ei varsinaisten laskentarutiinien osalta. Kontrollitilavuusmenetelmä säilyy myös muodollisesti ennallaan sovellettaessa sitä rakenteettomille hiloille. Tästä menettelytavasta Ferziger-Peric käyttää Patankarin käyttöönottamaa nimitystä ’kontrollitilavuusperusteinen elementtimenetelmä’, missä elementtimenetelmä viittaa enemmän rakenteettomaan hilaan kuin itse yhtälöiden diskretointiin. Yleensä puhutaan vain rakenteettoman hilan menetelmistä. Kaupallisiin ohjelmiin on viime vuosina tullut perinteisten rinnalle ’UNS’versiot (Unstructured Navier-Stokes), jolla viitataan rakenteettomaan hilaan. Yleisin tapa laskea rakenteettomalla hilalla on kärkipisteisiin perustuva. Syy tähän on hämärän peitossa, koska myös rakenteettomalla hilalla ratkaistava suure voidaan sijoittaa laskentatilavuuden keskelle. Eräissä kaupallisissa ohjelmissa käytetään keskipistesijaintia. Kärkipisteen ympärille kontrollitilavuus voidaan määritellä useallakin tavalla, joista kuvan 9.8 esittämä on yleisin. Vuot joudutaan laskemaan jokaiselle kontrollitilavuuden pinnan osalle erikseen, joten kuvan 9.8 tapauksessa on laskettava 10 kappaletta vuotermejä. Ne on summattava samalla kertaa pisteen P ja pisteiden Ni residuaaleihin. Implisiittisen vaiheen kertoimet voidaan laskea samalla tavoin kuin edellä, mutta matriisista ei tule nauhamatriisia, mikä hankaloit- 9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA 197 N3 Kolmio elementit Kontrolli tilavuus c4 c5 N2 c3 c6 N4 c2 c7 P c1 c8 c9 N5 c1 0 N1 Kuva 9.8: Rakenteettomalla hilalla kontrollitilavuus voidaan asettaa esimerkiksi kolmioiden kärkipisteiden ympärille. taa sen ratkaisemista. Mikäli käytettäisiin keskeisdifferenssiä vastaavaa menettelyä, voitaisiin vuon laskennassa tarvittavat pinta-arvot saada lineaarisella interpoloinnilla kärkipisteiden tunnetuista arvoista. Nykyisin lienee yleisempää käyttää tässäkin yleistettyä MUSCL-interpolointia, jossa pinnalla olevat arvot saadaan käyttämällä noodipistearvoja sekä niiden avulla laskettuja gradientteja. Painottamalla gradientteja sopivasti ja käyttäen pinnan etäisyyttä noodiarvoista, saadaan MUSCL-kaavaa vastaava yhteys vektorimuodossa. Myös vuon rajoittaminen on mahdollista tällä tavoin. Diffuusiovuon laskenta voidaan hoitaa samalla tavoin kuin rakenteellisessa tapauksessa eikä sen laskenta oikeastaan ole rakenteettomalla hilalla monimutkaisempaa. Rakenteettomalla hilalla saadaan laaja-alaisempia laskentamolekyylejä kuin rakenteellisella, mikä vaikuttaa konvergenssiin ja ilmeisesti ainakin joissakin tapauksissa myös tuloksen tasaisuuteen. 9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA 198 9.5 Painekorjaus käyräviivaisella hilalla Painekorjausyhtälön tarkka johto veisi täydempään matriisiin kuin karteesisessa tapauksessa. Mikäli hilaviivojen välinen kulma ei poikkea liiaksi kohtisuorasta suunnasta, voidaan käyttää samaa painekorjausyhtälöä kuin karteesisessa tapauksessa. Poikkeama voi olla jopa 45◦ ja ilmeisesti paikallisesti suurempikin. Poikkeama saattaa johtaa alirelaksaatiokertoimen αP pienenemiseen, mutta tähän vaikuttavat monet muutkin tekijät. Painekorjausyhtälön johtoa käyräviivaisessa tapauksessa voidaan pohtia monesta lähtökohdasta. Oleellinen asia on havainto, että pintaa vasten kohtisuorassa suunnassa toteutuu samanlainen nopeuden ja painegradientin välinen kytkentä kuin karteesisella hilalla. Gaussin lauseen avulla voidaan liikemääräyhtälöstä saada seuraava muoto nopeuskorjaukselle x-suunnassa u′i = − Vi ∂p AP,i ∂x (9.18) Ottamalla tästä keskiarvo rinnakkaisen laskentatilavuuden kanssa saadaan approksimaatio nopeuskorjaukselle seinällä i + 1/2. Keskiarvossa muutetaan paineen xsuuntaisten derivaattojen tilalle paineen derivaatta kopin pinnalla Vi u′i+ 1 = − ¯ 2 AP,i+ 1 2 ∂p ∂x ! (9.19) i+ 21 Stabiilein laskentatapa kertoimelle AP on 1 A¯P,i+ 1 2 1 = 2 1 1 + AP,i AP,i+1 ! (9.20) mutta säännöllisillä hiloilla kurssikoodissa käytetty keskiarvokin on riittävä. Ottamalla pistetulo yhtälön (9.19) nopeuskorjausvektorin ja pinnan normaalin ~ni+ 1 vä2 lillä saadaan kohtisuoran nopeuden korjaukselle u¯′i+ 1 2 Vi+ 1 =−¯ 2 1 A P,i+ 2 ∂p ∂n ! (9.21) i+ 12 eli nopeuskorjaus riippuu kohtisuorasta suunnassa olevasta painegradientista, kuten intuitiivisesti voi päätelläkin. Yhtälön (9.19) paineriippuvuus voidaan laskea tarkasti, mutta tällöin saadaan monimutkaisempi Poisson-yhtälö. Yksinkertaisin tapa 9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA 199 on olettaa hila suorakulmaiseksi, jolloin päädytään muodollisesti samaan yhteyteen kuin karteesisella hilalla Si+ 1 u¯′i+ 1 = − ¯ 2 (p′i+1 − p′i ) 2 AP,i+ 1 (9.22) 2 Tehdystä approksimaatiosta voidaan päätellä, ettei käyräviivaisuus sinänsä hankaloita asioita, vaan poikkeama suorakulmaisuudesta. Mitä enemmän hilaviivat poikkeavat suorakulmaisuudesta, sitä huonompi approksimaatio yhtälö 9.22 on. Tämän vuoksi relaksaatiokertoimia on pienennettävä ja myös nopeuden ralaksoinnilla painekorjauksen yhteydessä on merkitystä. Relaksaatiokertoimista erityisesti αP :n arvoa voidaan nostaa tekemällä jokaisella laskentakierroksella useita painekorjauksia. Myös differentiaaliyhtälöt voidaan muuntaa hilaviivoja mukailevaan koordinaatistoon. Tarkastellaan kitkatonta osuutta, jolloin saadaan seuraavat yhtälöt ˆ ∂ Fˆ ∂ G ∂ Uˆ + + =0 ∂t ∂ξ ∂η (9.23) ˆ = U/J, Fˆ = (ξx F + ξy G)/J ja G ˆ = (ηx F + ηy G)/J ja J on muunnoksen missä U Jacobin matriisi (kts. peruskurssi). Yhtälöt vastaavat kontrollitilavuusmenetelmällä diskretoituja yhtälöitä, mutta ovat differentiaalimuodossa. Kopin pintaa vasten kohtisuora nopeus on muunnoskertoimien avulla ξx u + ξy v u¯ = q ξx2 + ξy2 (9.24) Kertomalla yhtälöryhmä (9.23) diskretoidun yhtälön matriisia (2.69) vastaavalla muunnosmatriisilla T = 1 0 0 0 0 cos θ sin θ 0 0 − sin θ cos θ 0 0 0 0 1 jossa pinnan normaalin komponentteja vastaa q (9.25) cos θ = ξx / ξx2 + ξy2 q sin θ = ξy / ξx2 + ξy2 (9.26) saadaan liikemäärän vuoksi ξ-suunnassa F¯ u¯ = q ξx2 + ξy2 J (ρ¯ uu¯ + p) (9.27) 9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA 200 ja pinnan suuntaiselle nopeuskomponentille saadaan vuoksi −ξy u + ξx v v¯ = q ξx2 + ξy2 F¯ v¯ = Kerroin (9.28) q ξx2 + ξy2 ρ¯ uv¯ (9.29) J ξx2 + ξy2 /J yhtälöissä (9.27) ja (9.29) vastaa kopin pinta-alaa. Näissä yh- q teyksissä on oleellista se, että pyöräyttämällä yleiset yhtälöt tai vuot kopin pinnalla suorakulmaiseen koordinaatistoon, joka on kohtisuorassa kopin pintaa vasten, saadaan muodollisesti samankaltaiset yhtälöt kuin karteesisessa koordinaatistossa saataisiin. Tätä ominaisuutta voidaan käyttää hyväksi myös vuon laskennassa ja implisiittisessä vaiheessa, kuten luvussa 2 esitettiin. Pyöritysmatriisilla ei ole sinänsä merkitystä painekorjauksen yhteydessä, mutta kokoonpuristuvalla virtauksella laskenta voidaan implementoida pyöritysmatriisin T avulla aina näennäisesti karteesisessa muodossa. Kopin pintaa vasten kohtisuorassa suunnassa saadaan siis kitkattomalta osaltaan karteesisen muotoinen yhtälö. Ottamalla kitkatermeistä huomioon vain yhtälöä (9.12) vastaava osuus, saadaan kohtisuoralle liikemääräkomponentille karteesista yhtälöä vastaava yhtälö, jossa nopeuksina esiintyvät määritellyn pintaa vasten kohtisuorassa suunnassa olevan koordinaatiston nopeuskomponentit u¯ ja v¯. Yhtälön diskretoinnissa päädytään tällöin samoihin kertoimiin kuin nopeuskomponentteja u ja v vastaavissa liikemääräyhtälöissäkin. Jos sovelletaan SIMPLE-menetelmää, saadaan kohtisuoralle liikemääräkomponentille yhtälön 9.22 mukainen eli aivan sama yhtälö kuin karteesisessakin tapauksessa saatiin. Yhtälössä 9.22 ei tehdä kuin yksi karteesista yhtälöä suurempi approksimaatio. Tämä nähdään kuvasta 9.9, josta havaitaan paineiden pi+1 ja pi approksimoivan sitä huonommin kohtisuoran suunnan tilavuuden Vi+1/2 pintapaineita, mitä suurempi on hilaviivojen välinen kulma. Parempi approksimaatio vaatisi väli-ilmansuuntapaineiden mukaanottoa. Toinen tapa on korjata ensimmäisen painekorjauksen tulosta iteratiivisesti (kts. Ferziger-Peric). Käyttämällä alkuperäistä painekorjausyhtälöä, joudutaan alirelaksoimaan ratkaisua enemmän, mutta toisaalta laskenta-aikaa säästyy. Sijoittamalla yhtälö (9.22) massataseeseen − (S 2 ρ)i+1/2 ′ (S 2 ρ)i−1/2 ′ (S 2 ρ)j+1/2 ′ (S 2 ρ)j−1/2 ′ pi+1 − pi−1 − pj+1 − p AP,i+1/2 AP,i−1/2 AP,j+1/2 AP,j−1/2 j−1 9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA i + 1/2 201 pi + 1 pi Kuva 9.9: Pintaa vasten kohtisuoran suunnan liikemääräyhtälön diskretointi. (S 2 ρ)i−1/2 (S 2 ρ)i+1/2 (S 2 ρ)j+1/2 (S 2 ρ)j−1/2 ′ + + + + pi = −∆m ˙ ∗i (9.30) AP,i−1/2 AP,i+1/2 AP,j+1/2 AP,j−1/2 eli muodollisesti täsmälleen sama yhtälö (6.25) kuin karteesisessa tapauksessa. Tässäkin kertoimet AP pinnoilla lasketaan keskiarvoina liikemääräyhtälölle kopin keskelle yhtälöstä (9.17) lasketuista kertoimista. Massataseen ∆m ˙ ∗i laskennassa tarvitaan numeerista paineesta riippuvaa vaimennusta. Kun tiedostetaan Rhie ja Chow -termin luonne vaimentavaksi, on täysin turhaa ryhtyä approksimoimaan monimutkaisella tavalla sen gradientteja. Riittää, kun käyttää samaa lauseketta kuin karteesisella hilalla. m ˙ ∗i+1/2 = Si+1/2 ( (Sρ)i+1/2 r 1 [pi+1/2 − pli+1/2 ] [(ρ¯ u∗ )i+1 + (ρ¯ u ∗ )i ] − C 2 2AP,i+1/2 ) (9.31) Lauseke poikkeaa karteesisesta vain konvektionopeuden osalta, jossa käytetään pintaa vasten kohtisuoraa komponenttia u¯. Kun painekorjaukset on laskettu, voidaan korjata konvektionopeuksia yhtälöstä (9.22). Konvektionopeuksien korjaamisen jälkeen massatase toteutuu eksaktisti, jos nopeuskorjauksia ei alirelaksoida ja painekorjausyhtälö on ratkaistu tarkasti. Tämän jälkeen voidaan ratkaista muut yhtälöt. Vielä yksinkertaisempaa on korjata suoraan karteesisia nopeuksia yhtälöstä AP,i u′i ≈ −(Snxi )i+1/2 p′i+1/2 +(Snxi )i−1/2 p′i−1/2 −(Snxi )j+1/2 p′j+1/2 +(Snxi )j−1/2 p′j−1/2 (9.32) 9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT UL 202 Iteraatio lkm 800 600 Yksi korj. 400 200 Kaksi korjausta 0 0,0 0,1 0,2 0,3 0,4 0,5 αp Kuva 9.10: Konvergenssi huononee jos koko laskenta-alue koostuu kopeista, joissa sivujen välinen kulma on 45◦ . Tekemällä kaksi painekorjausta tilanne korjaantuu. missä painekorjaukset koppien pinnoilla lasketaan keskiarvoina hilapisteiden painekorjauksista. Jotta yhtälöä voidaan soveltaa, on myös reunoilla (=haamukopeissa) tunnettava painekorjaukset. Eräs mahdollisuus on asettaa nopeuskorjaus nollaksi laskenta-alueen rajalla. Edellä olevasta voidaan havaita, että painekorjausalgoritmi säilyy käyräviivaisella hilalla lähes samanmuotoisena kuin karteesisessa tapauksessa. Suurimmat erot ovat suureiden määrittelyissä. Jos hila on suurelta osin laskenta-alueessa vääristynyt, konvergenssi huononee ja on käytettävä hyvin pientä alirelaksaatiokerrointa. Tällainen esimerkki on kuvassa 9.10. 9.6 Ohutkerrosapproksimaatio ja kiinteät pinnat Kiinteillä pinnoilla voidaan käyttää yhtälöä (6.42) pintaa vastaan kohtisuorassa suunnassa olevien derivaattojen laskemiseen. Jotta yhtälö olisi tarkka, tulisi hilaviivojen olla kohtisuorassa seiniä vastaan. Hila yleensä pyritään luomaan siten, että kohtisuoruus toteutuu ainakin suurimmassa osassa laskenta-aluetta. Kohtisuoruus vaikuttaa myös turbulenssimallien laskentaan, jossa rakenteellisella hilalla on yksinkertaista edetä pinnalta ulospäin koppirivi kerrallaan. Yhtälön (6.42) derivaatan käyttö edellyttää yksinkertaistettua muotoa kitkalliselle vuolle pinnalla. Seuraavassa esitettävää yksinkertaistettua muotoa voidaan myös käyttää itse laskenta-alueen sisällä eikä se aiheuta suurta epätarkkuutta, mikäli probleemaan liittyvä globaali Reynoldsin luku on alueella Re > 100. Approksimaatiossa yhtälössä (9.10) otetaan vain i-suuntaa vasten kohtisuorat 9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT 203 pinnat mukaan ∂φ ∂x i+1/2 ≈ 1 Vi+1/2 [(Snx φ)i+1 − (Snx φ)i ] (9.33) Tämä on hyvä approksimaatio, jos i–suunnan pinnat ovat selvästi suuremmat kuin pinnat muissa suunnissa. Korvaamalla noodipisteissä olevat pinnat niiden puolivälissä sijaitsevalla laskentatilavuuden pinnalla saadaan approksimaatiivisesti ∂φ ∂x i+1/2 ≈ nx,i+1/2 (Snx )i+1/2 [φi+1 − φi ] = (φi+1 − φi ) Vi+1/2 ∆ξi+1/2 (9.34) missä ∆ξi+1/2 on koppien välinen etäisyys. Vastaavat lausekkeet saadaan derivaatoille ∂φ/∂y ja ∂φ/∂z. Korvaamalla näillä yksinkertaisilla lausekkeilla derivaatat diffuusiovoiden yhtälöissä saadaan seuraavat approksimaatiot µi+1/2 nx,i+1/2 u Fˆv,i+1/2 = − [(ui+1 − ui ) + (¯ ui+1 − u¯i )] ∆ξi+1/2 3 ny,i+1/2 µi+1/2 v [(vi+1 − vi ) + Fˆv,i+1/2 = − (¯ ui+1 − u¯i )] ∆ξi+1/2 3 µi+1/2 nz,i+1/2 w Fˆv,i+1/2 = − [(wi+1 − wi ) + (¯ ui+1 − u¯i )] ∆ξi+1/2 3 (9.35) missä kontravariantti nopeus u¯ lasketaan pintaa Si+1/2 vasten kohtisuorassa suunnassa. Vastaavat lausekkeet pätevät pinnoilla j + 1/2 ja k + 1/2, kun käytetään niihin liittyviä geometrisia suureita ja korvataan ∆ξi+1/2 ∆ηj+1/2 :lla tai ∆ζk+1/2 :lla riippuen suunnasta. Käytännössä lähes aina voidaan korvata monimutkaisempi diffuusiovuon laskenta yllä olevilla yhtälöillä. Perinteisesti keinoa on käytetty rajakerrostyyppisissä virtauksissa, joissa vuota ei edes tarvitse laskea kuin kiinteää pintaa vasten kohtisuorassa suunnassa olevilla koppien pinnoilla. Tällöin approksimaatiota nimitetään ohutkerrosapproksimaatioksi. Kokoonpuristumattomalla virtauksella yhtälön (9.35) kontravarianttia nopeutta sisältävä lauseke on nolla. Tällöin approksimaatio tulee hyvin yksinkertaiseksi ja samanmuotoiseksi kuin karteesisessa tapauksessa. Tätä muotoa käytetään implisiittisessä vaiheessa ja sitä voidaan soveltaa myös kiinteällä pinnalla. Kiinteällä seinällä yhtälön (9.35) keskeisdifferenssiapproksimaatiot korvataan yhtälön (6.42) lausekkeella. Myös aiemmin esillä ollutta 1. kertaluvun approksimaatiota (6.41) voi yrittää käyttää pintavuon laskennassa. 9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT 204 • Yleisimmät rakenteellisen hilan generointitavat ovat algebrallisia tai differentiaaliyhtälöihin perustuvia. Transfiniitti interpolointi on yleisin algebrallinen menetelmä, elliptisiin differentiaaliyhtälöihin perustuvat menetelmät ovat myös yleisiä. Elliptinen menetelmä voi toimia myös hilan tasoittajana. • Rakenteettoman hilan generointimenetelmiä ovat Delaunayn kolmiointi ja etenevän rintaman menetelmä • Tavanomaisella tai rakenteettomalla hilalla kannattaa käyttää vain karteesisia nopeuskomponentteja. Limitetyllä hilalla voidaan käyttää myös kontravariantteja komponentteja, mutta yhtälöistä tulee monimutkaisempia. • Liikemäärän taseyhtälö nopeuden u-komponentille Vi X d(ρu)i =− Sj (Fˆ − Fˆv )j + Vi (ρbx )i dt S Kitkaton osuus vuosta S Fˆ = SρuV~ · ~n + Sx p = mu ˙ + Snx p Massavirta pinnan läpi m ˙ = SρV~ · ~n = Sρ¯ u Konvektionopeus u¯ = ~n · V~ = nx u + ny v + nz w Kitkallinen vuo S Fˆv = Sµ(nx ∂u + ny ∂u + nz ∂u ) ∂x ∂y ∂z ∂φ • Derivaattojen laskenta ∂x i+1/2 ≈ 1 Vi+1/2 X S Snx φ 9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT ∂φ • Yksinkertaistettu derivaattojen laskenta ∂x φi ) i+1/2 ≈ 205 nx,i+1/2 (φi+1 − ∆ξi+1/2 • Yksinkertaistetulla derivaatalla voidaan johtaa ohutkerrosapproksimaatio. • Implisiittisen vaiheen kertoimet ja painekorjaus ovat yleisessä tapauksessa muodoltaan lähes samat kuin karteesisessa. Kaikille nopeuskomponenteille, mukaan lukien kopin pintaa vastaan kohtisuorassa koordinaatistossa lausutuille komponenteille, saadaan implisiittiseen vaiheeseen samat kertoimet AP . • Massataseessa olevassa paineesta riippuvassa vaimennustermissä riittää yksinkertaistettu muoto. • Nopeudet voidaan korjata suoraan yhtälöistä AP,i u′i ≈ − (Snxi )i+1/2 p′i+1/2 + (Snxi )i−1/2 p′i−1/2 − (Snxi )j+1/2 p′j+1/2 + (Snxi )j−1/2 p′j−1/2 missä paineet saadaan keskiarvoina hilapistearvoista. • Myös massavirrat ja vastaavat nopeudet tilavuuksien seinillä voidaan korjata. Päivitetty 4.4.2012 206 10 Ajan suhteen tarkka laskenta Ferziger-Peric 127-147 207 11 Turbulentin virtauksen laskenta Ferziger-Peric sivut 247-276 208 12 Virtauslaskennassa esille tulevia käsitteitä 12.1 Johdanto Edellisissä luvuissa on tuotu useammassa yhteydessä esille vektorilaskennan käyttöä kontrollitilavuusmenetelmän yhteydessä. Simulointi on perustunut karteesiseen koordinaatistoon ja tässä koordinaatistossa lausuttuihin nopeuskomponentteihin. Laskentahilan ominaisuudet, tilavuudet ja pinta-alat, saadaan vektorilaskennan avulla. Vektorilaskenta on erittäin tehokas ja käyttökelpoinen menettely kaikessa virtauslaskentaan liittyvässä lähtien esikäsittelystä ja päätyen jälkikäsittelyyn. Tässä luvussa tuodaan esimerkinomaisesti esille eräitä virtauslaskennan keskeisiä käsitteitä, joiden yhteydessä tai johtamisessa sovelletaan vektoreita. Toinen virtausmekaniikassa käytetty keino ovat tensorit, joiden avulla saadaan pitkät ja hankalat lausekkeet lausutuksi yksinkertaisemmin. Tensoreiden käyttö on välttämätöntä monimutkaisempien turbulenssimallien yhteydessä, ja kätevää, joskaan ei välttämätöntä, kitkatermin käsittelyssä. Useimmin esille tulevat venymänopeustensori Sij ja pyörteisyystensori Ωij . Näiden laskennassa tarvitaan derivaattoja, jotka saadaan aiemmin esitetyllä tavalla vektorianalyysiin perustuen. 12.2 Geometristen suureiden laskenta Geometriset suureet, pinta-alavektorit ja koppien tilavuudet, voidaan laskea usealla tavalla. Laskenta on suoritettava konsistentisti siten, että kahden tilavuuden välinen pinta lasketaan samalla tavoin ja laskentatilavuuksien on täytettävä laskenta-alue kokonaan ilman väliin jääviä koloja. Seuraavassa esitetään, miten geometriset suureet lasketaan TKK:ssa kehitetyssä FINFLO-ohjelmassa. FINFLO on kontrollitilavuusmenetelmää käyttävä kolmidimensioinen virtausratkaisija. Se käyttää käyrä- 12.2. GEOMETRISTEN SUUREIDEN LASKENTA 209 SDCGH G C H D SABCD F SEFGH B E A SADHE Kuva 12.1: Kolmidimensioinen heksaedrilaskentatilavuus. viivaista rakenteellista monilohkoista hilaa. Tässä käydään läpi tilavuuksien, pintaalojen ja normaalivektoreiden laskenta-algoritmit. Laskenta-alue on jaetaan 6-sivuisiin heksaedri-alkioihin (kuva 12.1), missä heksaedrin kuuden seinän pinnat eivät ole välttämättä tasoja. Tällaisen laskenta-alkion tilavuuden, pinta-alojen ja pinnan normaalien määrittämisessä on oltava tarkkana, jotta pinta-alat viereisissä laskenta-alkioissa ovat yhtäsuuret ja laskenta-alueen kokonaistilavuus on sama kuin laskenta-alkioiden tilavuuksien summa eli laskentaalkiot täyttävät koko simulointialueen. 12.2.1 Laskentatilavuuksien pinta-alavektoreiden laskeminen Laskenta-alkion seinän pinta-alavektoreiden tulee täyttää seuraava ehto I S ~≈ dS X ~j = 0 S (12.1) f aces eli pinta-alavektoreiden summan täytyy olla nolla laskenta-alkiolle. Tämä ehto on ekvivalentti peruskurssilla (luku 15) esillä olleen geometrisen säilymislain kanssa. Kopin seinän pinta-ala ABCD kuvassa 12.1 voidaan laskea seuraavasti ~ABCD = 1 (~xAC × ~xBD ) S 2 (12.2) tai ~ABCD = 1 [(~xAB × ~xBC ) + (~xCD × ~xDA )] S (12.3) 2 ~ABCD summana kahden kolmion (ABC) Viimeinen yhtälö laskee pinta-alavektorin S ja (CDA) pinta-aloista. Yleisessä tapauksessa näiden kahden kolmion pinta-alavektorit 12.2. GEOMETRISTEN SUUREIDEN LASKENTA 210 G C H D F P B E A Kuva 12.2: Kolmidimensioinen heksaedrin jako pyramideihin. eivät ole saman suuntaisia. Kuitenkin kummatkin yllä olevat yhtälöt johtavat samaan tulokseen. Myös kolmioita (BCD) ja (DAB) voitaisiin käyttää pinnan vektoreiden määrittämiseksi. Yleensä kuitenkin käytetään yhtälöä (12.2), koska se vaatii vähiten laskentaa. ~ saadaan normaalivektori ja pinta-ala seuraavasti Vektorista S ~ S ~ |S| (12.4) ~ S = |S| (12.5) ~n = ja 12.2.2 Tilavuuksien laskenta Tilavuudet voidaan laskea jakamalla heksaedri pyramideihin. Jotta tämä olisi mahdollisimman suuntariippumaton täytyy heksaedri jakaa kuuteen pyramidiin siten, että pyramidin pohja on yksi heksaedrin sivuista ja huippu sijaitsee heksaedrin keskipisteessä. Kuvassa 12.2 näkyy esimerkki kuinka heksaedri jaetaan pyramideihin. Kuvassa on tummennettu näistä ainoastaan kaksi. Pyramidin tilavuus saadaan laskettua ottamalla pistetulo pyramidin pohjan pinta-alavektorin ja jonkun vektorin ~x(P ) kanssa, joka lähtee pinnalta pyramidin kärkeen 1 ~ABCD VP ABCD = ~x(P ) · S 3 (12.6) 12.3. VOIMIEN JA MOMENTIN LASKENTA 211 Koska ABCD ei todennäköisesti ole tasopinta, täytyy ~x(P ) approksimoida keskiarvona 1 ~x(P ) = (~xP A + ~xP B + ~xP C + ~xP D ) 4 (12.7) Käyttämällä yhtälöä (12.2) tilavuuden lausekkeeksi tulee VP ABCD = 1 1 (~xP A +~xP B +~xP C +~xP D )·(~xAC ×~xBD ) = (~xP A +~xP B )·(~xAC ×~xBD ) 24 12 (12.8) 12.2.3 Tarkkuus Hila luetaan ohjelmaan sisään nurkkapisteinä. Pienimpien laskenta-alkioiden etäisyys saattaa olla luokkaa 10−6 m ja koko tapauksen dimensiot voivat olla esim. luokkaa 10 m lentokoneille tai 102 m laivoille. Jos ajatellaan että hilan origo sijaitsee laivan keulassa, niin myös laivan perän alueella pitää käyttää tiheää hilaa seinämän lähellä. Tällöin tavallinen yksinkertainen tarkkuus (7 numeroa) ei riitä, jotta laskentatilavuuksien geometriatiedot voidaan tarkasti määrittää. Tästä johtuen geometrian siirrossa ja laskennan aikana täytyy käyttää kaksinkertaista tarkkuutta. Varsinaisessa virtauslaskennassa riittää, että hilan ominaisuudet (tilavuus, pinta-alat ja normaalivektorit) ovat normaalitarkkuudella määritelty. 12.3 Voimien ja momentin laskenta Monissa virtaustehtävissä joudutaan laskemaan kiinteisiin pintoihin vaikuttavia voimia ja momentteja. Vääntömomentin avulla voidaan laskea esimerkiksi pyörivän virtauskoneen teho P yhteydestä P = Tω (12.9) missä T on vääntömomentti ja ω on pyörimisnopeus. Vääntömomenttia varten on laskettava yksittäisiin pinta-alkioihin kohdistuvat voimat. Seuraavassa tarkastellaan ensin voimien laskentaa. Usein voimat esitetään dimensiottomien kertoimien avulla. Yleensäkin dimensioton esitysmuoto kaikille suureille on virtauslaskennassa SI-yksiköissä esitettyä parempi, koska tällöin tuloksia voidaan soveltaa laajemmalla alueella. Esimerkiksi 12.3. VOIMIEN JA MOMENTIN LASKENTA 212 CL 1111111111111111111111111 CD 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 1111111111111111111111111 α Kuva 12.3: Lentävän kappaleen nostovoima- ja vastuskertoimet. Kappaleeseen vaikuttaville voimille saadaan tasapainotilassa sama arvo integroitaessa liikemäärän vuot pintaa pitkin tai jotain muuta sulkeutuvaa käyrää pitkin. lentävän kappaleen nosto- ja vastusvoimat (kuva 12.9), FL ja FD , esitetään kertoimien CL ja CD avulla CL Sρ∞ u2∞ 2 CD FD = Sρ∞ u2∞ 2 FL = (12.10) missä S on käytetty referenssipinta-ala ja ρ∞ ja u∞ ovat vapaan virtauksen tiheys ja nopeus. Aerodynaamisissa simuloinneissa määritetään nostovoima- ja vastuskertoimet, jotka ovat funktioita Machin ja Reynoldsin luvuista sekä kohtauskulmasta. Kertoimien määrityksessä lasketaan kappaleeseen vaikuttavat voimat. Kohtauskulman α avulla saadaan FL = FN cos α − FA sin α FD = FN sin α + FA cos α (12.11) missä FN on normaali- ja FA aksiaalisuuntainen voima (kuva 12.4). Koordinaatisto sijoitetaan yleensä siten, että FN ja FA ovat globaalin karteesisen koordinaatiston akselien suuntaisia, jolloin saadaan suoraan FN = Fy ja FA = Fx . Voiman karteesisten komponenttien määritys on yksinkertaista. Pinnalla olevan kopin liikemääräyhtälön vuon komponentit ovat samat kuin kappaleeseen vaikuttavan voiman komponentit, tosin vastakkaismerkkisinä. Koska konvektionopeus on nolla, saadaan 12.3. VOIMIEN JA MOMENTIN LASKENTA FL 213 FN α !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! y !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! FD α FA x Kuva 12.4: Normaalivoima ja aksiaalivoima. kitkattoman vuon osuudeksi Fxi = Snxi p. Kitkallisen vuon osuus saadaan soveltamalla yhtälöä (9.35) ja korvaamalla keskeisdifferenssit epäsymmetrisellä laskentamolekyylillä (6.41) 2uP ) ∆ξP 2vP = −S(ny pw − µP ) ∆ξP 2wP ) = −S(nz pw − µP ∆ξP Fx = −S(nx pw − µP Fy Fz (12.12) missä on oletettu ohutkerrosapproksimaatiossa (9.35) toinen termi nollaksi kokoonpuristumattomuusoletuksen perusteella. Mikäli ρ 6= vakio on tämä termi oltava mukana ja jos pinnalla on nopeus, kuten pyörivien virtauslaitteiden tapauksessa, on pinnan nopeus otettava huomioon sovellettaessa yhtälöä (6.42). Yhtälössä (12.12) piste P viittaa pintaa lähinnä olevaan koppiin ja N sen yläpuolella olevaan tilavuuteen. Liikemäärävuon käytössä voimien laskennassa on myös se kätevä piirre, että voidaan automaattisesti ottaa huomioon esimerkiksi rajakerrosimu ja kokoonpuristuvalla virtauksella kitkavoima pintaa vasten kohtisuorassa suunnassa. Nämä tulevat mukaan liikemäärän taseeseen ja sitä kautta automaattisesti myös pintavoimien määritykseen. Tasapainotilan laskussa liikemäärän vuo suljetun alueen yli säilyy periaattees- 12.3. VOIMIEN JA MOMENTIN LASKENTA _ F 214 (x, y, z) _ R _ r _ t ( x0, y0, z0) Kuva 12.5: Vääntömomentin laskenta. sa vakiona. Siten voima voitaisiin laskea myös summaamalla liikemäärän vuot kuvaan 12.9 merkittyä kaarta pitkin. Koska ratkaistavat yhtälöt ovat säilymismuodossa, saatu voima on tasapainotilassa sama kuin pitkin pintaa integroitu. Käytännössä tulos saattaa hiukan poiketa, koska epälineaarisia virtausyhtälöitä ei yleensä koskaan saada niin tarkasti ratkaistuksi, että tietokoneen sanan pituutta vastaava tarkkuus olisi saavutettu. Tämän vuoksi voimien laskenta kannattaa tehdä pitkin pintaa. Vääntömomentin laskenta on hiukan hankalampaa kuin voiman ja siinä voidaan soveltaa useita tapoja. Momentti T~ esimerkiksi virtauskoneen pyörimisakselin suhteen (kuva 12.11) voidaan laskea yhtälöstä ~ × F~ T~ = ~r1 × F~ = (~r − R) (12.13) missä F~ on pinta-alkioon kohdistuva voima (liikemäärän vuo). Tehtäväksi jää vek~ ja ~r määrääminen. Pinta-alkion keskipisteen koordinaatit tunnetaan ja satorien R moin jonkin pisteen r~o , joka on pyörimisakselilla. Tällöin ~ = (x − x0 )~i + (y − y0 )~j + (z − z0 )~k R (12.14) Pyörimisakselin suunta tunnetaan ja se voidaan kirjoittaa yksikkövektorin ~ ~ ~ ~t = ωx i + ωy j + ωz k (ωx2 + ωy2 + ωz2 )1/2 (12.15) 12.4. PAINE- JA KITKAKERROIN 215 ~ · ~t ja avulla. Tällöin vektorin ~r pituus on R ~ · ~t)~t ~r = (R (12.16) Jos esimerkiksi oletetaan pyörimisakseliksi x-akseli, saadaan ~r = (x − x0 )~i, minkä jälkeen momentti on helposti laskettavissa yhtälöiden (12.13) ja (12.14) avulla. Toinen tapa laskea virtauskoneen tehoa ja yhtälön (12.9) kautta pyörimisakseliin vaikuttavaa momenttia, perustuu energiayhtälöön. Yleensä pyörivillä koneilla ei lasketa lämmönsiirtoa kiinteistä pinnoista. Koska kiinteällä pinnalla konvektiovuo on nolla ja oletetaan myös lämpövuo nollaksi, jää energiayhtälön vuotermistä kiinteällä pinnalle jäljelle vain mekaanisen energian vuo. Integroimalla energiavuo pyörivän koneen siivistön yli saadaan siis koneen nesteeseen siirtämä teho P . Mikäli tarkastelussa on lämmönsiirtyminen mukana, saadaan akseliteho vähentämällä energiavuosta lämpövuo siivistön pinnalla. 12.4 Paine- ja kitkakerroin Leikkausjännitys ja paine kannattaa esittää dimensiottomien suureiden kitkakerroin Cf ja Cp avulla. Painekerroin määritellään yhtälöllä p − p∞ = Cp ρ∞ u2∞ 2 (12.17) Painekerroin on siis eräänlainen dimensioton paine-ero. Sen merkitys tulosten esittämisessä on siinä, että tuloksia voidaan tällöin jossain määrin soveltaa erilaisiin tilanteisiin. Tämä riippuu siitä ovatko virtausta kuvaavat dimensiottomat luvut riittävän lähellä toisiaan eri tilanteissa. Kun painekerroin tunnetaan, saadaan paine esimerkiksi SI-yksiköissä helposti yhtälöstä (12.9). Kitkakerroin kuvaa leikkausjännitystä pitkin kappaleen pintaa. Kerroin muuttaa merkkinsä virtauksen irrotessa ja sen avulla voidaan tarkasti interpoloida laskennan ennustama irtoamiskohta. Kitkakerroin määritellään yhtälöllä τw = Cf ρ∞ u2∞ 2 (12.18) missä τw on leikkausjännitys pinnalla (kuva 12.12). Leikkausjännitys voidaan laskea liikemäärävuon viskositeetista riippuvista termeistä. Kitkakerroin on yksikäsitteisesti määritelty vain kaksidimensioisessa tapauksessa. Kolmidimensioisessa ta- 12.4. PAINE- JA KITKAKERROIN 216 n τw !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! Kuva 12.6: Kitkakerroin kuvaa leikkausjännitystä pitkin pintaa. y x τ z Kuva 12.7: Siiven pinnalla tarkastellaan usein xy-tason suuntaista leikkausjännitystä pauksessa saatetaan olla kiinnostuneita esimerkiksi kuvan 12.13 mukaisesta xytason suuntaisesta leikkausjännityksestä, jonka avulla on helppo todeta pysyykö virtaus siivessä kiinni. Yhtälössä (12.18) tarvittava leikkausjännitys on xy-tason suuntainen eli kohtisuorassa z-akselia vastaan ja vektoria ~k vastaan. Toisaalta leikkausjännitys on myös kohtisuorassa pinnan normaalia vastaan. Tällöin jännitys halutaan suunnassa ~t = ~i 0 nx ~j 0 ny ~k 1 = −ny~i + nx~j nz (12.19) Kitkavoiman aiheuttama jännitysvektori saadaan liikemäärävoiden viskoosista osasta, ts. kun vuosta on vähennetty Eulerin yhtälöiden osuus, joksi pinnalla jää vain paine. Haluttu leikkausjännitys saadaan yksikkösuuntavektorin ja jännitysvektorin 12.5. LIIKKUVA LASKENTAHILA 217 . y . x y x Kuva 12.8: Liikkuva karteesinen laskentatilavuus. pistetulona. Kuvan 12.7 tapauksessa saadaan τw = −ny Fvx + nx Fvy (n2x + n2y )1/2 (12.20) missä Fvx ja Fvy ovat kitkallisen vuon x- ja y-komponentit. Kitkakerroin on helppo laskea rakenteellisella hilalla, jossa yleensä on jonkinlaisia ’pääsuuntia’, joissa virtauksen irtoamista halutaan tarkastella. Esimerkiksi pyörähdyskappaleella voidaan edellä esitetyn aksiaalisuunnan lisäksi tarkastella kitkakerrointa kehän suunnassa. Rakenteettomalla hilalla kitka- ja painekerroin on esitettävä leikkaamalla kappaletta tasolla ja interpoloimalla lasketut arvot leikkauskäyrälle. Laskenta on tällöin huomattavasti monimutkaisempaa ja erityisesti kitkakertoimessa saattaa näkyä värähtelyä. Kitkakerrointakin herkempi suure on lämmönsiirtokerroin, jonka määritykseen ei tässä yhteydessä puututa. 12.5 Liikkuva laskentahila Liikkuvalla laskentahilalla kuvataan tapauksia, joissa laskenta-alueessa tapahtuu geometrisia muutoksia. Laskenta on siis ajasta riippuvaa. Sillä voidaan kuvata esimerkiksi siiven muodonmuutoksia ja vuorovaikutusta virtauksen kanssa tai lentokoneesta pudotettavan kappaleen aiheuttamia muutoksia virtauskentässä. Viimeksi mainittuun tarkoitukseen Chimera-hila on erityisen sovelias. Erään erikoistapauksen muodostavat pyörivät virtauskoneet, joita voidaan laskea ajasta riippuvina käyttäen liukuvan hilan reunaehtoa tai myös tasapainotilan virtauksina. 12.5. LIIKKUVA LASKENTAHILA 218 Merkitään laskenta-alueen liikettä nopeusvektorilla ~vb = x˙~i + y˙~j + z˙~k. Jos nopeus ~vb on paikasta riippuva, laskentaverkko deformoituu ajan funktiona. Laskentatilavuuksien pintojen nopeudet vaikuttavat vain konvektiotermeihin. Ajattelemalla esimerkiksi massatasetta, nähdään suoraan, että laskentakopin pinnan yli tapahtuva konvektio riippuu suhteellisesta nopeudesta pinnan yli, joka on ui − x˙ i . Lähtemällä tunnetusta yksidimensioisesta differentiaaliyhtälöstä, ∂ρ ∂ρu + =0 ∂t ∂x (12.21) tämä voidaan osoittaa muodollisestikin integroimalla yhtälö ajasta riippuvien rajojen yli Z Z x2 (t) ∂ρu ∂ρ dx + dx = 0 (12.22) x1 (t) ∂t x1 (t) ∂x Toinen termi ei aiheuta ongelmia, mutta ensimmäisen yhteydessä on käytettävä x2 (t) Leibnizin integraali-sääntöä. Tällöin saadaan d dt Z x2 (t) x1 (t) dx2 dx1 + ρ2 u2 − ρ1 u1 = 0 − ρ1 dt dt (12.23) ρdx + ρ2 (u2 − x˙ 2 ) − ρ1 (u1 − x˙ 1 ) = 0 (12.24) ρdx − ρ2 mistä yhdistämällä vuotermit d dt Z x2 (t) x1 (t) nähdään, että konvektionopeudeksi saadaan juuri suhteellinen nopeus ja konvektoituvat suureet, massa, liikemäärä ja sisäenergia säilyvät samassa muodossa kuin kiinteällä laskentahilalla. On huomattava, että energiayhtälön vuossa laskentahilan liike ei tee työtä. Tällöin painetermissä on absoluuttinen nopeus eikä suhteellinen nopeus. Kokonaisuudessaan karteesinen vuovektori esimerkiksi x-suunnassa on seuraava: ρ(u − x) ˙ ρu(u − x) ˙ +p (12.25) ˙ F(U) = ρv(u − x) ρw(u − x) ˙ ρE(u − x) ˙ + pu Vektorit G(U) ja H(U) muodostetaan vastaavalla tavalla yhtälöistä (2.3) ja (2.4). Yleisessä käyräviivaisessa tapauksessa vuo saadaan ottamalla normaalivektorin ja vuovektorin välinen pistetulo ρ¯ u ρ¯ u u + nx p ρu¯ u + nx p ρu¯ ˆ ρv¯ u + n p = ρv¯ u + n p F(U) = y y u + nz p ρw¯ u + nz p ρw¯ ρH u¯ + p¯ vb ρE u¯ + p(¯ u + v¯b ) (12.26) 12.5. LIIKKUVA LASKENTAHILA 219 _ n ._ ._ . _ xi + yj + zk Kuva 12.9: Pinnan normaalivektori ja pinnan nopeus. missä koordinaatiston pintaa vasten kohtisuora nopeuskomponentti on v¯b = nx x˙ + ny y˙ + nz z˙ (12.27) u¯ = nx u + ny v + nz w − v¯b (12.28) ja konvektionopeus Koordinaatiston liike ei vaikuta kitkatermin muotoon. Vuon laskenta ei siis muutu kovin monimutkaiseksi koordinaatiston liikkeen myötä, jos liike tunnetaan täsmällisesti. Jos hila deformoituu yleisessä mielessä, pintanopeuksien v¯b laskenta ei ole täysin triviaalia. Tällöin hilanopeuksien ja tilavuuden muutoksen on täytettävä seuraava geometrinen säilymislaki d dt Z V dV − Z S ~vb · ~ndS = 0 (12.29) Geometrisen säilymislain diskretoinnissa on otettava huomioon virtausyhtälöiden aikaintegrointitapa. Yleinen muoto pintanopeuksien kaksidimensioisille yhtälöille on esimerkiksi Jaakko Hoffrenin väitöskirjassa. Ferziger-Pericissä pohditaan asiaa vain yksinkertaisen Eulerin menetelmän kannalta. Laskennassa kannattaa lähteä suoraan kunkin kopin pintojen aika-askeleen kuluessa pyyhkäisemistä osatilavuuksista δVc (kuva 12.16). Tällöin pintanopeuksien laskenta on konsistenttia tilavuuksien laskennan kanssa. Vuovektori (12.26) voidaan kirjoittaa myös muotoon ˆ ˆ s (U) − v¯b U F(U) =F (12.30) ˆ s on vuo kiinteällä laskentahilalla. Vuovektorin Jacobin matriisi saadaan missä F ˆ linearisoimalla vuo F(U) ˆ δ F(U) = AδU − v¯b δU = (A − v¯b I)δU (12.31) 12.6. PYÖRIMISLIIKE 220 y U u s i a s e m0000000 a 0000000 δVc P Vanha asema 1 n+ r rn 0000000 0000000 0000000 0000000 e 0000000 0000000 0000000 0000000 e 0000000 0000000 0000000 0000000 0000000 0000000 0000000 Se x Kuva 12.10: Kaksidimensioinen laskentatilavuus ja yhden aika-askeleen kuluessa pinnan pyyhkäisemä osatilavuus δVc . Jacobin matriisin diagonalisointiominaisuuden (luku 2.4) A = P ΛP −1 avulla nähdään, että laskentahilan liike vaikuttaa vain alkuperäisen matriisin ominaisarvoihin. 12.6 Pyörimisliike Yleensä pyörimisliike johtaa tilanteeseen, joka ei ole staattinen reunojen epäsymmetrisyyden vuoksi. Tällöin ainoaksi keinoksi saavuttaa tarkka ratkaisu on ajan suhteen tarkka integrointi. Hilan pyörivän ja pyörimättömien lohkojen välillä käytetään liukuvan hilan reunaehtoa. Ratkaistavat suureet lausutaan kiinteässä globaalissa koordinaatistossa. Osa kiinteistä pinnoista on pyöriviä ja niillä toteutuu reunaehtonopeus V~w = ~ω × ~r (12.32) Ajan suhteen tarkka ratkaisu on vielä nykyiselläkin tietokoneiden teholla erittäin aikaa vievää. Yksinkertaisempi mahdollisuus on kvasistaattinen laskenta. Aksiaalipuhallin ja jotkin, lähinnä koelaitteistoiksi rakennetut radiaaliset turbokoneeet, saattavat olla todellisuudessakin rakenteeltaan symmetrisiä, jolloin geometrian mukana pyörivässä koordinaatistossa lausuttu nopeus V~ ′ toteuttaa tasapainotilan virtausyhtälöt. Tällöin ratkaisu yleensä tehdään tässä pyörivässä koordinaatistossa tasapainotilan laskuna. Liikemääräyhtälöön tulee tällöin kaksi ylimääräistä lähdetermiä, jotka kuvaavat näennäisiä keskipako- ja Coriolisvoimia. Reunaehtojen kanssa pitää olla tarkkana, koska ne on helppo lausua pyörimättömässä koordinaatistossa, mutta monimutkaistuvat pyörivässä. Toinen tapa, jota käytetään esimerkiksi FLUENT- ja FINFLO-ohjelmissa, on 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN 221 y _ F uc o o r d _ r _ ω x Kuva 12.11: Pyörimisliike z-akselin ympäri. ratkaista yhtälöt pyörivässä laskentahilassa, mutta käyttäen kiinteän koordinaatiston nopeuskomponentteja. Nämä saadaan yhteydestä V~ = V~ ′ + ~ω × ~r (12.33) missä V~ ′ on nopeus pyörivässä koordinaatistossa lausuttuna ja ω ~ × ~r on laskentahi- lan nopeus. Sijoittamalla lauseke (12.33) pyörivässä koordinaatistossa lausuttuihin yhtälöihin, saadaan keskipako- ja Coriolisvoimien sijaan yksinkertaisempi keskeisvoiman lauseke F~ = ~ω × V~ (12.34) Lisäksi laskentahilan nopeus tulee mukaan vuon laskentaan yhtälöstä (12.26). Käytettäessä pyörivän koordinaatiston nopeuskomponentteja vuon laskenta pohjautuu muodoltaan tavanomaisiin yhtälöihin. Karteesisten kiinteän koordinaatiston nopeuksien käytön suurin etu on reunaehtojen käsittelyn helppous. 12.7 Nopeus- ja pyörteisyyskomponenttien sekä jännitystensorin peilaaminen Käyräviivaisella hilalla monimutkainen reunaehtotyyppi on symmetria, joka on toteutettavissa kohtalaisen yksinkertaisesti peilaamalla haamukoppeihin sopivat arvot. Peilaus perustuu aiemmin esillä olleeseen muunnosmatriisiin T , joka on kaksidimensioisessa tapauksessa yksinkertainen, mutta kolmidimensioisessa tilanteessa sitä ei voida valita yksikäsitteisesti. Ongelmaksi muodostuu pyöritysmatriisin valitseminen siten, että singulaariteettejä ei synny. Peilauspinnasta tiedetään yleensä 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN 222 ainoastaan sen normaalivektori. Pinnan suuntaisten vektorien hakeminen on hankalaa, koska tällöin on mahdollista törmätä singulaariteettiin. Tässä esitellään keino, jolla ei singulaarikohtia ole. Nopeuksien peilaamismatriisin on alunperin esittänyt Batine. Tässä esitetään myös pyörteisyyskomponenttien ja jännitystensorin peilaaminen mielivaltaiselle pinnalle, mikä on huomattavasti monimutkaisempaa kuin nopeuskomponenttien. Olkoon peilauspinnan normaalivektori nx ~n1 = ny nz (12.35) Jotta nopeudet voidaan muuntaa lokaaliin koordinaatistoon (peilauspinnan koordinaatistoon) pitää etsiä kaksi pinnansuuntaista vektoria, jotka ovat kohtisuorassa vektoria ~n1 ja toisiaan vastaan. Toinen vektori voidaan valita mielivaltaisesti. Sen tulee ainoastaan olla kohtisuorassa vektoria ~n1 kohtaan. Valitaan toiseksi vektoriksi ~n2 sellainen joka on kohtisuorassa vektoria ~n1 ja vektoria ( 1 0 0 )T vastaan. Tässä menetelmässä voi syntyä singulariteetti, jos ~n1 on yhdensuuntainen vektorin (1 0 0 )T kanssa. Kuitenkin kantakoordinaatistoa voidaan pyörittää siten, että vektorit ~n1 ja ( 1 0 0 )T eivät ole yhdensuuntaisia. Vektori ~n2 saadaan seuraa- vasti: ja normeerauksen jälkeen (12.36) missä 0 1 r~n2 = ~n1 × 0 = nz −ny 0 0 r~n2 1 √ ~n2 = = nz |r~n2 | s −ny (12.37) s = n2y + n2z (12.38) Vastaavasti ~n3 saadaan kohtisuoruusehdosta −n2y − n2z 1 ~n3 = ~n1 × ~n2 = √ nx ny s nx nz (12.39) Nyt voidaan kirjoittaa muunnosmatriisi T saatujen vektoreiden avulla seuraavasti nx 0 T = √ − s ny nz √ s nx ny √ s nz ny −√ s n√ x nz s (12.40) 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN 223 Muunnosmatriisin T oikeellisuus voidaan todeta tarkastelemalla matriisin käänteismatriisia T −1 = T T (12.41) eli matriisi T on ortogonaalinen kuten muunnosmatriisin ortogonaalisesta systeemistä toiseen ortogonaaliseen systeemiin kuuluukin olla. Nopeuskomponentit täytyy esittää siten että yksi on kohtisuorassa peilausseinää vastaan ja kaksi on sen suuntaisia. Lokaalit nopeuskomponentit voidaan kirjoittaa seuraavaan muotoon nx u uˆ 0 ˆ=Tv= v √ w wˆ − s ny nz √ s nx ny √ s nz u ny −√ v s n√ x nz w s (12.42) Nyt nopeuskomponentti uˆ on kohtisuorassa peilauspintaa vastaan ja vˆ ja wˆ ovat sen suuntaisia. Reunaehto haamukoppeihin voidaan nyt kirjoittaa seuraavasti. −1 −ˆ u uˆ = vˆ = 0 ˆ v 0 wˆ wˆ mir 0 1 0 uˆ 0 0 vˆ wˆ 1 (12.43) Karteesisessa koordinaatistossa saadaan peilausnopeudet seuraavasti nx n y nz u = v w mir uˆ −1 0 0 uˆ T T = T 0 1 0 vˆ = T vˆ 0 0 1 wˆ wˆ mir u −1 0 0 T T 0 1 0 T v = √ 0 0 1 w nx ny nz 0 − s −1 0 0 u ny nx ny nz nz 0 √ √ √ √ − 1 0 s s v (12.44) s s 0 √ ny n√ n√ x ny x nz x nz 0 0 1 w −√ − s n√ s s s s josta saadaan pienen laskennan jälkeen 1 − 2n2x u = −2nx ny v −2nx nz w mir −2nx ny 1 − 2n2y −2ny nz u −2nx nz −2ny nz v w 1 − 2n2z (12.45) Tällä muodolla ei ole singulariteettia missään suunnassa. Tämän johdossa valittiin ~n2 siten, että se on kohtisuorassa vektoria ( 1 0 0 )T vastaan. Kuitenkin 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN vektori ( 1 0 224 0 )T voidaan valita mielivaltaisesti, jolloin päädytään samaan tu- lokseen. Tässä yksinkertaisuuden vuoksi käytettiin mahdollisimman yksinkertaista vektoria. On huomattava, että implisiittisessä vaiheessa kokoonpuristuvilla yhtälöillä singulaarisuus syntyy, jos ~n1 on yhdensuuntainen vektorin ( 1 0 0 )T kanssa. Tämä johtuu siitä, että implisiittisessä vaiheessa voidaan Jacobin matriisin (2.70) yhteydessä soveltaa matriiseja T ja T T erikseen. Tässä käytettiin vain lopputulosta, joka on useamman matriisin tulo. Mikäli muunnosmatriisiin perustuvaa tekniikkaa käytetään siten, että matriisi T esiintyy yksinään, on huolehdittava siitä, ettei matriisi ole singulaarinen. Vastaavanlaisesti pyörteisyydelle voidaan johtaa reunaehdot. Ainoastaan yhtälöön (12.43) joudutaan tekemään pieniä muutoksia 1 0 ω ˆx ω ˆx ωy = 0 −1 = −ˆ ˆy ω 0 0 −ˆ ωz ω ˆ z mir Pienen laskennan jälkeen saadaan 2n2x − 1 ωx = 2nx ny ωy 2nx nz ωz mir ω ˆx 0 ˆy 0 ω ω ˆz −1 ωx 2nx ny 2nx nz 2n2y − 1 2ny nz ωy ωz 2ny nz 2n2z − 1 (12.46) (12.47) Jännitystensorin peilaaminen voidaan suorittaa suhteellisen helposti yllä olevilla menetelmillä. Jännitystensoria voidaan kiertää seuraavasti globaalista lokaaliin koordinaatistoon τˆ = T τ T T missä (12.48) τ11 τ12 τ13 τ = τ21 τ22 τ23 τ31 τ32 τ33 Kiertäminen lokaalista globaaliin koordinaatistoon vastaavasti τ = T T τˆ T (12.49) (12.50) Peilauspinnalla pintaa vasten kohtisuoran ja pinnansuuntaisten komponenttien ristikkäistermit saavat arvon nolla. Tässä tapauksessa, kun 1-suunta on kohtisuorassa peilauspintaa vastaan, saavat siis τˆ12 , τˆ13 , τˆ21 ja τˆ31 arvon nolla. Tämä voidaan matriisilaskennan avulla ilmaista seuraavasti τˆmir −1 = 0 0 0 1 0 −1 0 0 τˆ 0 0 1 0 0 1 0 = P τˆ P 0 1 (12.51) 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN 225 jolloin voidaan kirjoittaa käyttämällä yllä olevia yhtälöitä τmir = T T τˆmir T = T T P τˆ P T = T T P T τ T T P T (12.52) Nyt huomataan että yllä olevan yhtälön osa T T P T on samaa muotoa kuin yhtälössä (12.44) ja kirjoittaa peilausehto suhteellisen yksinkertaiseen muotoon τmir 1 − 2n2x = −2nx ny −2nx nz −2nx ny 1 − 2n2y −2ny nz 1 − 2n2x −2nx nz −2ny nz τ −2nx ny −2nx nz 1 − 2n2z −2nx ny 1 − 2n2y −2ny nz −2nx nz −2ny nz 1 − 2n2z (12.53) Tässä esitetyllä menetelmällä ei peilausseinillä tarvitse mennä lokaaliin koordinaatistoon ollenkaan ja tämän takia ei singulariteettia voi syntyä. Näillä menettelyillä saadaan robusti ja nopea laskenta peilausseinille. Varsinkin jännitystensorin peilaus olisi suhteellisen monimutkaista, mutta edellä esitetyllä menettelyllä saadaan se yksinkertaiseksi. 12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ JÄNNITYSTENSORIN PEILAAMINEN 226 • Tilavuuden laskenta VP ABCD = 1 (~xP A + ~xP B ) · (~xAC × ~xBD ) 12 • Pinta-alan laskenta ~ABCD = 1 (~xAC × ~xBD ) S 2 • Reunaehtojen käsittelyssä haamukoppien käyttö kätevää. Symmetriaehdot mielivaltaiselle pinnalle saadaan muunnosmatriisin avulla nopeuksille, pyörteisyydelle ja jännitystensorille. • Esittämällä ratkaistut suureet dimensiottomina, tuloksilla on arvoa myös muussa kuin esillä olevassa tapauksessa • Liikemäärän vuon laskennassa kiinteällä pinnalla riittää aina ohutkerrosapproksimaation käyttö vaikka kitkatermi laskettaisiinkin täytenä muualla laskenta-alueessa. • Painekerroin p − p∞ = • Kitkakerroin τw = Cf 2 Cp ρ u2 2 ∞ ∞ ρ∞ u2∞ • Pyörivän koneen teho voidaan laskea vääntömomentin tai energiayhtälön avulla • Liikkuva laskentahila vaikuttaa vain konvektionopeuden määrittelyyn ja energiayhtälössä on otettava huomioon ettei paine ole konvektoituva suure • Geometrisen säilymislain mukaan laskentatilavuuden pintojen liikkeestä aiheutuva tilavuuden muutos on sama kuin koko tilavuuden muutos. Ts. tilavuuden ja pintojen liikkumisen laskentatapojen tulee olla samoja. • Pyörimisliike voidaan laskea ajasta riippuvana tai kvasistaattisena tasapainotilan laskuna. Tasapainotilan laskut tehdään kappaleen mukana pyörivässä koordinaatistossa käyttäen joko pyörivän koordinaatiston nopeuksia tai globaaleja karteesisia nopeuksia. Jälkimmäisellä tavalla reunaehdot ovat yksinkertaisia. Päivitetty 2.4.2014 227 13 Muita ratkaisumenetelmiä 13.1 Historiaa Keskeinen ongelma kokoonpuristumattoman virtauksen ratkaisussa on paineen määräytyminen. Koska painetta ei suoraan saada aikaintegroitua tilayhtälön avulla, se on määritettävä implisiittisesti jatkuvuusyhtälöstä. Varhaisin ratkaisutapa oli eliminoida paine kokonaan pois yhtälösysteemistä pyörteisyyden ja virtafunktion avulla. Ongelmana on tällöin se, ettei paineen arvo määräydy mistään. Lisäksi menetelmän soveltaminen kolmidimensioiseen tapaukseen on monimutkaista ja hankaluuksia tulee myös reunaehtojen käsittelyssä. 1960-luvulla ongelman ratkaisuksi kehitettiin kaksi uutta keinoa: painekorjaus- ja näennäispuristuvuusmenetelmät. Kuten aiemmin todettiin ensimmäinen painekorjausmenetelmä oli marker and cell-menetelmä (MAC), joka kehitettiin Los Alamosissa 1960-luvun puolivälissä. MAC-menetelmässä sovellettiin ensimmäisen kerran myös limitettyä hilaa. Menetelmä soveltuu hyvin ainoastaan ajasta riippuvien ongelmien laskentaan. Jo 1960luvulla sillä laskettiin vapaan pinnan ongelmia, tosin alhaisella Reynoldsin luvulla laminaarissa tilanteessa. Tältä ajalta on olemassa näyttäviä kuvasarjoja esimerkiksi pisaran putoamisesta nesteen pintaan. Vettä visualisoitiin ’markkereilla’, jotka liikkuivat virtauksen mukana. Myöhemmin Los Alamosissa kehitettiin vapaan pinnan ongelmiin volume of fluid menetelmä (VOF). Viime vuosina vapaan pinnan ongelmat ovat tulleet ajankohtaisiksi, kun on ryhdytty simuloimaan virtauksia laivojen ympärillä. Melko pian MAC-menetelmän jälkeen vuonna 1968 Chorin esitti näennäispuristuvuuskeinon, jolla elliptinen yhtälöryhmä muunnettiin hyperboliseksi ja painetta voitiin integroida ajan suhteen käyttäen luvussa 2 esitettyjä menetelmiä. Chorinin menetelmää ei käytetty kovin paljon ennen kuin viime vuosituhannen loppupuolella ryhdyttiin sen avulla muuntamaan aerodynamiikkaa varten kehitettyjä 13.2. PAINEKORJAUSYHTÄLÖN LUONNE 228 tietokoneohjelmia laajemmalle nopeusalueelle, mm. laivojen virtausten simulointiin. Uudentyyppinen menettely oli matriisin pohjustaminen, jossa yhtälöt voidaan skaalata paitsi sopivalle Machin niin myös Reynoldsin luku -alueille parhaan mahdollisen konvergenssin saavuttamiseksi. On makuasia pitääkö näennäispuristuvuusja matriisin pohjustamismenetelmiä itsenäisinä ratkaisukeinoina, ne perustuvat samaan ideaan ja kummassakin virtaus matemaattisessa mielessä skaalataan tietylle Machin luvulle vaikka tiheys voi olla vakio. Tällä hetkellä ei ole selvää käsitystä eri ratkaisutapojen paremmuudesta. Kaikkein elegantein menetelmä on varmaankin limitettyyn hilaan pohjautuva painekorjausalgoritmi, koska siinä ei tarvita mitään parametreja, jotka vaikuttavat lopputulokseen. Rhie ja Chow -menetelmässä ja näennäispuristuvuuskeinossa laskennan suorittaja joutuu antamaan parametreja, joko kertoimen C yhtälössä (5.22) tai kertoimen β yhtälössä (1.29). Parametrien vaikutus lähestyy hilaa tihennettäessä nollaa, mutta niitä voidaan kuitenkin pitää jonkinlaisina kauneusvirheinä algoritmeissa. Tässä luvussa tuodaan lyhyesti esille erilaisten ratkaisumenetelmien piirteitä. 13.2 Painekorjausyhtälön luonne Kokoonpuristumattoman virtauksen tapauksessa voidaan päätyä Poisson-tyyppiseen yhtälöön joko paineelle tai virtafunktiolle. Tämä on tavallaan luonnollista, koska kun tiheys on vakio, niin virtausyhtälöillä on elliptinen luonne. Edellä olemme johtaneet yhtälön paineen korjauksille, jolloin yhtälön oikealle puolelle tulee massataseen virhe. Eräissä menetelmissä ratkaistaan painekorjausten sijaan paineita. Tällöin yhtälön oikealle puolelle tulee huomattavasti monimutkaisempi lauseke. Eräs painekorjauksien käyttöön liittyvä elegantti piirre onkin se, että nimenomaan massataseen virhe ajaa painekorjauksia. Paineille voidaan johtaa suoraan yhtälö liikemääräyhtälöstä. Ottamalla divergenssi liikemääräyhtälöstä saadaan ∂ ∂xi ∂p ∂xi ! " # ∂ ∂ ∂2ρ =− (ρui uj − τij ) + 2 ∂xi ∂xj ∂t (13.1) Kun tiheys on vakio, sen aikaderivaattatermi putoaa pois. Jos vielä oletetaan viskositeetti vakioksi, voidaan muuttamalla derivointijärjestys kitkatermissä todeta jatku- 13.3. PAINEKORJAUSMENETELMÄT 229 vuusyhtälön perusteella, että yhtälö supistuu muotoon ∂ ∂xi ∂p ∂xi ! " ∂ ∂ =− ρui uj ∂xi ∂xj # (13.2) Useat menetelmät perustuvat tämän yhtälön diskreettiin muotoon. Varsinaista ratkaisualgoritmia johdettaessa on otettava huomioon, että uloimpana oleva divergenssioperaattori ∇· on diskretoitava kuten jatkuvuusyhtälö, mutta sisempänä oleva gra- dienttioperaattori perustuu liikemääräyhtälöön. Vaikka yllä osoitettiin, että paineelle voidaan johtaa differentiaalimuodossa oleva Poisson-yhtälö, diskretointia ei yleensä perusteta siihen, vaan ensin diskretoidusta liikemääräyhtälöstä ratkaistaan nopeus paineiden avulla ja tämä nopeus sijoitetaan jatkuvuusyhtälöön. Yhtälössä (13.1) ratkaistavana suureena on paine. Painepohjaisissa menetelmis- sä ratkotaan paine-eroja johonkin referenssipaineeseen nähden. Tekniikat eroavat siinä ratkaistaanko suoraan tätä ’painetta’ vai sen muutosta eli painekorjausta. Ratkaistavan suureen valinnalla ei ole suurta merkitystä, vaikka näin joskus pyritään esittämään. Paineyhtälö voidaan aina muuttaa sen korjauksen yhtälöksi vähentämällä siitä vakio-osuus. Erot tulevat reunaehtojen käsittelystä ja mahdollisesti laskentatarkkuudesta. 13.3 Painekorjausmenetelmät Paineen määräytyminen primitiivisuureiden avulla säilyi siis pitkään ongelmana, kunnes vuonna 1965 Harlow ja Welch Los Alamosin laboratoriosta esittivät aikoinaan kuuluisaksi tulleen marker and cell (MAC) menetelmän. Nimensä menetelmä sai virtauksen mukana kulkeutuvista massattomista hiukkasista (’marker’), joilla voitiin kuvata jo silloin nesteen pinnan kehittymistä esimerkiksi pisaran pudotessa pintaan. Laskut olivat luonnollisesti laminaareja alhaisella Reynoldsin luvulla ja 2D laskentahilan koko suurimmillaan tuhannen kopin suuruusluokkaa. Nestehiukkasten käyttö on myöhemmin johtanut varsin ajankohtaisiin volume of fluid (VOF) ja level set menetelmiin, joita on ryhdytty käyttämään mm. laivan ympärille muodostuva aallon kuvauksessa. Paljon suurempi merkitys on kuitenkin ollut paineen määräytyminen ns. Poisson-yhtälön avulla. MAC-menetelmä oli ensimmäinen painekorjausmenetelmä, ja paineen korjaus on ollut tämän kurssin pääasiallinen tutustumiskohde. Paineen määrityskeinon lisäksi MAC-menetelmässä ratkaistiin toinen 13.3. PAINEKORJAUSMENETELMÄT 230 kokoonpuristumattoman virtausratkaisun ongelma, shakkilautamainen värähtelevä ratkaisu. Tämä voitiin välttää ottamalla käyttöön ns. limitetty hila (staggered grid). Limitetyn hilan avulla oli suoraviivaista myös johtaa Poisson-tyyppinen painekorjausyhtälö. MAC-menetelmää käytetään edelleenkin jonkin verran ajasta riippuvien virtausten laskennassa. Tasapainotilan tehtävissä uudet tehokkaammat menetelmät ovat syrjäyttäneet sen. MAC-menetelmällä on mm. seuraavat ominaisuudet: • limitetty hila • Poisson-yhtälö paineille (ei paineiden korjauksille) • eksplisiittinen aikaintegrointi • konvektiotermi keskeisdifferenssimenetelmällä • virtauksen mukana liikkuvat massattomat partikkelit (’marker’), jotka soveltuvat nestepinnan kuvaukseen Tällä kurssilla on keskitytty lähinnä SIMPLE-menetelmän, tai oikeastaan eräiltä osin melko omintakeisen SIMPLEn version, käyttöön. Pelkästään tämä menetelmä voidaan siis implementoida usealla tavalla, joten erilaisten painekorjausmenetelmän modifikaatioiden määrä on lähes rajaton. On myös kehitelty menetelmiä, joiden on katsottu olevan uuden akronyymin veroisia. Patankarin kirjassa on esitetty hyvin SIMPLER-menetelmä, joka parantaa konvergenssia, mutta jossa on ratkaistava Poisson-yhtälö kahdesti. Lyhennetystä SIMPLE-menetelmästä on jossain vaiheessa käytetty nimeä SIMPLEST (SIMPLE ShorTened). Laajempaa käyttöä on saavuttanut SIMPLEC-menetelmä. Jotta SIMPLE-menetelmässä päädyttäisiin yksinkertaiseen muotoon, jätettiin yhtälöstä (6.21) pois rinnakkaisten nopeuksien osuus. Tämä aiheuttaa alirelaksaation tarpeen, mikä puolestaan kasvattaa iteraatiokierrosten määrää. SIMPLEC-menetelmässä painekorjausyhtälössä AW,i+1/2 u′i−1/2 + AP,i+1/2 u′i+1/2 + AE,i+1/2 u′i+3/2 = −Si+1/2 (p′i+1 − p′i ) (13.3) vasemman puolen rinnakkaisten nopeuksien korjaukset korvataan korjauksilla u′i+1/2 , jolloin nopeuskorjauksille saadaan yhtälö (AP,i+1/2 + X S Al,i+1/2 )u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i ) (13.4) 13.3. PAINEKORJAUSMENETELMÄT Nopeuskorjauksen kertojaksi tämän mukaan tulee vain AP,i+1/2 + Vi ρi /∆t. Menetelmän sanotaan poistavan alirelaksaation tarvetta. 231 P S Al,i+1/2 = PISO-algoritmissa (Issa 1986) tehdään SIMPLE-menetelmän lisäksi toinen nopeus- ja painekorjauskierros. Menettelyssä lasketaan toinen massatasevirhe nopeuskorjauksien u′i+1/2 avulla. Tämän avulla puolestaan ratkaistaan painekorjauksille korjaus p′′i Poisson-yhtälöstä, jossa voidaan käyttää samoja kertoimia AP kuin ensimmäisessä Poisson yhtälössä. Korjausten p′′i avulla saadaan myös toinen nopeuskorjaus u′′i . Myös PISO-menetelmän sanotaan vähentävän alirelaksaation tarvetta, mutta haittapuolena on se, että SIMPLER-menetelmän tavoin Poisson-yhtälö on ratkaistava kahdesti. Painekorjaus-askelten määrä ei periaatteessa ole rajattu muuta kuin tietokoneajan kulutuksen kautta. Massavirhettä voidaan korjata useampia kierroksia niin pitkään, että se menee nollaksi. Koska liikemääräyhtälö on epälineaarinen, ei painekorjauksia kannata tehdä kovin montaa kertaa yhtä liikemääräyhtälön ratkaisua kohden. Nykyisin kaupallisissa koodeissa sovelletaan ns. kytkettyä ratkaisua. Tällöin ratkotaan painetta ja nopeuskenttää yhtä aikaa, jolloin kolmidimensioisessa tilanteessa päädytään neljä kertaa painekorjausyhtälöä suurempaan yhtälöryhmään. Paineen ja nopeuden välille saadaan tällöin tiukempi kytkentä implisiittisessä vaiheessa ja alirelaksaation tarve vähenee. Käytännön monimutkaisissa virtaustilanteissa iteraatiokierrosten määrä voi kytketyllä ratkaisulla olla jopa alle kymmenesosa perinteiseen painekorjausmenetelmään verrattuna. Ongelma siirtyy yhtälöryhmän ratkaisun puolelle. Yhtälöryhmä on monimutkainen ja sen ratkaisumenetelmien kehitys on suurelta osin siirtynyt kaupallisten ohjelmistotalojen piiriin. Painekorjauksen ideaa voidaan soveltaa myös erilaisissa osa-askelten menetelmissä (fractional step methods). Näissä ratkaisu suoritetaan aikaintegroinnin avulla jakaen konvektio- paine- ja diffuusiotermit eri vaiheisiin. Esimerkiksi eksplisiittinen liikemääräyhtälö voidaan kirjoittaa muotoon un+1 = uni + (Ci + Di + Pi )∆t i (13.5) missä Ci on konvektiotermi, Di diffuusiotermi ja Pi painetermi. Yhtälö voidaan ratkoa kolmella askeleella u∗i = uni + (Ci )∆t 13.4. VIIVÄSTETYN KORJAUKSEN PERIAATE 232 u∗∗ = u∗i + (Di )∆t i un+1 = u∗∗ i i + (Pi )∆t (13.6) Tässä viimeiseen vaiheeseen liittyy paineen kaltaisen suureen ratkaiseminen Poissonyhtälöstä. Osa-askelten menetelmiä käytetään esimerkiksi suorassa simuloinnissa ja isojen pyörteiden menetelmän yhteydessä. 13.4 Viivästetyn korjauksen periaate Tällä kurssilla on käytetty residuaalin käsitettä ja kaikki yhtälöt on ratkaistu deltamuodossa. Residuaalin käyttö on välttämätöntä, jos käytetään FAS-monihilaratkaisua. Se mahdollistaa myös tarkempien interpolointimenetelmien käytön residuaaliosassa eli yhtälön oikealla puolella. Ferziger-Pericin kirjassa sama periaate toteutetaan ns. viivästetyllä korjauksella. Siinä laskentatilavuutta ja sen naapureita koskevat termit sijoitetaan yhtälön vasemmalle puolelle ja loput edellisen iteraatiokierroksen arvoilla lausutut termit oikealle. Käytännössä vasemmalla puolella on ensimmäisen kertaluvun tarkkuudella diskretoitu osuus. Periaatteessa vasemmalle puolelle voidaan ottaa osa korkeamman kertaluvun diskretoinnista, jos samalla huolehditaan yhtälön lävistäjävaltaisuudesta. Liikemääräyhtälön ratkaisun kannalta ainoa merkittävä ero on FAS-monihilamenetelmän vaatima residuaalimuoto. Tämä johtuu siitä, että Picardin iteraatiossa ratkaistavien yhtälöiden kertoimet ovat samat. Kirjoitetaan aiemmin x-suuntaiselle liikemääryhtälölle tehty diskretointi (9.15–9.17) vektorimuotoon AP,i ∆Ui + X Ai,j ∆Uj = RU i (13.7) j missä kertoimet Ai,j ovat pisteeseen i liittyvät ilmansuuntakertoimet (9.17). Liikemääräyhtälöstä ratkaistaan suure U∗ = (u∗ , v ∗ , w ∗ )T , joka painekorjausvaiheessa päivitetään uuden kierroksen nopeusvektoriksi (Un+1 ). Yhtälöstä (13.7) saadaan AP,i U∗i + X j n Ai,j U∗j = RU i − AP,i Ui − X Ai,j Unj = RHS (13.8) j Laskenta tässä muodossa tapahtuu siis siten, että tarkasta residuaalin määrittelemästä osuudesta vähennetään ensimmäisen kertaluvun diskretoinnilla muodostettu vasen puoli edellisen kierroksen arvoilla lausuttuna. Tähän viittaa nimitys ’viivästetty 13.5. IMPLISIITTINEN RHIE-CHOW INTERPOLOINTI 233 korjaus’. Jos residuaali lausuttaisiin ensimmäisen kertaluvun diskretointien avulla ja käytettäisiin yksinkertaista kitkatermiä, oikealle puolelle jäisi vain Vi ρ/∆t. 13.5 Implisiittinen Rhie-Chow interpolointi OpenFOAM-koodissa sovelletaan painekorjausmenetelmän versiota, josta Rhie-Chow interpolointi näyttäisi puuttuvan kokonaan. Tarkempi tarkastelu osoittaa, että interpolointi on mukana massataseessa osittain paineen ratkaisun ja osittain liikemääräyhtälöiden residuaalin kautta. Laskentatilavuuden pinnan massavirta liikemääräyhtälöissä voitaisiin laskea keskiarvona (tai lineaarisesti interpoloimalla) hilapistearvoista, mutta käytännössä näin tehdään vain ensimmäisellä iteraatiokierroksella. Seuraavilla iteraatiokierroksilla käytetään paineen ratkaisun yhteydessä laskettua vuoarvoa, jolloin Rhie-Chow termi tulee käyttöön kaikissa yhtälöissä. Yhtälöstä (13.8) saadaan AP,i U∗i = RHS− X j Ai,j U∗j = rhs−Vi (∇p)i − X Ai,j U∗j = Hi (U, U∗ )−Vi (∇p)i j (13.9) Jos oikean puolen termi ’RHS’ lasketaan uudestaan, operaattori H riippuu vain uusista nopeuden arvoista U∗ . Tällä tuskin on merkitystä iteraation tehokkuuden kannalta, joten käytännössä laskentatehokkuuden vuoksi termi riippuu myös edellisen kierroksen arvoista. Kirjoittamalla painegradientti erilleen ei tässä vaiheessa ole otettu kantaa sen diskretointiin. Uusi nopeus pinnalla j saadaan keskiarvona tai tarkemmin interpoloimalla seinän kahden puolen olevien H(U, U∗ )-termien avulla seuraavasti: U∗j = ¯ j (U, U∗ ) H (∇p)j − Vj ¯ ¯ AP,j AP,j (13.10) Tässä painegradienttien AP -kertoimilla painotettu keskiarvo korvataan kopin pinnalla olevalla painegradientilla. Kirjoittamalla näin lausutuilla pintanopeuksilla massatase ∇ · U saadaan paineyhtälöksi X j Sj n · (∇p)j Vj = X j Sj nj H(U, U∗ ) A¯P,j (13.11) Yhtälöstä ratkaistaan siis suoraan paineita. Poisson-yhtälö ratkaistaan usein algebrallisella monihilamenetelmällä. Tällöin ei ole merkitystä ratkaistaanko suoraan paineita vai painekorjauksia. Yhtälössä (13.11) oikean puolen ’massatase’ ei ole ite- 13.6. VIRTAFUNKTIO-PYÖRTEISYYS -MENETELMÄ 234 raation supetessa nolla, koska se määrittelee vasemmalla puolella olevan painelausekkeen arvon. Gaussin lauseen perusteella tämän voidaan havaita approksimoivan ∇2 p-termiä. Rhie-Chow termi tuli implisiittisesti lisätyksi vaihtamalla paineen interpolointi- tapa kopin seinällä. Kirjoittamalla yhtälö (13.11) painekorjauksen p′ = p − pn avul- la, oikealle puolelle voidaan siirtää painegradienttitermi, joka voidaan yhdistää massavirtaan. Tällöin saataisiin Rhie-Chow interpolointia vastaava ensimmäisen kertaluvun vaimennustermi. Korjaustermi on piilossa H(U)-lausekkeissa, koska painegradientti puuttuu niistä. Tarkastellaan tilannetta uudestaan delta-muotoisisten yhtälöiden avulla. Kirjoitetaan ensin pintanopeuden lauseke (5.22) vektorimuotoon Vi+1/2 1 1 (∇p)i+1 + (∇p)i − (∇p)i+1/2 (13.12) U∗i+1/2 = (U∗i+1 + U∗i ) + ¯ 2 AP,i+1/2 2 Sijoittamalla tähän yhtälöstä (13.9) nopeuksien arvot U∗i+1/2 " # 1 Hi+1 (U, U∗ ) (∇p)i+1 Hi (U, U∗ ) (∇p)i = − Vi+1 + − Vi 2 AP,i+1 AP,i+1 AP,i AP,i Vi+1/2 1 (∇p)i+1 + (∇p)i − (∇p)i+1/2 (13.13) + ¯ AP,i+1/2 2 Siirtämällä yhtälön toisen rivin painevaimennustermissä tilavuus ja lausumalla AP kerroin pisteissä i ja i + 1, saadaan U∗i+1/2 " # Vi+1/2 1 Hi+1 (U, U∗ ) Hi (U, U∗ ) − ¯ (∇p)i+1/2 − = ¯ 2 AP,i+1 AP,i AP,i+1/2 (13.14) Pintanopeudelle saatiin siis yhtälöä (13.10) vastaava yhteys. Yhtälöön 13.11 perustuva menetelmä on siis sama kuin aiemmin tällä kurssilla esitetty painekorjausmenetelmä. H-termin laskennassa voi tulla iteraation aikana pieniä eroja, mutta lopputulos ei poikkea. OpenFOAMissa lasketaan yhtälöstä (13.14) uusi nopeus (ja siihen perustuva massavirta), jota käytetään seuraavalla iteraatiokierroksella. Ensimmäisellä iteraatiokierroksella nopeus lasketaan keskiarvona. Kurssikoodissa massavirta lasketaan noodipisteiden arvosta aina kunkin iteraatiokierroksen alussa. 13.6 Virtafunktio-pyörteisyys -menetelmä Keskeinen ongelma kokoonpuristumattomalla virtauksella liittyy paineen määritykseen, johon painekorjaus oli ensimmäinen tepsivä keino. Sitä ennen kokoonpuristumattomia virtauksia laskettiin pyörteisyys-virtafunktiomenetelmällä, jossa paineen 13.7. NÄENNÄISPURISTUVUUSKEINO 235 määritys kierretään eliminoimalla se kokonaan pois yhtälöistä. Kaksidimensioisessa tapauksessa virtafunktio määritellään yhtälöillä ∂ψ = u ∂y ∂ψ = −v ∂x (13.15) ja pyörteisyys, joka kaksidimensioisessa tapauksessa on skalaari, on ω= ∂v ∂u − ∂x ∂y (13.16) Derivoimalla yhtälön (13.15) nopeudet ja sijoittamalla ne pyörteisyyden määritelmään (13.16), saadaan virtafunktiolle Poisson-yhtälö ∂2ψ ∂2ψ + 2 = −ω ∂x2 ∂y (13.17) Paine voidaan eliminoida liikemääräyhtälöistä derivoimalla x-liikemääräyhtälö y:n suhteen ja y-liikemääräyhtälö x:n suhteen ja vähentämällä tulokset toisistaan. Tällöin pyörteisyydelle saadaan seuraava yhtälö: ρ ∂ω ∂ω ∂ω ∂2ω ∂2ω + ρu + ρv =µ + 2 ∂t ∂x ∂y ∂x2 ∂y (13.18) Ratkaisu etenee siten, että yhtälöstä (13.18) ratkaistaan ensin pyörteisyys aika-askeleittain. Sen jälkeen voidaan Poisson-yhtälöstä ratkaista virtafunktio ja yhtälöstä (13.15) nopeudet. Paine ei siis ratkea suoraan ollenkaan. Paine-eroja voidaan approksimoida Bernoullin yhtälöstä saatavalla paineella. Liikemääräyhtälöstä voidaan johtaa tarkempi lauseke paineelle, mutta tällöin päädytään jälleen monimutkaiseen Poisson-yhtälöön. Pyörteisyys-virtafunktiomenetelmä monimutkaistuu kolmidimensioisessa tapauksessa, koska sekä pyörteisyys että virtafunktio ovat tällöin vektoreita. Uusia menetelmiä silti esitetään nykyisinkin, vaikka suurin osa laskennasta on tapahtunut primitiivisuureita (paine ja nopeus) käyttäen jo 60-luvulta lähtien. 13.7 Näennäispuristuvuuskeino Näennäispuristuvuus- eli pseudokompressibiliteettimenetelmä on jo vuodelta 1968 (Chorin) eli se on vain hieman MAC-menetelmää nuorempi. Menetelmän avulla 13.7. NÄENNÄISPURISTUVUUSKEINO 236 voidaan yksinkertaisesti laajentaa aerodynaamisia tarkoituksia varten kehitettyjen ohjelmien soveltuvuusaluetta alhaisen Machin luvun virtaukselle. Perusideana on säilyttää alkuperäisen menetelmän aikaintegrointipohjainen iterointi, vaimennustermit tai ylävirtapainotus sekä reunaehtojen käsittely. Tarkastellaan seuraavia yksidimensioisia yhtälöitä 1 ∂p ∂u +ρ = 0 2 β ∂t ∂x ∂u ∂u2 1 ∂p + + = 0 ∂t ∂x ρ ∂x (13.19) Kyseessä ovat yksidimensioiset kitkattoman virtauksen yhtälöt, joissa jatkuvuusyhtälöön on lisätty ylimääräinen paineen aikaderivaattatermi. Siinä parametrilla β on sama dimensio kuin nopeudella ja se vaikuttaa voimakkaasti menetelmän Jacobin matriisin ominaisarvoihin eli karakteristisiin nopeuksiin. Yhtälö (13.19) on käsitelty kokoonpuristumattomana, joten jatkuvuusyhtälössä ei alun perin ollut aikaderivaattaa ollenkaan. Lisäämällä yhtälöön (13.19) paineen aikaderivaatta, probleema saadaan muutettua näennäisesti hyperboliseksi. Yhtälöryhmän Jacobin matriisiksi saadaan 0 β 2ρ A= 1 2u ρ josta saadaan näennäiset karakteristiset nopeudet λ1,2 = u ± q u2 + β 2 (13.20) (13.21) josta huomataan ominaisarvojen olevan samat kuin kokoonpuristuvilla yhtälöillä, kun näennäisäänennopeus on c = (u2 + β 2 )1/2 Näin määritelty ’äänennopeus’ riippuu myös paikallisesta virtausnopeudesta u. Äänennopeuden paikallinen vaihtelu vaikuttaa menetelmän stabiilisuuteen, samoin parametrin β valinta. On huomattava, että tässä muodossa näennäispuristuvuuskeinolla ei voida ratkoa ajasta riippuvia ongelmia, koska jatkuvuusyhtälön aikaderivaattatermi ei ole fysikaalinen. Fysikaalinen aikaderivaatta voidaan kuitenkin lisätä yhtälöihin lähdeterminä ja suorittaa aika-askeleen sisällä näennäisaikaintegrointi. Tästä käytetään nimitystä ’dual timestepping’ (Jameson, Jaakko Hoffrenin väitöskirja). Lisäämällä paineen aikaderivaattatermi myös liikemääräyhtälöön, saadaan karakteristisen yhtälön juuriksi λ1,2 = u ± β (13.22) 13.7. NÄENNÄISPURISTUVUUSKEINO 237 Tätä menettelyä on käytetty FINFLO-ohjelmassa. Tällöin pseudoäänennopeus ei riipu virtausnopeudesta, mikä helpottaa huomattavasti implisiittisen vaiheen käsittelyä. Menetelmä on kuitenkin edelleen herkkä parametrin β valinnalle. Käytännössä laskenta ikään kuin skaalataan jollekin näennäiselle Machin luvulle. Mikäli suoritetaan laskenta dimensiottomassa muodossa, ei yhtälön (13.22) käytöllä ja Machin luvun keinotekoisella kasvattamisella ole juuri eroa. Jälkimmäinen tapa on fysikaalinen ja johtaa esimerkiksi Machin luvulla 0,2 pieniin tiheyksien muutoksiin laskenta-alueessa, kun taas näennäispuristuvuuskeino esitetyssä muodossa asettaa tiheyden vakioksi koko laskenta-alueessa. Näennäispuristuvuusmenetelmä on läheistä sukua paljon uudemmalle matriisin pohjustamiskeinolle (1.26) Ap ∂u ∂U(u) ∂F(u) ∂G(u) ∂H(u) + + + + =0 ∂τ ∂t ∂x ∂y ∂z (13.23) Pohjustamiskeinossa lähdetään fysikaalisesta tilanteesta, jossa tiheyttä ei aseteta vakioksi. Sen sijaan tehdään näennäislinearisointeja matriisin Ap avulla, joilla fysikaalista tilannetta muutetaan aivan samoin kuin näennäispuristuvuuskeinossa. Pohjustaminen on myös eräänlaista skaalausta, joka voidaan tehdä myös Reynoldsin luvulle. Probleemasta saadaan periaatteessa hyvin käyttäytyvä skaalaamalla se aina sopiville Machin ja Reynoldsin luvuille. Kokoonpuristuvan virtauksen ratkaisijoissa on joko lisätty Jameson-tyyppinen vaimennustermi tai sitten ylävirtapainotukseen perustuva Riemann-ratkaisu. Nämä vaimennukset on oltava mukana myös käytettäessä näennäispuristuvuus- tai matriisin pohjustamiskeinoja. Erityisesti pseudoäänennopeuteen perustuvalla Riemannratkaisulla ei ole mitään fysikaalista perustaa. Menettely toimii, koska vastaava ratkaisutapa toimii myös kokoonpuristuvassa tapauksessa. Lisätyllä Jameson-tyyppisellä vaimennustermillä ei tietenkään missään tapauksessa ole mitään fysikaalista tulkintaa. Ratkaisussa on vain pidettävä huolta, että vaimennustermi säilyy pienempänä kuin fysikaalinen vaimennus. Eräs vaimennustermeihin liittyvä hankaluus on se, että mahdollinen implisiittinen ratkaisu riippuu vaimennustermeistä. Lisäksi aikaintegrointipohjainen menettely johtaa aina paikallisesti hyvin pieniin aika-askeliin siellä, missä laskentatilavuudet ovat pieniä. Tämä heikentää esillä olevan tyyppisten menettelytapojen tehokkuutta. Selvää käsitystä siitä, mikä on näennäispuristuvuuskeinon tehokkuus paine- 13.8. TIHEYSPOHJAISET MENETELMÄT 238 korjausmenetelmään verrattuna, ei ole olemassa. On lisäksi huomattava, että näennäispuristuvuusmenetelmä voidaan myös tulkita eräänlaiseksi painekorjausmenetelmäksi (kts. Ferziger-Peric). 13.8 Tiheyspohjaiset menetelmät Tiheyspohjaiset menetelmät perustuvat yhtälöön (13.23) ja ratkaisukeinoja selostettiin luvussa 2. Riittävän suurella Machin luvulla ei edellisessä kappaleessa kuvattua matriisin pohjustusta tarvita. Raja on hyvin tapauskohtainen, ja joskus laskenta konvergoi jopa silloin, kun Machin luku on alle 0,1. Koska tiheyspohjaiset menetelmät ovat sukua näennäispuristuvuuskeinolle, joka puolestaan voidaan osoittaa olevan likimain sama kuin painekorjausmenetelmä käyttäen yhtä Jacobin iteraatiokierrosta sen ratkaisuun, voidaan todeta perinteisten ratkaisumenetelmien pohjautuvan saman kaltaisiin perusideoihin, vaikka ne saattavat vaikuttaa hyvinkin erilaisilta. 13.9 Muita lähestymistapoja 13.9.1 Epäjatkuva Galerkinin keino (discontinuos Galerkin method) Epäjatkuva Galerkinin menetelmä. 13.9.2 Hila-Boltzmann -menetelmät Hila-Boltzmann menetelmä 13.9.3 Sileä partikkelihydrodynamiikka (smoothed particle hydrodynamics) Sileä partikkelihydrodynamiikka. 13.9. MUITA LÄHESTYMISTAPOJA 239 • Painekorjausmenetelmät voidaan jakaa ’SIMPLE’-tyyppisiin, osaaskelten menetelmiin ja MAC-menetelmään. Myös näennäispuristuvuuskeino voidaan tulkita painekorjausmenetelmäksi. • SIMPLE-tyyppisiä menetelmiä ovat mm. SIMPLER, PISO ja SIMPLEC. Näistä SIMPLER ja PISO menetelmissä joudutaan ratkaisemaan Poisson-yhtälö kahdesti iteraatiokierrosta kohden, mutta toisaalta kierrosten määrä vähenee. • Pyörteisyys-virtafunktiomenetelmällä saadaan kaksidimensioisessa tapauksessa yhtälöiden lukumäärä vähenemään kahteen, mutta paineen määritys on hankalaa. • Kolmidimensioisessa tapauksessa saadaan 6 yhtälöä, koska sekä pyörteisyys että virtafunktio ovat tällöin vektorisuureita • Näennäispuristuvuus- ja matriisin pohjustamismenetelmissä muutetaan laskenta hyperboliseksi ja Jacobin matriisin ominaisarvot sellaisiksi, että ne vastaavat sopivaa alisoonista tilannetta. • Näennäispuristuvuuskeinon ja painekorjauksen tehokkuuksia eri tilanteissa ei ole juuri evaluoitu. • Tiheyspohjaiset menetelmät perustuvat yhtälöiden aikaintegrointiin ja edellyttävät, että tiheys on funktio paineesta • Matriisin pohjustuksella korvataan tiheyden ja paineen välinen fysikaalinen yhteys numeerisella kytkennällä • Vuon laskenta suoritetaan yleensä eri tavalla paine- ja tiheyspohjaisissa menetelmissä, mutta ei aina • Kaikki menetelmät vaativat eksplisiittisessä vaiheessa jonkinlaisen kytkennän rinnakkaisten paineiden välille Päivitetty 2.4.2014 240 14 Virtausratkaisijat 14.1 Historiaa Ensimmäinen kaupallinen virtausratkaisija lienee PHOENICS, joka on ollut markkinoilla vuodesta 1981 lähtien. PHOENICS on monen muun koodin prototyyppi. PHOENICSin historia alkaa jo 1960-luvulta Imperial Collegessa professori Brian Spaldingin vetämästä ryhmästä. Painekorjausmenetelmästä kehitettiin Imperial Collegessa SIMPLE-versio 1970-luvun alussa (mm. Patankar-Spalding). Samoilta ajoilta on standardi k − ǫ-mallia koskevat ensimmäiset artikkelit (Launder-Jones). Ns. teollisuusprosessien simuloinnille oli luotu edellytykset näiden peruspilarien myötä. Pitkään ratkaisumenetelmät pysyivät käytännössä differenssimenetelminä, vaikka ne oli formuloitu kontrollitilavuusmuotoon. Tämän tradition seurauksena kaupallisissa ohjelmissa vieläkin listataan erilaisia ’koordinaatistovaihtoehtoja’: karteesinen, sylinteri, yleinen käyräviivainen, vaikka kaikki on hoideltavissa yhdellä ja samalla kontrollitilavuusmuodolla. Toinen menetelmätyyppi, jota teknillisissä sovelluksissa käytetään, on elementtimenetelmä. Ensimmäinen tunnettu elementtimenetelmään perustuva ratkaisija oli FIDAP. Perinteisessä elementtimenetelmässä päädytään symmetrisiin keskeisdifferenssiä vastaaviin laskentamolekyyleihin. Ohjelmat olivat periaatteessa tarkkoja verrattuna vanhaan alan standardiin, 1. kertaluvun ylävirtamenetelmään, mutta erittäin epäluotettavia. Elementtimenetelmäpohjaisten ohjelmien käyttö ei ole vieläkään niin yleistä kuin kontrollitilavuusmenetelmään perustuvien, vaikka on kehitetty uusia ns. stabiloituja elementtimenetelmiä. Nämä ovat osoittautuneet käytännössä erittäin käyttökelpoisiksi. Viime aikoina on kehitetty ns. epäjatkuvaa Galerkinin keinoa, jossa yhdistetään kontrollitilavuus- ja elementtimenetelmiä. Tätä ratkaisutapaa ei ole tiettävästi kaupallisissa koodeissa. 14.1. HISTORIAA 241 Rakenteettomaan laskentahilaan ryhdyttiin panostamaan kaupallisissa ohjelmissa 1990-luvun jälkipuoliskolla. Tunnetuimmilla koodeilla kuten FLUENTilla ja CFX:llä oli ensin ns. UNS-versiot ja myöhemmin ne korvattiin versioilla, joissa koodi pystyy käsittelemään mielivaltaisen muotoisia laskentatilavuuksia. Rakenteelliset ja rakenteettomat hilat ratkaistaan samalla menetelmällä. FLUENT ja CFX perustuvat kontrollitilavuusmenettelyyn. On syytä huomata, että tarkoittaessaan elementtimenetelmää, ohjelmistotaloilla saattaa olla termistä erilaisia käsityksiä. Joskus pelkästä rakenteettoman hilan käytöstä saattaa seurata, että puhutaan ’elementtimenetelmästä’. Useimmat koodit mainostavat itseään myös kokoonpuristuvalle virtausalueelle. Harvassa ohjelmassa on kuitenkaan sellaista ratkaisumenetelmää, joka olisi tehokas trans- tai ylisooniselle alueelle asti. FLUENTissa on erilliset ratkaisumenetelmät eri nopeusalueille. Muissa ohjelmissa yleensä lisätään sopivasti vaimennusta, jolloin saadaan kokoonpuristumattoman alueen koodi toimimaan myös aerodynaamisissa sovelluksissa. Varsinaisissa aerodynamiikkaa varten kehitetyissä ohjelmissa ratkaisumenetelmä perustuu käytännössä aina aikaintegrointiin ja mitään painekorjausyhtälöä ei käytetä. Tällöin laskennasta myös puuttuu sen ehkä aikaa vievin osa. Vasta viime vuosina on myös aerodynaamisiin sovelluksiin ollut saatavissa erityisohjelmia, kuten CFD-FASTRAN ja Aerosoftin GASP ja GUST. Tässä yhteydessä käsitellään lyhyesti tärkeimpiä teollisuusprosessien simulointeihin tarkoitettuja ohjelmia. Laajemmin ohjelmia käsitellään virtaussimuloinnin kurssilla. Koska näissä on yleensä muutakin kuin puhdasta virtausta, on ohjelmiin rakennettu malleja kemiallisille reaktioille, säteilylle jne. Yleensä koodit on myös ohjelmoitavissa, jolloin käyttäjä voi lisätä omia mallejaan. Eräissä valmisohjelmissa on myös kokonaan valmiiksi rakennettuja simulaattoreita erikoistarkoituksiin. PHOENICS-ohjelmassa on HOTBOX elektroniikkakomponenttien jäähdytykseen, FLAIR LVI-simulointiin jne. Ohjelmista osa on tarkoitettu erikoistarkoituksiin, kuten FLOTHERM elektroniikkateollisuuden ja STAR-CD autoteollisuuden ongelmiin. Suurin osa on yleisohjelmia, joiden uskotaan toimivan hyvin kaikissa mahdollisissa tilanteissa. Toisaalta taas eräät, kuten STAR-CD, ovat kehittyneet tietyn erikoisalan ohjelmistoista kohden yleistä virtausratkaisijaa. Nykyisin johtavissa ohjelmissa ei ole käytännössä suuria laatueroja. Aika monet niistä jopa mainostavat itseään samalla tavoin ’maa- 14.2. SIMULOINTIOHJELMAN RAKENNE 242 VIRTAUSRATKAISU Esikäsittely La nt ske atu los Jälkikäsittely Kuva 14.1: Virtaussimulointiohjelman rakenne. ilman johtavana ohjelmana CFD-alueella’. 14.2 Simulointiohjelman rakenne Kaupallinen virtausratkaisija koostuu kuvan 14.1 mukaisesti kolmesta selkeästi erillisestä osasta. Esikäsittelyssä luodaan geometria ja generoidaan laskentahila. Tämän vaiheen tuloksena saadaan hilan nurkkapisteiden koordinaatit, jotka ovat syöttötietoina varsinaiselle virtausratkaisijalle. Virtausratkaisija tuottaa tuloksena ainakin paineet ja nopeudet koppien nurkkapisteissä jälkikäsittelijälle. Adaptiivisella hilalla osa esikäsittelystä tehdään ratkaisijan sisällä. Jälkikäsittelyssä tiedot on interpoloitava koppien nurkkapisteisiin, vaikka olisi käytetty keskipisteformalismia ratkaisussa. Muuten koko ratkaisuavaruutta ei saada visualisoiduksi. Usein esi- ja jälkikäsittelyohjelmat ovat täysin erillisiä kokonaisuuksia, jotka on vain paketoitu yhteisen valikon alle. Esimerkiksi EnSight-jälkikäsittelijää saa erillisenä ohjelmana ja myös integroituna N3S-ratkaisijaan. Erillisiä esikäsittelyohjelmia ovat puolestaan esimerkiksi ICEM CFD, IGG, GEMS, ja GridPro. Esikäsittelyohjelmissa on linkkejä virtausratkaisijoihin. Esimerkiksi ICEM CFD tuottaa oikeanmuotoista dataa FLUENT-, RAMPANT-, FIDAP- ja STAR-CD-ohjelmia varten. Kaikissa yleisohjelmistoissa on jonkin tasoinen oma sisäänrakennettu esikäsittelyohjelma. Sen rinnalle on mahdollista hankkia jokin edellä mainittu esikäsittelijä. Esikäsittelijöissä on myös CAD-linkki ja pintojen mallinnustapa. Näiden taso 14.3. KATSAUS OHJELMIIN 243 saattaa vaihdella paljonkin ja joskus saattaa olla tarpeen käyttää jotain monipuolisempaa pintojen mallinnuspakettia, kuten PATRAN tai I-DEAS. Pinnat lausutaan jossain CAD-formaatissa kuten IGES. Hilangenerointivaiheessa pinnoille sovitetaan tiheät verkot, jotka riittävällä tarkkuudella approksimoivat pintaa. Varsinainen pinta-hila laaditaan käyttäen näitä verkkoja. Kun pintahilat on laadittu, generoidaan avaruushilat. Koska simulointiohjelma koostuu kolmesta erilaisesta osasta, saattavat näiden osien tasot poiketa toisistaan huomattavastikin. Perinteisesti esi- ja jälkikäsittely ovat olleet simuloinnin heikoimmat linkit ja vasta viime vuosina niiden laatu on noussut siedettävälle tasolle. Tutkimusympäristössä on myös mahdollista kasata järjestelmä erillisistä osista. Esimerkiksi TKK:lla käytetään esikäsittelyssä kaupallista IGG-ohjelmaa, ratkaisussa FINFLOa ja jälkikäsittelyssä EnSightia. Esi- ja jälkikäsittelyvaiheissa käytetään myös itse kehitettyjä ohjelmia. 14.3 Katsaus ohjelmiin 14.3.1 PHOENICS PHOENICS-ohjelmaa voidaan monessa mielessä pitää kaikkien kaupallisten koodien prototyyppinä. Eräänä syynä on Imperial Collegessa opiskelleet henkilöt, jotka ovat levittäneet virtauslaskentatietoutta ympäri maailmaa. PHOENICSin perillisiä ovat olleet ainakin FLUENT, CFD2000, TASCflow ja FLOTHERM. Lisäksi melkein kaikkien muidenkin ohjelmien ratkaisumenetelmät ovat seuranneet PHOENICSin jalanjälkiä. PHOENICSissä eri laskentamoduuleille on kehitetty enemmän tai vähemmän kuvaavia nimiä. Varsinainen ratkaisijaosa on nimeltään EARTH, osamallit ovat satelliitteja ja ne linkitetään satelliitteihin maa-asemien avulla. Painekorjausmenettelystä käytetään lyhennystä SIMPLEST, kaksifaasiratkaisijasta IPSA (Interphase Slip Algorithm). Koodissa on mahdollista käyttää vanhaa limitettyä hilaa, mutta myös kahta eri tyyppistä tavanomaista hilaa. Toisessa käytetään karteesisia nopeuskomponentteja, mutta toisessa kovariantteja. Viimeksi mainittu ratkaisu todettiin aiemmin kaikkein hankalimmin toteutettavaksi nopeuskomponenttien valinnaksi. Turbulenssimallien toimivuus eri tilanteissa kaikilla koodeilla on myös todentamaton asia. Kilpailusyistä ohjelmiin rakennetaan suuri joukko malleja, jotka tule- 14.3. KATSAUS OHJELMIIN 244 vat vasta vähitellen käyttäjien (ja tyytymättömien asiakkaiden!) toimesta testatuiksi. Yleinen käsitys kaupallisten ohjelmien turbulenssimalleista on se, että uudet mallit tulevat käyttöön hitaasti. Eräänä syynä on pyrkimys pitää kaupalliset ohjelmat mahdollisimman varmatoimisina eli robusteina. Kaikkein yleisimmin käytössä oleva k − ǫ-malli on epätarkka useissa tilanteissa, mutta sen käyttöä suositaan juuri robustisuuden vuoksi. 14.3.2 CFX CFX oli aiemmin nimeltään FLOW3D. Se oli peräisin alunperin lähinnä ydinreaktoreiden turvallisuusanalyyseihin keskittyneestä Harwellin tutkimuslaitoksesta. Nykyisin CFX kuuluu Ansysin ohjelmistoperheeseen. Kaupallisesti CFX:ää on myyty jo vuodesta 1990 lähtien. Ohjelma oli ensimmäisiä, jossa limitetyn hilan rinnalle otettiin käyttöön Rhie ja Chow-menetelmä. FLOW 3D:ssä oli valittavissa myös toisen kertaluvun diskretointeja jo 1980-luvulla. Diskretointien lukumäärä ei ole kovasti noussut. Listassa on myös edelleen erillisinä menettelytapoina 2. kertaluvun ylävirtamenetelmä, QUICK ja TVD/MUSCL, vaikka viimeksi mainitun avulla saadaan tietenkin myös kaksi ensin mainittua. Turbulenssimallit ovat likimain samat kuin PHOENICS-ohjelmallakin. Lisänä on Reynoldsin vuo-mallit. Koodia markkinoidaan yleisohjelmana, jolla ratkeavat pyörivien koneiden, laivojen, tulipesien jne. virtaukset. Esitteissä CFX:n laskentanopeutta ’verrattuna toiseen johtavaan CFD-ohjelmaan’ on pidetty hyvänä. Laskentanopeusvertailuihin on aina suhtauduttava epäillen, koska eri laskentatapauksissa konvergenssinopeudet eivät välttämättä ole yhteneväisiä eri ohjelmilla. TASCflow oli kanadalaisen ASC:n (Advanced Scientific Computing) kehittämä ohjelmisto. Kyseessä oli CFX:n tavoin alunperin yleinen virtausratkaisija, mutta siitä kehittyi vähitellen erikoisohjelma pyörivien koneiden virtauksien laskentaan. Sittemmin ASC siirtyi AEA Technologyn omistukseen. Myös CFX:ää ryhdyttiin kehittämään pyörivien virtauslaitteiden laskentaan, ja vähitellen TASCFlow hävisi markkinoilta. Pyöriviä virtauskoneita, erityisesti kompressoreita ja kaasuturbiineja varten on edelleen olemassa myös muita erikoisohjelmia. 14.4. LOPUKSI 245 14.3.3 FLUENT FLUENT on varsin vanha ohjelma, joka alunperin oli lähes sama kuin PHOENICS, mutta varustettu kätevämmällä ja samalla alkeellisemmalla käyttöliittymällä. 1990luvulla pääyhtiö FLUENT Inc., USA alkoi voimakkaasti kasvaa yritysostoin. Ohjelmistotalo ylläpitää nykyisin myös RAMPANT, NEKTON, POLYFLOW ja FIDAP -ohjelmia. FLUENT oli markkinoinnissaan varsin aggressiivinen ja kilpaili lähinnä CFX:n ja STAR-CD:n kanssa. Ohjelmiston taso alkoi nopeasti parantua vasta rakenteettoman ohjelmaversion myötä. Kyseessä oli kokonaan uusi ohjelma, jossa voitiin soveltaa mielivaltaisen muotoisia laskentatilavuuksia. FLUENTkin siirtyi myöhemmin Ansysin omistukseen. CFX:n ja FLUENTin lisäksi Ansysillä on erikoisohjelmia moniin virtauslaskennan sovelluksiin. FLUENTissa on tavanomaiset turbulenssimallit ja pääpaino on suuren Reynoldsin luvun malleissa, kuten muillakin ohjelmilla. FLUENT oli ilmeisesti ensimmäinen koodi, jossa tietoisesti ryhdyttiin pimittämään fysikaalisia malleja siten, ettei niitä edes manuaalista ole saatavilla. Simuloinnin tekijän ei siten edes oleteta tarvitsevan tietää millä tavoin ja mitä ollaan laskemassa. FLUENTissa oli ensimmäisenä RNG-pohjainen k − ǫ-malli, johon myös liittyy julkistamattomia osia. 14.4 Lopuksi Tämän kurssin harjoitusten yhteydessä on kehitetty kaksidimensioinen virtausratkaisija, jossa turbulenssin kuvausta lukuunottamatta on jo kaikki ns. kaupallisten ohjelmien ratkaisijaosien piirteet. Eräiltä osin on jopa käytetty edistyksellisempiä menettelytapoja, kuin yleensä kaupallisissa ohjelmissa. Tehty koodi eroaa kaupallisista ratkaisijoista lyhyytensä vuoksi. Kun ohjelmaa ryhdytään monipuolistamaan geometrian kuvauksen ja fysikaalisten mallien osalta, koodin rivimäärä paisuu nopeasti, mutta perusrakenne noudattelee kehittämäämme ratkaisijaa. Ratkaisumenetelmien hyvyyttä vertaillessa mielipiteet ovat tietenkin subjektiivisia, mutta seuraavassa tuodaan kuitenkin esille eräitä tämän kirjoittajan kokemuksen mukaan tärkeitä virtausten ratkaisualgoritmeihin liittyviä piirteitä: • menetelmän ja tietokoneohjelman täytyy olla mahdollisimman yksinkertainen. Tämän periaatteen mukaan olemme melko lähellä optimia, kun käy- 14.4. LOPUKSI 246 tetään tavanomaista hilaa ja yksinkertaistettua vaimennustermiä seinämänopeuksien laskennassa. • yksinkertaisuudesta seuraa myös se, että on tarkoin harkittava kannattaako tehdä useampia Poisson-yhtälön ratkaisuja iteraatiokierrosta kohden, vaikka kokonaisiteraatiomäärä vähenisikin. Ratkaisuaika tulee iteraatiokierrosta kohden pidemmäksi ja ohjelma monimutkaistuu. Tämän vuoksi perus-SIMPLE on edelleen yleisin painekorjausmenetelmä. • kaikessa numeerisessa laskennassa peruslause {numeriikka}∆T = {f ysiikka} (14.1) kannattaa pitää mielessä. Ferziger-Pericin ’viivästetyn korjauksen’ periaate on käytännössä sama, mutta monimutkaisemmin formuloitu. • ratkaisualgoritmissa kannattaa vasemmalla puolella pitää primitiivimuuttujia. Erittäin sopiva valinta on (p, V~ , T )T . Tällöin mahdollinen tilayhtälö lausutaan muodossa ρ = ρ(p, T ). Mikäli energiayhtälöä ei käytetä, pudotetaan lämpötila ratkaistavien suureiden vektorista pois. Päivitetty 24.4.2013 247 Hakemisto adaptiivinen ratkaisu, 176 Davidsson, 96 ADI, 114, 138 Delaunayn kolmiointi, 178, 184 Aerosoft, 238 delta-muoto, 134 agglomeration multigrid, 176 domain decomposition, 164 aineominaisuudet, 13 Doormaal, 68 alirelaksaatio, 122 nopeuksien, 84 paineen, 84 Amdahlin laki, 169 AMG, 142 artificial compressibility method, 16 Beam ja Warming, 18 EARTH, 241 ekspansioviuhka, 26 elementtimenetelmä stabiloitu, 237 elliptinen, 69 energian säilyminen, 10 energiayhtälö, 10 bikonjugaattigradienttimenetelmä, 140 kineettisen energian, 33 blokkitridiagonaalinen, 129 sisäenergian, 33 Burgersin yhtälö, 25 CDC-7600, 63 CFD-FASTRAN, 238 CFD2000, 240 CFX, 241 Choleskyn faktorointi, 137 Chorin, 17 constitutive equations, 128 constraint, 11 Coriolisvoima, 219 Courantin kriteeri, 15 Cray T3E, 163 Cray-1, 63 EnSight, 239 entropiaehto, 26 entropiakorjaus, 28 entropy fix, 28 esikäsittely, 239 esitasoittaminen, 148 etenevän rintaman menetelmä, 178, 184 Euler, 31 Eulerin yhtälöt, 13, 31 primitiivimuoto, 32 expansion fan, 26 expansion shock, 26 faktorointi HAKEMISTO 248 approksimatiivinen, 52, 114 GridPro, 240 DDADI, 139 GUST, 238 LU, 52, 139 LU-SGS, 139 false time step, 84 FAS, 142, 171 Ferziger-Peric, 20 FIDAP, 237, 240 FINFLO, 207, 240 FLAIR, 238 Fletcher, 21 FLOW3D, 241 FLOWTHERM, 238, 240 FLUENT, 63, 240, 242 flux-difference splitting, 18, 39 flux-vector splitting, 18, 39 FMG, 142, 175 forcing function, 173 fractional step methods, 230 full multigrid, 175 Galerkinin approksimaatio, 146 Galpin, 68 GASP, 238 Gauss-Seidel, 115, 136 linjoittainen, 137 red-black, 137 Gaussin lause, 7, 11, 190 GCA, 146 GEMS, 240 geometrinen säilymislaki, 208, 218 GMG, 171 Godunov, 18 haamukoppi, 109, 158 hajautettu muisti, 163 Harlow, 17, 19, 62 harvennusaalto, 28 harvennusaaltoshokki, 28 Harwell, 241 Helmholz-yhtälö, 63, 69 hilangenerointi, 184 algebrallinen, 184 differentiaaliyhtälöllä, 184 elliptinen, 184 hyperbolinen, 184 parabolinen, 184 Hirsch, 21 HOTBOX, 238 huonosti asetettu probleema, 43 hyperbolinen, 11, 31 I-DEAS, 240 ICEM CFD, 240 Idelchik, 64 IGG, 240 ilmansuuntamerkinnät, 16, 109 ILU, 137 Imperial College, 237, 240 implisiittinen menetelmä Burgersin yhtälön, 55 diffuusiotermi, 52 Eulerin yhtälöiden, 50 kaksidimensioinen, 112 käyräviivainen laskentahila, 194 HAKEMISTO 249 skalaariyhtälön, 55 kokonaisderivaatta, 12 yksidimensioinen, 79, 98 kokonaisenergia, 10 integraalimuoto, 6 kokonaisentalpia, 10 IPSA, 241 kokonaislämpötila, 49 isojen pyörteiden menetelmä, 19 Kolmogorov, 19 iterointi konjugaattigradienttimenetelmä, 139 aika-askeleen sisäinen, 56 Jacobin iteraatio, 136 Jacobin matriisi, 32, 128, 218, 232 faktoroitu, 53, 55 similaarisuusmuunnos, 36 ylävirtapainotus, 51 jaettu muisti, 163 Jameson, 18 jatkuvuusyhtälö, 7, 11, 23, 46 Johansson, 96 Jones, 19 jälkikäsittelijä, 239 jälkitasoittaminen, 148 jännitystensori, 8 karakteristika, 25, 34, 40, 43 karakteristikamenetelmä, 41 karakteristinen muoto, 39 karakteristinen nopeus, 14, 232 karakteristiset suureet, 39 kertavastus, 64 keskipakovoima, 219 kineettinen energia, 10 kitkakerroin, 214 kitkatermi, 9, 12 kitkaton virtaus, 13 kohtauskulma, 211 konservatiiviset suureet, 35 kontravariantti nopeus skaalattu, 54, 185, 189 kontrollitilavuusmenetelmä, 6 käyräviivaisella hilalla, 187 rakenteettomalla hilalla, 195 konvektio-diffuusioyhtälö, 5 konvektionopeus, 54, 185, 189 interpolointi, 91 käyräviivainen hila, 200 liikkuvalla laskentahilalla, 218 konvergenssi, 134 kvadraattinen, 128 koordinaatistomuunnos, 187 kovariantti nopeus, 185 kytketty ratkaisu, 68, 129 laskentahila liikkuva, 216 Launder, 19 Lax-Wendroff -menetelmä, 56 Leibnizin sääntö, 217 level set -menetelmä, 228 liikemäärän säilyminen, 7 liikemääräyhtälö, 7, 12 x-suuntainen, 9 kaksidimensioinen, 110 HAKEMISTO yksidimensioinen, 24 250 MUSCL, 21, 56 limitetty hila, 17, 73, 227 muunnosmatriisi, 36, 198, 220 line-Gauss-Seidel, 115 MWIM, 92 linearisointi, 128 lähdetermin, 75 tiheyden, 82 lohkorakenne, 158 LU-decomposition, 131 LU-faktorointi epätäydellinen, 137 LU-hajotelma, 131 epätäydellinen, 137 lämmönjohtavuus, 10 lämmönsiirtokerroin, 216 MAC, 17, 19, 62, 226, 228 Machin luku, 12 marker, 228 marker and cell -menetelmä, 17, 226, 228 massan säilyminen, 7 massatase, 65 materiaaliderivaatta, 12 matriisin pohjustaminen, 14, 17, 233 matriisin pohjustus, 140 modifioitu yhtälö, 21 momentin laskenta, 210 monihilamenetelmä, 141, 170 N3S, 238 Nakayama, 19 Navier, 9 Navier–Stokes-yhtälöt, 30 NEKTON, 242 Newtonin menetelmä, 128 nopeuspotentiaali, 13 nostovoima, 211 numeerinen vaimennus, 21 näennäisaika-askel, 57, 84 näennäisaikaintegrointi, 57 näennäispuristuvuuskeino, 16, 46, 92, 226, 232 octree, 177 ohutkerrosapproksimaatio, 201 ominaissisäenergia, 10 ominaisvektorit oikeat, 39 vasemmat, 37 osa-askelten menetelmä, 230 painekorjausmenetelmä, 5, 46, 226, 228 käyräviivaisella hilalla, 197 agglomeraatio, 176 limitetyllä hilalla, 78 algebrallinen, 142, 145, 175 putkiverkon, 63 geometrinen, 142, 171 tavanomaisella hilalla, 98 täysi, 142 yksidimensioinen, 62 Moody, 64 MPI, 164 painekorjausyhtälö kaksidimensioinen, 116 HAKEMISTO 251 käyräviivaisella hilalla, 199 puoli-implisiittinen menetelmä, 82 ominaisuudet, 68 putkiverkko, 64 putkiverkon, 67 puurakenne, 177, 183 tavanomaisella hilalla, 102 PVM, 164 yksidimensioinen, 83 PWIM, 92 pakotefunktio, 173 pyörteisyys, 16 paneelimenetelmä, 18 pyörteisyystensori, 8 parabolinen, 11 parallelization, 157 quadtree, 177 coarse-grain, 158 Raithby, 68 fine-grain, 157 rajakerrosyhtälöt, 13, 18 Patankar, 19, 20 rajoittaminen, 143 Patankarin säännöt, 71 RAMPANT, 240, 242 PATRAN, 240 residuaali, 133 Peclet’n luku, 15 restriction, 143 peilaaminen reunaehdot, 43, 104, 119, 159 jännitystensorin, 223 Eulerin yhtälöiden, 44 nopeuskomponenttien, 221 fysikaaliset, 44, 47 pyörteisyyden, 223 kiinteän seinän, 49, 119 PHOENICS, 63, 237, 240 käyräviivaisella hilalla, 220 Picardin iteraatio, 129 Navier–Stokes-yhtälöiden, 44 pinta-alan laskeminen, 208 no-slip, 49 pintavoimat, 8 numeeriset, 44 PISO, 68, 230 sisään- ja ulosvirtaus, 48 pivoting, 131 slip, 50 PLIM-menetelmä, 42 syklinen, 160 pohjustusmatriisi, 134 symmetria, 48, 220 Poisson-yhtälö, 63, 69, 116, 126, 227 vapaa virtaus, 48 POLYFLOW, 242 von Neumann, 121 post-smoothing, 148 Reynoldsin luku, 15, 19, 31 pre-smoothing, 148 Rhie ja Chow, 20, 92 primitiivimuoto, 6 Rhie–Chow-interpolointi, 71, 93 prolongation, 143 Riemann-ratkaisu, 18, 27, 39 HAKEMISTO 252 rinnakkaistaminen, 157, 162 Stone, 117 RISC-prosessori, 163 Stonen menetelmä, 137 Roache, 16 substantiaaliderivaatta, 12 Roe, 18 supertietokone, 63 Roen menetelmä, 27 säilymismuoto, 6 sarjamuotoinen ratkaisu, 69 satelliitti, 241 säilymisominaisuus, 18 säilymisperiaate, 6 scaling, 158 Tannehill-Anderson-Pletcher, 21 Scarboroughin kriteeri, 69 TASCflow, 63, 240, 241 seinämäfunktio, 121 tasoittaminen, 143 sequential solution, 69 TCGMSG, 164 shakkilautaratkaisu, 89 tehon laskenta, 210 side-ehto, 11 Thomasin algoritmi, 132 siksak-ratkaisu, 90 Tiheyspohjaiset menetelmät, 234 SIMPLE, 19, 68, 82 tilavuuksien laskeminen, 209 SIMPLEC, 229 tilavuusvoima, 9 SIMPLER, 68, 229 tilayhtälö, 13, 23 SIMPLEST, 229, 241 transfiniitti interpolointi, 184 simultaneous solution, 68 trilineaarinen interpolointi, 147 SIP, 117, 138 turbulenssimallit, 241 skaalautuvuus, 158, 163 skalaarisuure, 6 skalaariyhtälö ratkaisu, 71 smoother, 143 SOR, 137 Spalding, 19, 63 spektraalisäde, 134 k − ǫ, 19 RNG k − ǫ, 241, 243 algebrallinen, 18 ison Reynoldsin luvun, 121 pienen Reynoldsin luvun, 121 TVD-menetelmä, 20 Univac-1108, 63 staggered grid, 73 V-sykli, 149, 175 STAR-CD, 238, 240 vahvasti implisiittinen proseduuri, 138 Stokes, 9 vaimennustermi, 21, 92 Stokesin yhtälöt, 13 yksinkertaistettu, 106 HAKEMISTO van Leer, 18, 44 vastusvoima, 211 vektorointi, 161 venymänopeustensori, 8 vesi-isku, 42 viivästetty korjaus, 244 virtafunktio, 16 virtafunktio-pyörteisyys -menetelmä, 16, 46, 231 virtausratkaisija, 239 virtausyhtälöt, 7 yksidimensioiset, 75 VOF, 226, 228 voimien laskenta, 210 volume of fluid -menetelmä, 226, 228 von Neumann, 62 vuon erotuksen ositus, 39 vuovektori, 30 vuovektorin ositus, 18, 39 W-sykli, 149 water-hammer, 42 Welch, 17, 62 ylirelaksaatiomenetelmä, 137 ylispesifioitu probleema, 43 äänen nopeus, 12, 34 253
© Copyright 2024