123 5 Painekorjausmenetelmä ja virtausratkaisun määrittely 5.1 FLUENTin ratkaisumenetelmät Kerrataan vielä ratkaisumenetelmien pääpiirteet. FLUENTin tiheyspohjainen ratkaisija on peräisin RAMPANT-ohjelmasta ja sen perusta on aikaintegrointipohjainen. Epälineaarisuuden vuoksi yhtälöitä joudutaan iteroimaan ja tiheyspohjaisella menetelmällä tämä tapahtuu integroimalla yhtälöitä ajan suhteen. Ratkaisijan tekemiä näennäisaika-askelia säädellään Courantin luvun avulla. Koska tarkoituksena on laskea tasapainotilaa, menetelmä ei ole ajan suhteen tarkka, vaan kyseessä on pikemmin iteraatiokierrokset kuin aika-askeleet. Ratkaisun kulku on hahmoteltu kuvaan 5.1. Kierroksen aluksi päivitetään nesteen aineominaisuudet kuten tiheys ja viskositeetti. Sen jälkeen ratkaistaan joko eksplisiittisellä tai implisiittisellä menetelmällä virtausyhtälöt ja nesteen komponenttien pitoisuusyhtälöt yhdessä. Ratkaisumenetelmä voi olla joko eksplisiittinen tai implisiittinen, mutta kummassakaan tapauksessa ei kyseessä ole ajan suhteen tarkka virtausyhtälöiden integrointi. Loput yhtälöt, kuten turbulenssiyhtälöt, ohjelma ratkaisee erillään vastaavalla tavalla kuin painepohjaisella ratkaisijalla. Painepohjainen ratkaisu tehdään aina ’implisiittisesti’. Yhtälöt ratkotaan peräkkäin ja ne ovat muodoltaan samantyyppisiä konvektio-diffuusioyhtälöitä. Liikemääräyhtälön sisältämä painegradientti iteroidaan jatkuvuusyhtälön avulla sellaiseksi, että massatase toteutuu. Kaupallisissa koodeissa, kuten Fluentissa ja CFX:ssä, on perinteisen painekorjausmenettelyn rinnalle tullut ns. kytketty ratkaisu. Siinä paine ja nopeuskomponentit ratkaistaan kuvasta 5.2 poiketen yhtä aikaa jatkuvuus- ja liikemääräyhtälöistä. Painekorjausmenetelmä perustuu massataseessa esiintyviin virheisiin ja liikemääräyhtälöt siinä ratkaistaan erikseen. Menettelystä käytetään myös 5.1. FLUENTIN RATKAISUMENETELMÄT 124 Päivitä muuttujat Ratkaise jatkuvuus−, liikemäärä−, energia−, ja pitoisuusyhtälöt samanaikaisesti. Ratkaise turbulenssi− ja muut skalaariyhtälöt Korvergenssi? Seis Kuva 5.1: Tiheyspohjaisen ratkaisun kulku. Päivitä muuttujat Ratkaise liikemääräyhtälöt peräkkäin. Ratkaise painekorjausyhtälö. Päivitä paine ja kopin pinnan massavuo. Ratkaise energia−, pitoisuus−, turbulenssi−, ja muut skalaariyhtälöt peräkkäin. Korvergenssi? Seis Kuva 5.2: Painekorjausratkaisijaa käytettäessä suureet ratkotaan erillisillä yhtälöillä. nimitystä ’peräkkäinen’ (segregated). Painepohjaisilla menetelmillä iteraatiosyklistä tulee monivaiheisempi kuin tiheyspohjaisella ratkaisulla. Painekorjausmenetelmä on mahdollista laatia lukemattomilla eri tavoilla ja eri ohjelmissa on poikkeavuuksia. Perinteinen painekorjausalgoritmi on seuraava: 1. Päivitetään nesteen aineominaisuudet edellisen iteraatiokierroksen paineen ja lämpötilan arvoilla. Ensimmäisellä kierroksella käytetään alkuarvoista laskettuja ominaisuuksia. 5.1. FLUENTIN RATKAISUMENETELMÄT 125 2. Ratkaistaan peräkkäin u-, v- ja w-liikemääräyhtälöt käyttäen edellisen kierroksen paineita ja massavirtoja. Massavirran laskentaa selostettiin luvussa 4. Tässä vaiheessa saatuja massavirran arvoja merkitään m ˙ ∗j :llä. 3. Koska kohdassa 2 saadut nopeudet eivät toteuta jatkuvuusehtoa paikallisesti, laaditaan paineen korjauksille ’Poisson-yhtälö’, joka johdetaan jatkuvuus- ja liikemääräyhtälön avulla. Painekorjausyhtälön avulla korjataan paineet ja seinien pintanopeudet (konvektionopeudet). Yleensä tässä vaiheessa korjataan myös koppien keskellä sijaitsevien nopeuskomponenttien arvot. 4. Ratkaistaan loput yhtälöt päivitetyillä koppien pintojen massavirroilla. Kohdassa 2 käytetään seuraavalla kierroksella samoja massavirtoja. Kaikissa yhtälöissä käytetään painekorjauksen jälkeen seuraavaan painekorjaukseen asti samoja massavirtoja, joten kaikki yhtälöt ovat muodollisesti samanlaiset (lähdetermit ja osa diffuusiovuosta ovat erilaisia). 5. Kaksifaasilaskennassa tarvittavat faasien väliset kytkentätermit päivitetään tässä vaiheessa. 6. Tarkistetaan onko ennalta annettu konvergenssiraja saavutettu. Kytketty painepohjainen ratkaisu yhdistää vaiheet 2 ja 3. Kolmen liikemääräyhtälön ja Poisson-tyyppisen painekorjausyhtälön sijaan ratkaistaan yksi suuri yhtälöryhmä. Yhtälöryhmän ratkaisuaika on moninkertainen peräkkäiseen ratkaisuun verrattuna, mutta menetelmä on robustimpi ja iteraatiokierroksia tarvitaan vähemmän. Oikein parametrisoituna ratkaisuajat ovat samaa luokkaa, mutta kytketyn ratkaisun parametrisointi on ilmeisesti helpompaa ja sitä on alettu suosia. Kytketystä ratkaisusta on niukasti tietoa saatavilla ja jatkossa käsitellään enemmän perinteisiä menetelmiä. FLUENTin tiheyspohjaisen ratkaisun implisiittisessä menetelmässä syntyy lohkorakenteinen yhtälöryhmä, joka sitoo kaikki suureet toisiinsa. Jos käytetään tiheyspohjaisen ratkaisijan eksplisiittistä versiota, yhtälöryhmien ratkaisua ei tarvita ollenkaan. Painepohjaisella ratkaisijalla syntyy ratkaistavien suureiden lukumäärän verran erillisiä lineaarisia yhtälöryhmiä tai ainakin energiayhtälö ratkaistaan erillään muista (kytketty ratkaisu linkittää vain jatkuvuus- ja liikemääräyhtälöt). Painekorjausyhtälön ratkaisuun kuluva aika on kriittinen ja sitä varten on kehitetty tehokkaita iteraatiomenetelmiä, jotka ovat välttämättömiä myös kytketyn ratkaisun yhteydessä. Kytketty ratkaisu tuottaa painekorjausta hankalamman yhtälöryhmän. 5.2. PAINEKORJAUSRATKAISU 126 Seuraavassa tarkastellaan ensin painekorjauksen perusteita ja sen jälkeen yhtälöryhmien ratkaisua. Painepohjainen kytketty ratkaisu toimii muilta osin samoin kuin painekorjausratkaisu, mutta Poisson-yhtälön ja erillisen liikemääräyhtälöiden ratkaisun tilalla on vain yksi suuri yhtälöryhmä, jonka rakenteeseen ei puututa tässä yhteydessä. 5.2 Painekorjausratkaisu Painepohjaisten menetelmien idea tulee siitä, että kokoonpuristumattomalla ratkaisijalla paine ei määräydy tilanyhtälöstä, vaan jatkuvuusyhtälön ja liikemääräyhtälön kytkennästä. Perinteistä ratkaisutapaa on nimitetty painekorjaukseksi, koska siinä jatkuvuusyhtälön virheen avulla korjataan vallitsevaa painetta, kunnes jatkuvuusyhtälö toteutuu yhdessä liikemääräyhtälön kanssa. Yleensä ohjelmissa on useita painekorjausratkaisijoita, joilla on seuraavat kirjainlyhenteet: SIMPLE, SIMPLEC ja PISO. Oikein parametrisoituina ratkaisutavoilla ei ole yleensä suuria tehokkuuseroja, minkä vuoksi käyttäjä voi aluksi valita turvallisesti SIMPLEn, joka on eräänlainen ’peruspainekorjausmenetelmä’. SIMPLEstäkin on useita versioita ja niiden lähempi tarkastelu osoittaa painekorjausmenetelmän paljolti ’ad hoc’-tyyppiseksi. Vuosien varrella on kehitelty erilaisia strategioita, joiden on huomattu käytännön laskennassa toimivan. SIMPLE-menetelmän pohjalla on yhtälö (4.19), josta lasketaan massavirrat m ˙ j koppien seinillä. (Laskennallisen virtausmekaniikan jatkokurssilla todetaan lähtökohtana oikeastaan olevan kopin seinällä approksimoitu liikemääräyhtälö, mutta Rhie ja Chow -interpolointi perustuukin juuri liikemääräyhtälöön). Painekorjausyhtälöä johdettaessa lähdetään joka tapauksessa yhtälöstä (4.19), joka on ensimmäistä kertalukua. Massavirran laskennassa paine-ero on kyseisessä yhtälössä laskettava toisen kertaluvun kaavalla, muuten laskentatuloskin on ensimmäistä kertalukua. Tosin ei ole aivan selvää vaikuttaako katkaisuvirhe tältä osin haitallisesti lopputulokseen, varsinkin jos painegradientti on pieni. Painekorjauksen ideana on korjata massavirtoja siten, että massatase toteutuu eksaktisti. Pinnalla j saadaan massavirtakorjauksen jälkeen lasketuksi uusi massavirta yhteydestä m ˙j =m ˙ ∗j + m ˙ ′j (5.1) missä m ˙ ∗j on liikemääräyhtälöiden ratkaisun jälkeen päivitetty massavirta ja arvoja m ˙ j käytetään skalaariyhtälöille sekä seuraavan kierroksen liikemääräyhtälöiden 5.2. PAINEKORJAUSRATKAISU 127 ratkaisussa. Mikäli massavirtakorjauksia m ˙ ′j ei alirelaksoida tässä vaiheessa, toteuttavat uudet korjatut massavirrat jatkuvuusyhtälön Nf aces X m ˙j =0 (5.2) j mitä liikemääräyhtälöiden ratkaisun jälkeen saaduista nopeuksista lasketut massavirrat m ˙ ∗j eivät toteuta ennen kuin ratkaisu on konvergoitunut. Liikemääräyhtälöiden jälkeen voidaan laskea jokaiselle laskentatilavuudelle massataseen virhe Nf aces ∆m ˙ = X m ˙ ∗j (5.3) j Jos virhe on riittävän pieni, laskennan voidaan todeta konvergoineen. Mikäli näin ei ole, korjataan massavirtoja. Yhtälöistä (5.1) ja (5.2) saadaan Nf aces X m ˙ ′j = −∆m ˙∗ (5.4) j missä summaus on tilavuuden pintojen Nf aces yli. Massavirtoja siis korjataan siten, että korjausten summa on sama kuin massataseessa oleva virhe. SIMPLE-menetelmässä yhtälön (4.19) pohjalta saadaan linearisoimalla m ˙ ′j = ρA2j ′ (p − p′c1 ) a ¯P c0 (5.5) Sijoittamalla tämä yhtälöön (5.4) Nf aces X j X ρA2j ρA2j p′ = p′nb − ∆m ˙∗ a ¯P a ¯ nb nb (5.6) missä oikean puolen summaus tapahtuu naapurikoppien yli. Yhtälö (5.6) on ns. painekorjausyhtälö. Kun kaikille laskenta-alueen kopeille on laskettu massataseen virhe ja kertoimet a¯nb ovat tiedossa liikemääräyhtälön diskretoinnista, voidaan laskea paineille korjaukset p′ . Sen jälkeen saadaan massavirran korjaukset yhtälöstä (5.5). SIMPLE-menetelmä ei ole stabiili ellei painetta alirelaksoida. Tämä tapahtuu alirelaksaatiokertoimen αp avulla. Uusi korjattu paine on p = p ∗ + αp p ′ (5.7) Painetta joudutaan alirelaksoimaan joskus huomattavasti, esimerkiksi niinkin alhaista kerrointa kuin αp = 0,1 voidaan joutua käyttämään. Mitä alhaisempi alirelaksaatiokertoimen arvo, sitä hitaampi konvergenssi. Hankalat laskentatehtävät konvergoivat hitaasti paljolti juuri alirelaksaation tarpeen vuoksi. Alirelaksaation tarvetta 5.2. PAINEKORJAUSRATKAISU 128 syntyy monista syistä. Eräs perusselitys on, että SIMPLE-menetelmässä jätetään linearisoinnissa (5.5) naapurikoppien nopeudet huomioon ottamatta. Tilanteeseen vaikuttaa kuitenkin myös reunahedot, virtauksen fysiikka mukaan lukien turbulenssimallit sekä myös laskentahilan laatu. Jos laskentaverkko on ’pahannäköinen’ se vaikuttaa yhtälöiden kertoimiin ja sitä kautta konvergenssiin, ei ainoastaan numeeriseen virheeseen. Myös massavirtaa (tai oikeastaan nopeuksia) voidaan alirelaksoida tässä vaiheessa. FLUENTin manuaalista ei selviä varmuudella miten nopeuksia alirelaksoidaan. Suoraviivaisinta on alirelaksoida nopeuksia yhtälön (4.16) ratkaisun jälkeen seuraavasti u∗ = un + αu ∆u (5.8) missä αu on nopeuden alirelaksaatiokerroin ja ∆u edellisen kierroksen nopeuden un ja yhtälöstä (4.16) ratkaistun nopeuden erotus. Liikemääräyhtälöä voidaan alirelaksoida myös yhdistämällä relaksaatiokerroin suoraan yhtälön (4.16) kertoimiin. Painekorjauksen jälkeen on vielä mahdollista tehdä pintojen massavirtojen korjauksen yhteydessä relaksointia m ˙j=m ˙ ∗j + αm m ˙ ′j (5.9) Ilman massavirtojen tai nopeuksien alirelaksaatiota massatase toteutuu tarkasti tehtyjen massavirtakorjausten jälkeen. Tämä on eräs menetelmän perusominaisuuksista. Tehtyjen korjausten jälkeen liikemääräyhtälö ei kuitenkaan toteudu ellei ratkaisu ole konvergoitunut. Jos pintanopeuksia alirelaksoidaan tässä vaiheessa ne eivät toteuta massatasetta eksaktisti ennen kuin iteraatio on supennut. Liikemääräyhtälön alirelaksointi tehdään yleensä yhdistämällä relaksaatio yhtälön (4.16) kertoimiin. Nyt on huomattava, että painekorjauksen jälkeen saadaan luontevasti koppien pinnoilla olevien massavirtojen korjaukset, mutta ei koppien keskellä spesifioitujen nopeuksien korjauksia. Nopeudet voidaan korjata joko ottamalla keskiarvo pintanopeuksien korjauksista tai sitten korjaamalla suoraan nopeuksia yhtälön (5.5) kaltaisesta yhteydestä. Vastaava yhtälö voidaan näet johtaa myös koppien keskipisteiden nopeuskorjauksille kopin pintojen painekorjauksien avulla, kuten limitetyssä hilassa tehdään. Kytketyllä ratkaisulla saadaan paineen ja nopeuden muutokset ratkaistuksi kerralla ja ne päivitetään samaan tapaan kuin painekorjausmenetelmässä alirelaksaatiokertoimien avulla. Kuten edeltä huomataan painekorjausmenetelmään liittyy paljon erilaisia vaihtoehtomahdollisuuksia ja relaksointitapoja, joihin ohjelman käyttäjän 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 129 on saatava tuntuma. Muuten ratkaisusta voi tulla tehoton tai se ei konvergoi ollenkaan. Harvemmin käytetyllä tiheyspohjaisella ratkaisulla vaihtoehtoja on vähemmän, käyttäjälle jää ainoastaan annettavaksi paikallisen Courantin luvun arvo. Koska yllä kuvattu painekorjausmenetelmän versio (’SIMPLE’) sisältää epämääräisyyksiä ja ’ad hoc’-tyyppisiä virityksiä (joihin ei läheskään kaikkiin voida puuttua tässä yhteydessä), on kehitelty paljon erilaisia painekorjausmenetelmän versioita. FLUENTissa on mahdollista käyttää SIMPLEC- ja PISO-algoritmeja, joilla molemmilla pyritään pääsemään alirelaksaatiosta eroon. Näin ei välttämättä aina käy, vaikka alirelaksaatiokertoimille voitaisiinkin käyttää suurempaa arvoa. SIMPLEC eroaa SIMPLEstä vain vähän ja sitä kannattaa kokeilla. PISOn pitäisi olla tehokkaampi eräissä tilanteissa, mutta menetelmä on työläämpi kuin SIMPLE. Laskentaaikaa saattaa siis kulua enemmän kuin SIMPLEllä vaikka iteraatiokierroksia kuluisikin vähemmän. 5.3 Yhtälöryhmien ratkaisu ja monihila-algoritmi 5.3.1 Yhtälöryhmien ratkaisutarve Yhtälöiden ratkaisussa, lukuun ottamatta tiheyspohjaisen menetelmän eksplisiittistä ratkaisua, syntyy yhtälöryhmiä yksi jokaista ratkaistavaa suuretta kohti. Painekorjausmenetelmän yhteydessä aikaa vievin yhtälö on painekorjausyhtälö (5.6). Yhtälö on ns. Poisson-tyyppiä, jossa lävistäjäalkio on yhtä suuri, mutta vastakkaismerkkinen kuin muiden alkioiden summa. Tällaisena yhtälön ratkaisu konvergoi huonosti. Tässä yhteydessä on taas syytä huomata, että ratkaisussa termillä ’konvergenssi’ voidaan tarkoittaa sekä koko epälineaarisen yhtälöryhmän, so. itse virtaustehtävän konvergenssia, että jokaisella iteraatiokierroksella tapahtuvaa lineaaristen yhtälöryhmien konvergenssia. Virtaustehtävissä syntyvät yhtälöryhmät ovat näet niin suuria, ettei niitä kannata ratkaista suoralla menetelmällä. Painekorjausyhtälöä voidaan alirelaksoida jo ratkaisuvaiheessa siten, että yhtälön (5.6) lävistäjästä tulee suurempi kuin muiden alkioiden summasta. Tällöin iteratiivinen ratkaisu tulee paremmin käyttäytyväksi. Periaatteessa yhtälön voisi ratkaista vaikka yksinkertaisella Gauss-Seidel -menetelmällä, mutta tämä olisi hidasta. Sen vuoksi FLUENTissa käytetään kaikkien yhtälöryhmien ratkaisussa Gauss-Seidel menetelmään yhdistettyä ns. algebrallista monihilamenetelmää (AMG, algebraic multigrid), jossa pohjalla oleva Gauss-Seidel toimii ns. tasoittajana (smoother). 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 130 Algebrallista monihilaa käytetään myös liikemäärä- ja skaalaariyhtälöiden ratkaisussa. Tämä ei olisi aivan välttämätöntä, koska osoittautuu, että tyyppiä (4.16) olevien yhtälöiden ratkaisu on helpompaa lävistäjävaltaisuuden vuoksi. Algebrallista monihilaa käytetään myös implisiittisen tiheyspohjaisen ratkaisun yhteydessä syntyvän lohkotyyppisen yhtälöryhmän ratkaisuun. Tiheyspohjaisen menetelmän eksplisiittisessä ratkaisutavassa sen sijaan yhtälöryhmiä ei synny, mutta silloinkin voidaan käyttää ns. residuaalin tasoittamista. Kuitenkin eksplisiittisessäkin ratkaisussa sovelletaan monihila-algoritmia, mutta hieman toisin. Menettelystä käytetään nimitystä FAS (full approximation storage multigrid). OpenFOAMissa jokaiselle yhtälöryhmälle valitaan oma ratkaisumenetelmä neljästä eri vaihtoehdosta. Tarjolla olevat ratkaisijat on lueteltu taulukossa 5.3. Kuva 5.3: OpenFOAMin lineaaristen yhtälöryhmien ratkaisijat. Lähde:OpenFOAM User Guide Konjugaattigradienttimenetelmien yhteydessä käytetään pohjustimia (preconditioner), joiden tarkoituksena on helpottaa ratkaisuprosessia. Näitä on tarjolla viisi kappaletta, jotka on lueteltu taulukossa 5.4. Tasoittajaa tarvitsevan ratkaisijan yhteydessä tulee puolestaan määritellä tasoittaja. Valittavissa on Gauss-Seidel, Diagonal incomplete-Cholesky sekä näiden yhdistelmä. Tarve monihila-algoritmin käytölle syntyy siitä, että lineaarisen yhtälöryhmän ratkaisemiseen tarvittavien iteraatiokierrosten määrä kasvaa, kun yhtälöiden (laskenta-tilavuuksien) määrä kasvaa. Kun tietokoneiden muistin suureneminen on mahdollistanut entistä suuremmat laskentatehtävät, rajoittavaksi tekijäksi on muodostunut juuri yhtälöryhmien iterointi. Ainoa tunnettu menettelytapa, jolla yhtälöryhmän iteraatiokierrosten määrä saadaan samaksi riippumatta yhtälöryhmän koosta, on monihila-algoritmi. Tällöin ratkaisuajasta tulee suoraan verrannollinen yhtälöiden lukumäärään. Monihila-algorimi voidaan toteuttaa usealla tavalla, joille on yhteistä ratkaisun vieminen eteenpäin usealla eri hilatiheydellä. Tämä sen vuoksi, että 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 131 Kuva 5.4: OpenFOAMin lineaaristen yhtälöryhmien pohjustimet. Lähde:OpenFOAM User Guide perinteiset iterointitavat vaimentavat huonosti ratkaisussa olevaa globaalia virhettä (’pitkiä aallonpituuksia’). Sen sijaan lokaali virhe eli lyhyet aallonpituudet pienenevät nopeasti. Yhdistämällä yhtälöitä tai laskentatilavuuksia, saadaan lopulta hyvin pieni yhtälöryhmä, joka hoitaa globaalin virheen elimoinnin yhtä nopeasti kuin tiheä taso lokaalit virhekomponentit. 5.3.2 Monihila-algoritmien peruskäsitteitä Virtausratkaisuun on siis mahdollista soveltaa monihilan periaatteita usealla tavalla. On mahdollista jopa rakentaa kaksivaiheinen menetelmä, jossa ulkoisessa iteraatiossa käytetään erästä monihila-algoritmityyppiä ja yhtälöryhmien ratkaisussa toista. FLUENTissa käytössä olevissa menetelmissä lähdetään ratkaisemaan korjauksia. Lineaarisen yhtälöryhmän tapauksessa eksakti ratkaisu φe toteuttaa yhtälön Aφe + b = 0 (5.10) ennen kuin lineaarisen yhtälöryhmän ratkaisu on konvergoitunut, on olemassa approksimaatio φ, joka toteuttaa yhtälön Aφ + b = d (5.11) missä d on virhevektori (defect). Ratkaisussa etsitään korjausta ψ, joka toteuttaa yhtälön φe = φ + ψ (5.12) Sijoittamalla tämä yhtälöön (5.10) saadaan A(φ + ψ) + b = 0 (5.13) 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 132 mistä nähdään korjausratkaisun ψ toteuttavan yhtälön Aψ + d = 0 (5.14) Monihila perustuu virheen iterointiin yhtälöstä (5.14). Yhtälöä iteroidaan usealla eri hilatiheydellä, jolloin virheen eri komponentit (aallonpituudet) vaimenevat hyvin. Koska ratkaisu siis tapahtuu usealla eri resoluutiolla, sitä on siirrettävä eri hilatasojen välillä. Operaatioista käytetään nimityksiä ’restriction’ (rajoittaminen) ja ’prolongation’ (oikeastaan interpolointia). Harvalla hilatasolla, joka saadaan rakenteellisella hilalla yksinkertaisesti poistamalla joka toinen hilaviiva, mutta rakenteettomalla monimutkaisemmin yhdistämällä rinnakkaisia laskentatilavuuksia, toteutuu yhtälö AH ψ H + Rd = 0 (5.15) missä ψ H on harvemman hilatason korjaus ja AH kerroinmatriisi harvemmalla hilalla. Operaattori R hoitaa virheen kuljettamisen harvemmalle hilalle. Tässä on tärkeää huomata, että d lasketaan tiheällä tasolla ja tiheän tason virhe ajaa ratkaisua harvemmillakin tasoilla. Kun ratkaisu on supennut, niin d = 0 ja monihilasyklistäkin tuleva korjaus tiheimmälle tasolle on silloin nolla. Kun korjaus on saatu harvalla tasolla, se siirretään tiheämmälle φnew = φ + P ψ H (5.16) missä φ on sillä hetkellä kyseisellä tasolla oleva korjauksen arvo ja P ’prolongaatiooperaattori’. Tässä on oikeastaan kyseessä interpolointi, koska korjaus siirretään harvalta tasolta interpoloimalla tiheämmän tason hilapisteisiin. Kahdella hilatasolla monihila-algoritmi on suhteellisen yksinkertainen. Ratkaisua ensin iteroidaan tiheimmällä tasolla korjausmuodossa yhtälöstä (5.14). FLUENTissa tähän siis käytetään yksinkertaisinta mahdollista menetelmää, Gauss-Seidelia. Iterointeja tehdään kuitenkin vain rajoitettu määrä, minkä jälkeen siirrytään toiselle harvemmalle tasolle ja ryhdytään siellä iteroimaan yhtälöä (5.15). Iteroinnista käytetään nimitystä tasoittaminen ja Gauss-Seidel -menetelmä on siis tässä tapauksessa tasoittaja. Yksinkertaisimmassa tapauksessa ratkaisun korjaus ψ H interpoloidaan tiheämmälle (ykkös) hilatasolle ja aloitetaan kierros alusta. Kun d ≈ 0 eli täyttää suppenemiskriteerin, iteraatio lopetetaan. Tilanteen tekee monimutkaiseksi mm. se, että painekorjausmenetelmä on iteratiivinen ja kaikkia yhtälöitä ei tarvitse ratkaista kovin tarkasti. Kriittisin on itse painekorjausyhtälö tai kytketyllä painepohjaisella 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 133 menetelmällä muodostettu suuri yhtälöryhmä. Tiheyspohjaisen ratkaisun yhteydessä yhtälöryhmän ratkaisulla on taas toiset tarkkuusvaatimukset. Yleensä hilatasoja voidaan ja kannattaa käyttää niin paljon, että harvimmalla tasolla yhtälöitä (ja koppeja) on vain muutama jäljellä. Tyypillisesti voidaan ratkaisua tehdä esimerkiksi viidellä tasolla. Tällöin algoritmista tulee monimutkaisempi, koska siirryttäessä esimerkiksi tasolta kaksi tasolle kolme, täytyy tasolla kaksi tehdyt korjaukset ottaa jo huomioon virhevektorissa d. Alemmalle tasolle edetessä käytössä on aina edellisen hilatason ratkaisussa jo päivitetty d:n arvo. Ylöspäin eteneminen on suoraviivaisempaa, yhtälön (5.16) mukaan interpoloidaan virheen korjaus seuraavan tason koppeihin. Algoritmia kutsutaan V-sykliksi. On myös mahdollista käyttää erilaista strategiaa, ns. W-sykliä, jossa korjausta ei tuodakaan ylös asti, vaan sukelletaan jossain kohdassa uudestaan harvemmille tasoille. Erilaisten kombinaatioiden mahdollisuuksia on lukemattomia, menettelytapoja kuvataan FLUENTin manuaalissa. FLUENTissa on myös käytössä F-sykli ja ns. joustava (flexible) sykli. Näiden käyttöä voidaan säädellä käyttäjän toimesta, mutta ilman asiantuntemusta siihen ei kannata ryhtyä. FAS-algoritmin yhteydessä käytetään oletusarvoisesti V-sykliä. Edellä jo todettiin, että rakenteellisella hilalla restriktio- ja prolongaatio-operaattorit ovat yksinkertaisia. Viimeksi mainittu perustuu bilineaariseen interpolointiin. Rakenteettomalla hilalla menettelyt ovat monimutkaisempia ja niiden perusteita kuvataan jatkossa. 5.3.3 Algebrallinen monihila Algebrallisessa monihilassa (AMG) ratkaistaan lineaarista yhtälöryhmää, kun taas FAS-menetelmä kohdistuu suoraan itse virtausyhtälöiden iterointiin. Tämä tekee algebrallisesta menetelmästä yksinkertaisen, koska ei tarvita mitään geometrista tietoa, ainoastaan yhtälöryhmä. Menetelmä sopii siis eräänlaiseksi ’mustalaatikkoratkaisijaksi’, koska sen soveltamiseen ei tarvita erikoistoimenpiteitä rakenteettomallakaan hilalla. Hilatasojen välillä tiedonsiirto tehdään bilineaarisella interpoloinnilla ja prolongaatiolla. Virhevektori d saadaan harvalla tasolla yksinkertaisesti summana niistä tiheämmän tason arvoista, jotka kuuluvat harvemman tason kopin alueelle. Harvemman tason korjaukset asetetaan suoraan tiheämmän tason koppeihin (prolongaatio). Tällä tavoin kyseiset operaattorit suhtautuvat toisiinsa seuraa- 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 134 vasti P = RT (5.17) Rakenteettomassa topologiassa, jota FLUENTissa käytetään myös rakenteelliselle hilalle, R määritellään yhdistämällä sopivasti rinnakkaisia koppeja. Yhdistämisstrategiassa koppi yhdistetään yhden tai useamman (tyypillisesti yhdistetään 2-4 koppia) naapurinsa kanssa. Yhdistämisessä preferoidaan naapurisuuntia, joissa kytkentäkerroin aij on suurin. Tiheyspohjaisessa ratkaisussa aij :n tilalla on matriisin lohko, jolloin yksinkertaisesti tarkastellaan lohkon ensimmäistä termiä. Painepohjaisen kytketyn ratkaisun menettely ei ole selvillä. Harvalla tasolla operaattori AH saadaan Galerkinin menetelmällä AH = RAP (5.18) Yhtälö (5.18) redusoituu käytännössä yksinkertaisiksi summauslausekkeiksi. Algebrallisessa monihilassa käytetään painekorjaukselle V-sykliä ja muille suureille joustavaa (flexible) sykliä. Tämä johtuu yhtälöiden ratkaisemisessa vaadittavasta tarkkuudesta ja painekorjausyhtälön luonteesta (Poisson-yhtälö). Alirelaksaation kanssa muut yhtälöt ovat lävistäjävaltaisia ja niitä ei tarvitse iteroida yhtä kauan. Joustavaa sykliä käytettäessä alemmilla hilatasoilla vieraillaan vain satunnaisesti. Tämä merkitsee sitä, että virtausyhtälöillä itse asiassa käytetään useimmiten pelkkää Gauss-Seidelia, mutta painekorjausyhtälöllä monihilaa. 5.3.4 FAS-monihila Kuva 5.5: FAS-menetelmässä on yhdistettävä rinnakkaisia laskentatilavuuksia toisiinsa geometrisesti muodostettaessa harvan hilatason yhtälöitä. FAS-menetelmässä ratkaistaan diskretoidut virtausyhtälöt usealla hilatasolla. Jotta vuoarvot voitaisiin laskea, on myös geometriset suureet siirrettävä seuraavalle ta- 5.3. YHTÄLÖRYHMIEN RATKAISU JA MONIHILA-ALGORITMI 135 solle. Operaatio on yksinkertainen rakenteellisella hilalla, mutta monimutkaisempi rakenteettomalla. Rakenteettomalla hilalla laskentatilavuuksien pinnoista muodostuu monimutkaisia harvoilla hilatasoilla. Laskenta ei ole niin monimutkaista, kuin miltä näyttää, koska vuoarvoissa käytetään vain pinta-alojen projektioita. Pinnoista siis tulee eräänlaisia tasoja. Prolongaatio- ja restriktio tapahtuvat myös yksinkertaisesti. FAS-menetelmässä virhevektorin d tilalla on virtausyhtälöiden residuaali. Residuaalien summa siirretään seuraavalle tasolle, samoin kuin ratkaistavien suureiden arvot. Nämä saadaan tilavuuspainotteisella keskiarvolla. Prolongaatio hoidetaan siirtämällä harvan tason korjaus suoraan tiheän tason koppeihin. FLUENTin FAS-menetelmää käytetään vain tiheyspohjaisen ratkaisun eksplisiittisen integroinnin yhteydessä. Tasoittaminen tapahtuu ratkaisemalla yhtälöt uudestaan harvalla hilatasolla käyttäen tiheämmältä tasolta saatua residuaalia. Harvalla tasolla siis tehdään eksplisiittinen Runge-Kutta ratkaisu ja residuaalin tasoittaminen. Harvalla hilalla aikaintegroinnissa on oleellista käyttää pitempää aika-askelta kuin tiheällä tasolla. Tämä on mahdollista, koska laskentatilavuudet ovat suurempia ja samalla Courantin luvun arvolla saadaan siten pitempi aika-askel. Käytettäessä riittävän montaa hilatasoa, on harvimmalla tasolla mukana enää muutama koppi. Jos FAS-menetelmässä on enemmän kuin kaksi hilatasoa, kuten yleensä on asianlaita, on myös residuaali laskettava harvemmilla tasoilla. Menetelmä vaikuttaa työläältä, mutta on yllättävän helposti ohjelmoitavissa. Ratkaisu etenee nimittäin kaikilla tasoilla samalla tavoin, jolloin voidaan käyttää samoja aliohjelmia. Hilatasojen välillä on hoidettava suhteellisen vähäisillä operaatioilla tiedon kulku. FAS-menetelmä vaikuttaa myös työläältä siksi, että residuaali (ja vuot) on laskettava moneen kertaan. Harvemmilla tasoilla tämä työmäärä on kuitenkin vain murto-osa tiheimmän tason laskentaan kuluvasta ajasta, joten monihilan käyttö ei lisää tuntuvasti laskentaaikaa. Samaa koskee AMG-menetelmää: ratkaisuajasta suurin osa kuluu tiheimmällä tasolla, joten monihilan vaikutus laskenta-aikaan on pieni, mutta iteraatiokierrokset vähenevät merkittävästi. 5.4. RATKAISIJAN KÄYTTÖ 136 5.4 Ratkaisijan käyttö 5.4.1 Vaiheet FLUENTissa on ensimmäiseksi on päätettävä käytetäänkö paine- vai tiheyspohjaista ratkaisijaa. Näiden soveltuvuutta erilaisiin tehtäviin käsiteltiin edellisessä luvussa. Kun ratkaisija on valittu käyttäjällä on vielä seuraavat valinnat edessään: 1. Valitaan konvektiotermin diskretointi. Diffuusiotermi on aina toista kertalukua, mutta konvektiotermille on valinnan mahdollisuuksia. Käyttäjän tulee valita myös paineen interpolointitapa. Kytketyllä ratkaisulla valitaan ainoastaan konvektiotermien diskretointi. 2. Valitaan joko kytketty paineen käsittely tai painekorjaustapa (SIMPLE, SIMPLEC tai PISO). Tämä ei koske tiheyspohjaista ratkaisijaa. 3. Asetetaan alirelaksaatioparametrit. Tämäkään ei koske tiheyspohjaista ratkaisijaa, jossa alirelaksaatio annetaan Courantin luvun muodossa. 4. Eksplisiittisellä (tiheyspohjaisella) ratkaisijalla voidaan aktivoida FAS-algoritmi. Yleensä näin kannattaa tehdä aina eksplisiittisen ratkaisijan yhteydessä. 5. Annetaan ratkaisulle alkuarvot 6. Valitaan konvergenssin seurantatavat. 7. Aloitetaan simulointi 8. Hyvin suurella todennäköisyydellä vastaan tulee konvergenssiongelmia, jonka jälkeen on palattava edellisiin kohtiin. Parannuskeinona on alirelaksaatiokertoimien alentaminen tai Courantin luvun pienentäminen. FLUENTissa on ratkaisuparametreille olemassa oletusarvot, mutta ne eivät läheskään aina ole optimaaliset. 5.4.2 Diskretointimenetelmät Diskretointimenetelmien valintaa selostettiin jo edellisessä luvussa. FLUENTissa on joukko ensimmäisen kertaluvun menetelmiä ja kolme toisen kertaluvun menetelmää: toisen kertaluvun ylävirtamenetelmä, kolmannen kertaluvun MUSCL ja 5.4. RATKAISIJAN KÄYTTÖ 137 QUICK. Kuten jo aiemmin todettiin, nämä vastaavat lähinnä ns. Frommin menetelmää ja jotain muuta ylävirtapainotettua diskretointia. Lopullinen laskenta on tehtävä jollain korkeamman kertaluvun menetelmällä. Näistäkin on todettava, että niissä on aina mukana ns. vuon rajoitin, mikä aiheuttaa tarkkoihin laskelmiin ylimääräistä numeerista vaimennusta. Tämä näkyy esimerkiksi koodin laskemissa vastuskertoimien arvoissa. Laskenta voidaan aloittaa ja joskus sitä ei edes helposti saada alkuun kuin ensimmäisen kertaluvun menetelmällä. Power-law -diskretointi on myös ensimmäistä kertalukua, mutta sitä ei kannata käyttää koskaan. Konvektiotermien diskretoinnissa kannattaa aina muistaa, että virhe on suurempi rakenteettomalla hilalla kuin rakenteellisella. Tämä saattaa ilmetä erittäin manifestoituneesti, jos rakenteettomalla hilalla on käytetty ensimmäisen kertaluvun menetelmää. Manuaalissa todetaan, että ensimmäisen kertaluvun diskretoinnilla voidaan saada järjellinen tulos rakenteellisella hilalla yksinkertaisissa virtaustapauksissa, kun virtaus on hilaviivojen suuntausta. Näin saattaa käydä, mutta asiaa kannattaa lähinnä kokeilla, ei soveltaa käytännön virtauslaskuissa. Kaupallisten koodien käyttäjien on syytä huomata, että oletusarvodiskretointi painepohjaisilla ratkaisijoilla saattaa olla ensimmäisen kertaluvun ylävirtamenetelmä. Sen sijaan Fluentin tiheyspohjaisella ratkaisijalla oletusarvodiskretointi on aina toista kertalukua. Diskretoinnit valitaan, ja ne on yleensä heti syytä muuttaa, Solvevalikon kohdasta Controls ja Solution. Diskretoinnit annetaan yhtälö kerrallaan. Turbulenssiyhtälöt ovat hieman muita epämääräisemmässä asemassa virtauslaskennassa. Kaksiyhtälömalleilla niiden avulla saadaan turbulentti viskositeetti. Jos simulointi ei tahdo pysyä pystyssä, eräs keino on pitää ainakin aluksi turbulenssiyhtälöiden diskretoinnit ensimmäisen kertaluvun tarkkoina. Painepohjaisella ratkaisijalla käyttäjä joutuu valitsemaan myös paineen interpolointitavan. Paineen interpolointi on oletettavasti aina toista kertalukua (standardiinterpolointi ei tosin selviä FLUENTin manuaalista), vaikka valikossa on harhaanjohtavasti Standard, Linear, Second Order ja Body Force Weighted. Näistä järkevimmältä vaikuttaa lineaarinen interpolointi. Jos laskennalla on pystyssä pysymisvaikeuksia, voi valita myös standardi-interpoloinnin, koska siinä on todennäköisesti enemmän numeerista vaimennusta. Toinen kertaluku tässä valikossa ei tarkoita diskretoinnin tarkkuutta, vaan sitä että kopin seinällä paine lasketaan sen molemmille puolille toisen kertaluvun ylävirtakaavalla laskettujen paineiden keskiarvoina. Tätä tapaa ei yleensä kannata käyttää. Sitä suositellaan käytettäväksi kokoonpuris- 5.4. RATKAISIJAN KÄYTTÖ 138 tuvissa laskentatehtävissä, mutta niihin painepohjaista ratkaisijaa ei pitäisi soveltaa ollenkaan, joten suositus on tässä kohden aiheeton. Sen sijaan nosteen ajamissa virtauksissa konvergenssia parantaa Body Force Weighted-valinta. 5.4.3 Paineen laskentatavan valinta Painekorjaustavasta FLUENTissa käytetään termiä ’paineen ja nopeuden kytkentä’. Yleensä kannattaa valita oletusarvona oleva SIMPLE ja pyrkiä modifioimaan sen alirelaksaatiokertoimia. Paineen ja nopeuden välistä kytkentää ei tietenkään tarvitse valita kytketyllä ratkaisijalla. SIMPLEC on yritys välttää paineen alirelaksaatiota, mutta menetelmä harvoin toimii SIMPLEä tehokkaammin. SIMPLECin perusideana on siis asettaa αp = 1, jolloin konvergenssi todennäköisesti on parempi kuin SIMPLEllä, joka vaatii asetuksen αp < 1. Fluentissa SIMPLEn ja SIMPLECmenetelmän alirelaksaatiokertoimien oletusarvot ovat kuitenkin samat. Vaikka alirelaksaatiota ei tarvittaisi, on otettava huomioon, että menetelmät toimivat sisäisesti eri tavoin. Ero on lähinnä massavirta- ja painekorjausten välisessä kytkennässä. Yleensä alirelaksaation tarve aiheutuu muustakin kuin suoraan paineen ja nopeuden välisestä kytkennästä, esimerkiksi turbulenssisuureiden, reunaehtojen yms. aiheuttamasta epälineaarisuudesta. Niissä tapauksissa SIMPLEC ei nopeuta konvergenssia, koska alirelaksaatiota joudutaan joka tapauksessa käyttämään. PISO-menetelmää manuaalissa suositellaan ajan suhteen tarkoille simuloinneille. PISOssa on myös mahdollista käyttää hilan vinoutuman aiheuttamaa alirelaksaation tarvetta vähentävää korjausta (tästä katso esim. Ferziger-Peric). Tässä yhteydessä PISOn eduista ei voida ottaa selkeää kantaa. Aktiivisen virtauslaskijan kannattaa testailla eri tapoja ja luoda itselleen sitä kautta käsitys siitä, mikä sopii mihinkin. Onneksi standardi SIMPLE soveltuu sopivilla relaksaatiokertoimilla kaikkiin painekorjauksella ratkaistaviin tapauksiin, joten painekorjaustavan valinta kuuluu käyttäjän pienimpiin murheisiin. Kuten edellä on todettu, ohjelmistotalot ovat alkaneet suositella kytkettyä (’coupled’) vaihtoehtoa painepohjaisen ratkaisun yhteydessä. Koska tästä on toistaiseksi vähän kokemuksia, tässä ei voida asiaa yksityiskohtaisemmin käsitellä. Tyypillisesti ehkä tuhansia iteraatiokierroksia vaatinut ajo painekorjausmenetelmällä saadaan lasketuksi muutamalla sadalla kierroksella kytketyllä ratkaisulla, mutta laskenta-aika saattaa olla sama. Paineen laskentatapa ei vaikuta lopputulokseen, joten enemmän simulointia harrastavan kannattaa kokeilla eri vaihtoehtojen toimivuutta. Painekor- 5.4. RATKAISIJAN KÄYTTÖ 139 jausmenetelmän hankala piirre on alirelaksoinnin suuri merkitys ratkaisun stabiiliuteen. 5.4.4 Alirelaksaatiokertoimet ja Courantin luvut Painepohjaiset menetelmät vaativat käytännössä aina alirelaksaatiota, vaikka joskus kuulee muunkinlaisia väitteitä. Tiheyspohjainen ratkaisu puolestaan toimii vain suhteellisen alhaisilla Courantin luvuilla. Valitettavasti sopivat kertoimet ja Courantin luvut ovat tapauskohtaisia, joten usein FLUENTin oletusarvot eivät edes toimi tai ovat tehottomia. Tärkeimmät oletusarvona annettavat relaksaatiokertoimet ovat αp = 0,3 ja αu = 0,7. Jos tiheys muuttuu, käyttäjä joutuu puuttumaan myös tiheyden ja tilavuusvoiman laskennan alirelaksaatioon. Näitä ei oletusarvoisesti relaksoida ollenkaan. Annetuista kertoimista αu vaikuttaa melko pieneltä ja sitä voidaan todennäköisesti silloin tällöin kasvattaa. Kerrointa αp = 0,3 joudutaan sen sijaan usein pienentämään huomattavastikin, vaikka joissain tapauksissa sitäkin voidaan kasvattaa. Paineen relaksoinnin tarve riippuu paljon eksplisiittisesti laskettavista reunaehdoista. Painepohjaisen ratkaisun voi aloittaa käyttäen oletusarvoja alirelaksaatiolle. Huolimatta kertoimien varovaisista arvoista laskenta vähän ajan päästä todennäköisesti kaatuu, jolloin alirelaksaatiota on lisättävä eli kertoimia pienennettävä. Yleensä kannattaa pienentää eniten paineen alirelaksointia. (Tässä yhteydessä on syytä kuitenkin vielä todeta, että nopeuden alirelaksointitapa ei ole tätä kirjoitettaessa täysin selvillä). Nyrkkisääntönä voidaan pitää, että liikemääräyhtälöiden alirelaksaatiokerroin on lähellä ykköstä ja αp :tä pienennetään nopeammin. Turbulenteissa tapauksissa on syytä pienentää myös turbulenssisuureiden kertoimia. Manuaalin mukaan usein käypä valinta on: 0,2 paineelle, 0,5 liikemääräyhtälöille ja turbulenssiyhtälöille. Käytännössä on kuitenkin tapauksia, joissa on jouduttu käyttämään αp = 0,1, joten laskennan kaatumista ensimmäisellä yrittämällä ei pidä säikähtää. Simuloinnin suorittajan kannattaa myös ajatella probleeman luonnetta. Jokin ratkaistavista yhtälöistä voi olla muita herkempi. Tilavuusvoimat, kuten noste ja pyörivissä tapauksissa näennäisvoimat, vaikuttavat alirelaksaation tarpeeseen. Erittäin tärkeää on tiedostaa aikaisemmin mainitut kaksi seikkaa: reunaehdot ja laskentahilan laatu. Huonolaatuinen hila voi aiheuttaa paikallisesti ratkaisun heilumista siten, ettei kunnon konvergenssia tapahdu ollenkaan. Reunaehtojen määrittelyn yhteydessä kiinnitettiin jo huomiota virtauksen mahdolliseen kääntymiseen, jolloin FLUENTin stan- 5.4. RATKAISIJAN KÄYTTÖ 140 dardi ulosvirtausehto kaataa laskennan. Alirelaksaatiokertoimien tarve aiheutuu yleisesti ottaen virtausyhtälöiden (mukaan lukien reunaehdot ja aineominaisuusyhtälöt) epälineaarisuudesta, mutta konvergenssia on mahdotonta saavuttaa, jos tilanne on huonosti asetettu. Yleensä huonosti asetetun ongelman korjaaminen alirelaksaatiota lisäämällä ei onnistu, vaan siirtää ongelmaa pitemmälle. Pahimmassa tapauksessa niin pitkälle, että puolivalmista laskentatulosta käytetään, vaikka se olisi kelvoton. Kuva 5.6: Virtaustapauksen konvergenssihistorioita painekorjausmenetelmällä, kun αp = 0,4 ja αu = 0,95 . Alirelaksaatiokertoimien merkitystä voidaan tarkastella kuvien 5.6 ja 5.7 konvergenssihistorioilla. Kuvissa on jatkuvuusyhtälön ja liikemääräyhtälöiden virtausalueen yli integroitujen residuaalien summa (eräänlainen normi). Kuvan 5.6 tilanteessa alirelaksaatiota on liian vähän ja laskenta divergoi. Painekorjausmenetelmälle on tyypillistä, että laskenta voi konvergoida jonkin matkaa, kuten kuvassa 5.6, tai residuaalit voivat pudota jopa usealla dekadilla, kunnes tulee käänne ja residuaalit lähtevät hitaaseen, mutta vääjäämättömään nousuun. Tällöin alirelaksaatiokertoimia on muutettava, mutta laskentaa ei ole pakko aloittaa alusta. Tässä tapauksessa laskenta on saatu konvergoimaan pienentämällä alirelaksaatiokertoimien arvoja oletusarvoihin (kuva 5.7). Konvergenssi luonnollisesti hidastuu, mutta pienempiä kertoimia on tässä tapauksessa käytettävä, jotta laskenta pysyisi pystyssä. Kertoimien vaikutusta saattaa valottaa koonti konvergenssihistorioista. Konvergenssihistoriat ovat peräisin laskennoista, joissa paineen ja nopeuden alirelaksaatiokertoimia on varioitu. Alaspäin mentäessä paineen kerroin kasvaa ja oi- 5.4. RATKAISIJAN KÄYTTÖ 141 Kuva 5.7: Onnistuneen simuloinnin konvergenssihistorioita painekorjausmenetelmällä, kun αp = 0,3 ja αu = 0,7 . kealle mentäessä nopeuden. Nähdään, että suurentamalla kumpaa tahansa kerrointa konvergenssi nopeutuu - kuitenkin sillä edellytyksellä, että laskenta ei divergoi. Kumman tahansa arvon suurentaminen liikaa johtaa laskennan divergoimiseen. Tiheyspohjaisella ratkaisulla konvergenssihistoria on erilainen. Jos laskenta kaatuu, se tapahtuu yleensä äkillisesti. Jos mukana on tilayhtälö, laskenta myös räjähtää käsiin paljon nopeammin kuin kokoonpuristumattomassa tapauksessa. Alirelaksaatiota säädellään Courantin luvun arvoilla, jotka ovat eri suuruusluokkaa implisiittisessä ja eksplisiittisessä ratkaisussa. (Tässä on syytä taas muistaa, etteivät termit eksplisiittinen ja implisiittinen tässä yhteydessä liity ajan suhteen tarkkaan integrointiin). Eksplisiittisen ratkaisijan oletusarvona CF L = 1, mutta ratkaisu on lineaarisessa tapauksessa stabiili likimain Courantin lukuun 2,5 asti. Laskennallisesta virtausdynamiikasta muistetaan eksplisiittisen integroinnin stabiilisuusrajaksi 1,0, mutta moniaskelinen Runge-Kutta ja siihen yhdistetty residuaalin tasoittaminen toimivat ikään kuin yksinkertaisina implisiittisinä vaiheina, jolloin stabiilisuusraja kasvaa. Fluentin oletusarvoina on implisiittiselle ratkaisulle CF L = 5 ja eksplisiittiselle CF L = 1. Eksplisiittisellä menetelmällä kannattaa ensin aktivoida FAS-monihila, joka oletusarvoisesti on kytketty pois. Myös residuaalin tasoittaminen on syytä aktivoida, jos eksplisiittistä menetelmää sovelletaan. Jos laskenta pysyy sen kanssa pystyssä, voidaan Courantin lukua sen jälkeen kasvattaa. Monihila nopeuttaa laskentaa paljon enemmän kuin Courantin luvun tuplaaminen. Käytännössä ei juuri 5.4. RATKAISIJAN KÄYTTÖ 142 voida käyttää aivan stabiilisuusrajalla olevia lukuja, koska virtausyhtälöt ovat epälineaarisia. Epälineaarisuus on syynä myös siihen, että implisiittinen tiheyspohjainen ratkaisu, joka periaatteessa on ehdoitta stabiili, vaatii käytännössä melko pienen Courantin luvun. FLUENTissa oletusarvona on CF L = 5, mutta toisinaan on käytettävä tätäkin pienempää arvoa, toisaalta joskus jopa CF L = 100 on mahdollinen. Sopivan Courantin luvun löytää vain kokeilemalla. Kannattaa aloittaa oletusarvolla ja taas kaatumisen jälkeen pienentää lukua. Jos ratkaisu näyttää konvergoivan tasaisesti ja rauhallisesti, Courantin luvun arvoa voidaan nostaa. Monissa vastaavissa ratkaisutavoissa Courantin luvulla on jokin optimi konvergenssin suhteen. FLUENTissa käytetään ns. faktoroimatonta ratkaisua, joten yksinkertaisena nyrkkisääntönä on: mitä suurempi Courantin luku, sitä nopeampi konvergenssi. Alirelaksaatiokertoimien tai Courantin luvun muutos näkyy konvergenssikäyrissä epäjatkuvina hyppyinä. Näiden jälkeen on käyrien suunnan oltava alaspäin, muuten tapahtuu divergointi. Tiheyspohjaisen implisiittisen ratkaisun yhteydessä voi käydä myös siten, että yhtälöryhmän ratkaisussa käytetty algebrallinen monihila ei konvergoi. Tällöin Courantin luvun arvoa on laskettava. Tämän ohjelma tekee automaattisesti. Periaatteessa käyttäjä pääsee käsiksi myös monihila-algoritmin parametreihin, mutta tätä ei suositella. On myös mahdollista, että laskentaa ei saada konvergoimaan millään laskentaparametrien muutoksella. Tällöin on kaksi mahdollisuutta. Todennäköisesti tehtävä on jollain tavalla huonosti asetettu. Käyttäjän on tarkistettava kaikki antamansa suureet ja reunaehdot. Toinen usein esiintyvä mahdollisuus on, että laskenta jää jonkinlaiseen periodiseen tilaan. Jos tilanteessa esimerkiksi esiintyy kuvan 1.5 kaltainen pyörrerata, ei laskennan oikeasti pitäisikään konvergoida, vaan jäädä jonkinlaiseen värähtelevään tilaan. Turbulenssimallit saattavat pyrkiä sammuttamaan pyörreradan, mutta tällöin laskenta toimii eräässä mielessä väärin. Ainoaksi keinoksi tilanteeseen jää ajan suhteen tarkka ratkaisu, jolloin pyörrerata saadaan tarkemmin esille. Tasapainotilan laskennassa pyörrerata ei välttämättä näy oikeankaltaisena iteraatiohistoriassa, joka on analoginen aikahistorialle. Ajan suhteen tarkassa laskussa saattaa joskus käydä niin, että aikariippuvalta vaikuttanut ilmiö sammuu. Tämän voi tulkita aihetuvan siitä, että tasapainotilan ratkaisu pyrkii jollain tavoin kasvattamaan häiriöitä ja tilanne saattaa olla juuri lähellä ajasta riippuvaa. Tällainen häiriöiden vahvistaminen on tyypillistä ainakin FAS-monihila-algoritmille. 5.4. RATKAISIJAN KÄYTTÖ 143 5.4.5 Monihila-algoritmi Yhtälöiden ratkaisemisessa käytettävä algebrallinen monihila-algoritmi (AMG) on FLUENTissa oletusarvoisesti aktivoituna. Eksplisiittisen menetelmän yhteydessä kannattaa käynnistää FAS-algoritmi. Algoritmi saattaa eräissä virtaustehtävissä suurella laskentakoppimäärällä olla FLUENTin tehokkain vaihtoehto. Algoritmia voidaan säätää vieläkin nopeammaksi, jos konvergenssi näyttää tasaiselta, mutta syystä tai toisesta hitaalta. (FLUENTissa tästä käytetään nimitystä ’industrial-strength FAS’ ja siihen asetukset löytyvät paneelin FAS Multigrid Controls alta). On muistettava, että FAS-algoritmia voidaan soveltaa vain tasapainotilan laskentaan. Monihilan laskentaa tehostava vaikutus nähdään jo käyttäen kahta tasoa. Enempää kuin 4-5 tasoa ei kannata käyttää, koska laskenta ei enää juuri tehostu, mutta stabiilisuus heikkenee. (Suuremman monihilatasojen lukumäärän vaikutus alkaisi näkyä vasta, kun koppimäärä on >> 106 ). Koska stabiilisuus heikkenee, on kiinnitettävä huomiota myös Courantin luvun vaikutukseen. Laskenta voidaan aloittaa vaikkapa Courantin luvulla yksi ja viidellä hilatasolla. Jos ajo kaatuu, vähennetään ensin hilatasojen määrää ja lopuksi Courantin lukua. Jos konvergenssi on tasaista, voidaan Courantin lukua nostaa, mutta sen vaikutus ei ole enää kovin suuri. Monihilatasoja ei voida lisätä, jos alimmalla tasolla on enää yksi laskentatilavuus. Koodi osaa ottaa tämän huomioon automaattisesti. Yleensä ei stabiilisuussyistä kannattaisi mennä yhteen koppiin asti. Jos alimmalla tasolla on suuruusluokkaa O(10) laskentatilavuutta, on monihilasta saatu jo irti kaikki teho. Algoritmi onkin tehokas erityisesti isoilla laskentatehtävillä, muutaman tuhannen kopin laskut tiheyspohjaisella ratkaisijalla kannattaa yleensä ajaa oletusarvoisesti implisiittisellä menetelmällä, jolla FAS-algoritmia ei voida soveltaa. Eksplisiittisestä ratkaisijasta voidaan myös todeta, että ilman FAS-algoritmia se on isoissa tehtävissä hyvin tehoton. Runge-Kutta algoritminkin parametreja voidaan kokeilemalla säätää ja saada perusalgoritmia siten nopeammaksi. Käyttäjällä on silloin syytä olla jonkinasteinen käsitys menetelmän vaimennusominaisuuksista. Käytännön tehtävissä kokeiluun ei siis pidä ryhtyä. FLUENTissa on mahdollista säätää myös algebrallista monihila-algoritmia. Normaalikäyttäjälle AMG:n säätäminen on vaikeaa eikä sitä kannata yrittää. On muistettava, että AMG:tä käytetään yhtälöryhmien ratkaisuun. Yleensä ainakaan painekorjausalgoritmin yhteydessä ei yhtälöryhmien ratkaisun tarkkuus ole kovin kriitti- 5.4. RATKAISIJAN KÄYTTÖ 144 nen asia. Riittää, että kohtuullinen tarkkuus on saavutettu. Tiheyspohjaisen implisiittisen menetelmän yhteydessä tarkkuusvaatimus saattaa olla suurempi ja silloinhan yksinkertaisin tapa oli pienentää Courantin lukua. Tällöin matriisi tulee lävistäjävaltaisemmaksi ja yhtälöryhmän ratkaisu vaatii vähemmän iteraatiokierroksia. Tavanomaisen käyttäjän on siten mahdotonta tietää johtuuko konvergenssiongelma siitä, ettei AMG ole kunnolla supennut. Todennäköisesti vika on muualla. Alan eksperteille on jätetty kuitenkin mahdollisuuksia säätää AMG nopeammaksi. Yhtälöryhmien, erityisesti painekorjausyhtälön, ratkaisu on laskenta-ajan kannalta kriittinen ja säätämällä AMG:tä laskenta-aikaa voidaan pienentää. Hyvällä onnella säästöt tässä voivat olla korkeintaan muutaman kymmenen prosentin luokkaa, joten tähän puuhaan ani harvoin kannattaa ryhtyä. Poikkeuksen ehkä muodostaa juuri painekorjausyhtälö. Joissain tapauksissa, kun konvergenssia ei saavuteta, katsotaan ensin onko AMG-saavuttanut säädetyt residuaalitasot. Jos esimerkiksi painekorjausyhtälön kohdalla ei näin ole, voidaan algoritmia säätää, esimerkiksi muuttaa V-sykli W-sykliksi ja yrittää uudelleen. 5.4.6 Suureiden rajaaminen ja alkuarvojen antaminen Virtausratkaisijan pitäisi ideaalisessa mielessä olla ns. todenmukainen (realizable), jolloin paine ja lämpötila pysyvät aina positiivisina jne. Käytännössä vain yksinkertaisissa ideaalitapauksissa voidaan rakentaa täysin todenmukaisia algoritmeja. Tämän vuoksi ohjelmissa asetetaan suureille rajoja, joiden sisällä niiden on pysyttävä. Viimeinen keino on asettaa suureille ala- tai ylärajan arvo, jos rajan yli mennään, mutta myös iterointiin on mahdollista asettaa lähdetermien avulla rajoittimia, jolloin rajaa lähestytään asymptoottisesti (kts. esim. Laskennallisen virtausmekaniikan jatkokurssi). Tällainen keino on numeerisesti paremmin käyttäytyvä, mutta sitäkään ei saada kaikissa tilanteissa idioottivarmaksi. FLUENTissa on siis ratkaistaville suureille rajat, jotka on pyritty asettamaan fysikaalisesti järkeviksi. Tärkeimmät rajat ovat 1 Pa < p< 5 MPa 1K< T < 5000 K 0 < µT /µ < 105 10−10 m2 /s2 < k (5.19) Useimpiin tehtäviin rajat ovat turhan laajat. Esimerkiksi suurin tämän kirjoittajan 5.4. RATKAISIJAN KÄYTTÖ 145 näkemä turbulentin ja laminaarin viskositeetin suhde on ollut µT /µ ≈ 30000. Laskenta saadaan stabiilimmaksi, jos käyttäjälle on muodostunut käsitys tehtävässä esille tulevasta turbulentin viskositeetin arvosta. Tällöin ohjelma ei päästä viskositeettia iteroinnin kuluessa heilumaan holtittomasti laajalla alueella. Lämpötilan maksimiarvo on lähellä auringon pintalämpötilaa, joten yleensä sitäkin voidaan pienentää, samoin minimiarvo on melkein absoluuttisessa nollapisteessä. Jos tiheys lasketaan tilanyhtälöstä, on rajat spesifioitava tilanyhtälön rajojen mukaan. Paineelle maksimiarvo 5 MPa saattaa useimmiten olla aivan liian korkea, mutta se tulee helposti ylitetyksi esimerkiksi ydinreaktorin virtauksia laskettaessa. Loviisan reaktorin normaaleissa käyttöolosuhteissa sopiva rajaus olisi 12 MPa < p < 12,5 MPa. Rajojen kanssa on oltava myös tarkkana, etteivät liian pienet (tai suuret) rajat unohdu koodiin. Jos esimerkiksi dimensioton turbulentti viskositeetti on leikattu liian alas, ohjelma voi laskea täysin pieleen. Joissain tilanteissa taas ehkä tiedetään turbulenssimallin ennustavan liian suuria arvoja, jolloin niiden varovainen leikkaaminen on mahdollista. On lisäksi huomattava, että rajojen pääasiallinen tarkoitus on parantaa iteroinnin robustisuutta. Rajoja ei ole edes tarkoitettu jääväksi lopputuloksin, vaikka näin saattaa joskus käydä. Jos ratkaisussa paine leikataan suuressa osa-alueessa, se vaikuttaa massataseen toteutumiseen ja saattaa näkyä virheenä sisään- ja ulosmenevissä massavirroissa. Tiheyspohjaisella ratkaisulla lämpötilan leikkaaminen voi lopputulokseen vaikuttaa samalla tavoin. Ratkaistavien suureiden rajat on valistuneen virtauslaskijan aina pohdittava. Kyseessä on samantyyppinen operaatio kuin virtaustilanteen luokittelu dimensiottomien lukujen avulla. Oikeiden rajojen asettaminen virtausratkaisijaan ei läheskään aina vaikuta mihinkään, mutta koska ohjelmassa on annettu mahdollisuus spesifioida rajat, se kannattaa tehdä tehtäväasettelun yhteydessä. Reunaehtojen (boundary conditions) lisäksi simulointitehtävälle on aina annettava alkuarvot. Ajan suhteen tarkalle ongelmalle on annettava alkuehdot (initial conditions), joiden on oltava fysikaalisessa mielessä oikeat, muuten ei vältytä laskennan alussa olevalta transientilta. Hyvin usein sopivat alkuehdot löytyvät tasapainotilan laskennan tuloksesta. Tasapainotilankaan laskussa ei voida aloittaa nollatilasta, jossa paine, lämpötila ja tiheys olisivat nollia. Laskentaa ei yleensä kannata myöskään aloittaa asettamalla nopeus koko kentässä nollaksi. Tasapainotilan simuloinnissa järkevät alkuarvot nopeuttavat konvergenssia ja ainakin helpottavat laskennan pysymistä pystyssä. Mielekäs tapa antaa alkuarvot, jota tosin ei ole FLUENTissa, on interpoloida ratkaisu edelliseltä harvemmalta hilatasolta. Menettelyä kutsutaan 5.4. RATKAISIJAN KÄYTTÖ 146 joskus täydeksi monihilaksi (full multigrid, FMG). FLUENTissa alkuarvot annetaan aina aluksi koko virtauskentälle, jonka jälkeen niitä voidaan antaa tarkemmin vyöhyke kerrallaan. Alkuarvot lasketaan joko tiettyjen reunavyöhykkeiden arvojen avulla tai kaikkien reunavyöhykkeiden arvojen keskiarvona. Ne voidaan myös antaa käsin. Arvot annetaan Solve-valikosta paneelin Initialize alla. On siis mahdollista antaa joko jokin vyöhyke tai klikata All-Zones, jolloin käytetään keskiarvoa. Jos näin spesifioituja arvoja halutaan muuttaa, se tapahtuu valitsemalla Compute From. Koska alkuarvojen antaminen ei ole yksikäsitteistä, ne kannattaa tallettaa ja käyttää aina samoja alkuarvoja, jos ne on todettu toimiviksi. Kun alkuarvot on annettu koko virtauskentälle, käyttäjällä on mahdollisuus muuttaa niitä osassa ratkaistavaa aluetta. Jos laskenta-alueessa on useita vyöhykkeitä, voidaan eri vyöhykkeille esimerkiksi antaa eri lämpötila. On myös mahdollista antaa monimutkaisempia jakaumia ’rekistereiden’ (registers) ja ’kenttäfunktioiden’ (field functions) avulla. Alkuarvojen antamisella saattaa joskus olla suurikin merkitys laskennan onnistumiselle, jolloin käyttäjän on pystyttävä hyödyntämään näitä ohjelman antamia mahdollisuuksia. Esimerkkeinä hankalista tilanteista ovat ylisooninen virtaus suuttimessa. Jos virtaus luisuu alisooniselle puolelle, sitä ei ehkä koskaan saada konvergoimaan kohden oikeaa ylisoonista ratkaisua. Toinen vastaava tilanne on pumpuissa ja puhaltimissa, joissa virtaus kulkee kohden nousevaa painetta. Ennen kuin laite laskennassa ryhtyy ’pumppaamaan’, virtaus voi yrittää kääntyä väärään suuntaan. Tämän jälkeen riippuu reunaehtojen toimivuudesta, saadaanko virtaus kääntymään takaisin. Alkuarvojen kannalta hankalat tilanteet ovat jossain määrin ohjelmakohtaisia, koska asiaan linkittyy voimakkaasti myös reunaehdot. Jollain toisella ohjelmalla saattaa reunaehtojen valikossa löytyä paremmin toimivat vaihtoehdot kuin toisella. Laskennan suorittajan kannattaa aina pohtia alkuarvoja sen verran, että ne ovat mahdollisimman lähellä todennäköiseltä vaikuttavaa ratkaisua ja muodostavat fysikaalisesti järkevän, parhaassa tapauksessa ’todenmukaisen’, kokonaisuuden. 5.4.7 Konvergenssin monitorointi FLUENTissa konvergenssia voidaan seurata residuaalien, voimakertoimien, pintaintegraalien sekä eräänlaisten tilastollisten suureiden avulla. Virtauslaskijalle residuaalien seuraaminen yhdessä tuloksen kehittymisen kannalta on tärkeää, koska si- 5.4. RATKAISIJAN KÄYTTÖ 147 mulointi voidaan keskeyttää yleensä vasta harkinnan jälkeen manuaalisesti, ts. ajoa ei enää jatketa seuraavan keskeytyskohdan jälkeen. Ohjelmassa on myös konvergenssikriteereitä, joiden jälkeen ohjelma automaattisesti lopettaa laskemisen, mutta käytännössä kriteereitä on joko vaikea saavuttaa tai sitten konvergoituneesta tuloksesta ei voi olla varma. Suositeltava ajostrategia on sellainen, jossa lopetuskriteerit asetetaan hyvin pieniksi ja laskentaa jatketaan sopivan kokoisissa ’paakuissa’. Tämän jälkeen tuloksia tarkastellaan ja päätetään jatkosta. Isoissa käytännön simulointitehtävissä kannattaa ajaa esimerkiksi yön yli. FLUENTissa konvergenssia voidaan monitoroida ajon aikana ja päiväsaikaan tehtävissä ajoissa näin kannattaa tehdä. Tällöin divergoinnin yhteydessä ajo voidaan keskeyttää ja jos konvergenssihistorian mukaan ajo näyttäisi konvergoituneen tai vaihtoehtoisesti konvergensssin suhteen lukittuneen paikoilleen, se kannattaa myös pysäyttää ja mahdollisesti säätää ajoparametrit uudelleen. FLUENTissa ja muissakin koodeissa päätyökalu konvergenssin monitorointiin on residuaalihistoriat. Yleinen ja hyvin käyttökelpoinen tapa on seurata muuttujien globaalia muutosnopeutta (L2 -normia). Jossain vaiheessa tehdyt korjaukset eivät enää pienene, jolloin konvergenssihistoriaa jää ’sahaamaan’ jollekin tasolle, parhaassa tapauksessa tietokoneen laskentatarkkuuden määräämälle tasolle. FLUENTissa ei käytetä näin määriteltyjä residuaaleja, vaan lähdetään yleisen diskretoidun yhtälön toteutumisesta aP φP = X anb φnb + b (5.20) nb Näiden virheet voidaan laskea yhteen, jolloin saadaan ns. skaalamaton residuaali Rφ = X X | cells anb φnb + b − aP φP | (5.21) nb Manuaalin mukaan parempi indikaattori useimpien suureiden seurannalle on ns. skaalattu residuaali φ R = P cells | P nb P anb φnb + b − aP φP | cells |aP φP | (5.22) Sopivana konvergenssikriteerinä manuaalissa mainitaan skaalatun residuaalin putoamista arvoon 10−3 . Kriteeri on hyvin tapauskohtainen. Varminta olisi laskea niin pitkään, että residuaalit putoavat ainakin kolme dekadia ja jäävät jollekin vakiotasolle, minkä voi tulkita merkitsevän sitä, että koneen laskentatarkkuus on saavutettu. 5.4. RATKAISIJAN KÄYTTÖ 148 Jatkuvuusyhtälön residuaali lasketaan yhtälöstä Rc = X (5.23) |∆m ˙ i| cells ja skaalattu residuaali suhteena c RiteraatioN c Riteraatio5 (5.24) c missä Riteraatio5 on viiden ensimmäisen kierroksen aikana ollut suurin massataseen virhe. Skaalatuista residuaaleista esimerkkeinä ovat kuvat 5.6 ja 5.7. Tiheyspohjaisella ratkaisijalla residuaalivektorin arvo lasketaan suureiden muutosnopeuksien avulla R(W) = v u uX t ∂W ∂t !2 (5.25) Lauseke on outo siinä mielessä, että käytetty aika-askel on lokaalinen. Yleensä tässäkin käytetään pelkkiä suureiden muutoksia ∆W, mutta FLUENTissa ainakin manuaalin mukaan lauseketta (5.25). Skaalattu virhe saadaan tiheyspohjaisella menetelmällä suhteesta R(W)iteraatioN R(W)iteraatio5 (5.26) Joissain virtaustehtävissä eivät residuaalit kerro kaikkea laskennan käyttäytymisestä ja iteraation suppenemisesta. Usein on hyödyllistä seurata voimia, erityisesti dimensiottomia voimakertoimia. Esimerkkinä on kuvan 5.8 vastuskerroin. Jos vastuskerroin hyytyy paikoilleen, vaikka residuaalit vielä laskevat alaspäin, voidaan tulosta pitää jo melko hyvänä. Voimakertoimista voidaan päätellä myös ratkaisun kehittyminen ajasta riippuvaksi. Residuaalit jäävät tällöin yleensä jollekin melko korkealle tasolle ’sahaamaan’, mutta voimakertoimiin saattaa kehittyä periodinen historia. Tällöin laskentaa ehkä kannattaa jatkaa ajan suhteen tarkkana. Voimakertoimet ovat oikeastaan dimensiottomia voimia, jotka saadaan integroimalla liikemääräyhtälön vuot määriteltyjen pintojen yli. Voimakertoimista erillään omana konvergenssin seurantamenetelmänä FLUENTissa voidaan käyttää muidenkin suureiden integraaleja määriteltyjen pintojen yli. Voidaan esimerkiksi seurata massavirtaa tai lämmönsiirtoa. Myös tilavuuksien yli integroitujen suureiden taseet ovat eräissä tapauksissa hyödyllisiä, koska joskus residuaalit saattavat mennä hyvin pieniksi, mutta suureet jatkavat ryömimistä eteenpäin, ehkä jopa kymmeniä tuhansia iteraatiokierroksia. Sopivia suureita ovat keskimääräinen paine tai lämpötila. Hyvin usein, esimerkiksi 5.5. FLUENTIN NUMERIIKAN TARKASTELUA 149 Kuva 5.8: Vastuskertoimen CD konvergenssihistoria, kun αp = 0,3 ja αu = 0,7 sekoitussäiliöiden yhteydessä kannattaa seurata kineettisen energian ja turbulenssisuureiden kokonaistaseen kehittymistä. Keskeisten suureiden, mukaan lukien turbulenssisuureet, konvergenssihistoriat kannattaa ottaa mukaan työraporttiin. Virtaustehtävissä saavutettavassa konvergenssissa on huomattavia eroja ja tyypillisesti esimerkiksi eri turbulenssimallit saattavat ennustaa aivan eri tasolla olevia kineettisen energian k arvoja. Konvergenssikäyristä voidaan heti päätellä, onko syynä mahdollisesti joidenkin yhtälöiden osalta huono konvergenssi. Samoin voima- ja lämmönsiirtokertoimien kehityshistorioita kannattaa raporttiin laittaa kriittistä lukijaa varten. 5.5 FLUENTin numeriikan tarkastelua FLUENT-ohjelman numeriikkaa voidaan luonnehtia yhtä aikaa sekä laajaksi että suppeaksi. Numeeristen menetelmien valikoima on hyvin laaja siinä mielessä, että paine- ja tiheyspohjaiset ratkaisijat ovat perusteiltaan erilaiset ja kattavat laajan sovellusalueen. Valikoima on toisaalta suppea, koska esimerkiksi konvektiotermien diskretoinnissa valinnan mahdollisuuksia ei ole paljon. Eräissä kohdin, kuten esimerkiksi monihila-algoritmien parametrisoinnissa, käyttäjä pääsee hyvin yksityiskohtaisesti säätelemään ohjelman parametreja, toisissa paljon olennaisemmissa seikoissa, kuten konvektiotermien osalta vastaavia mahdollisuuksia ei ole. Eräiltä osin, kuten tässä luvussa ilmenee, on myös mahdotonta saada manuaalin tietojen perus- 5.5. FLUENTIN NUMERIIKAN TARKASTELUA 150 teella selville, mitä ohjelma oikeastaan tekee. Ja joiltain osin käytetään harhaan johtavia nimityksiä. Pääsyynä puutteisiin on ohjelman ’kaupallinen luonne’. Ohjelma halutaan pitää niin robustina kuin mahdollista, jolloin valinnan mahdollisuuksia karsitaan ja valitaan hieman epätarkempia menetelmiä. Kaupallisuutta voidaan mitä ilmeisimmin syyttää myös joidenkin asioiden kryptaamisesta: ei halutakaan antaa tietoa, miten jotkut asiat lasketaan tai käytetään termiä QUICK menetelmästä, joka on kirjallisuudessa jotain muuta. Kokonaisuutena voidaan arvioida, että FLUENTin numeriikka on ’state-of-the-art’-tasoa. Toisaalta voidaan todeta FLUENTin kilpailijoiden olevan likimain samaa tasoa, erot ovat pieniä ja muuttuvat aina, kun uusia ohjelmaversiota julkaistaan. 1e+00 1e+00 1e-01 1e-01 1e-02 1e-02 Residuals continuity x-velocity 1e-03 Residuals continuity x-velocity 1e-03 1e-04 1e-04 1e-05 1e-05 1e-06 1e-06 1e-07 1e-07 1e-08 1e-08 0 100 200 300 400 500 600 700 800 900 1000 Iterations 0 100 200 300 400 500 600 700 800 900 Iterations Kuva 5.9: Konvergenssit kuvan 2.16 tapauksessa harvalla (10 × 10) hilalla (vasemmalla) ja tiheämmällä (40 × 40) hilalla (oikealla). Eräänä kaupallisten koodien yleisenä puutteena on FAS-tyyppisen monihilaalgoritmin puute painekorjauksen yhteydessä. Yleensä menettelystä käytetään silloin termiä agglomeration multigrid. Algebrallinen monihila vaikuttaa vain yhtälöryhmien ratkaisuun ja pitää painekorjausyhtälöön kuluvan ajan suoraan verrannollisena laskentatilavuuksien lukumäärään. Itse virtausratkaisuun kuluva iteraatiokierrosten määrä kuitenkin kasvaa, kun hilajakoa tihennetään. Esimerkkinä on kuvan 2.16 laskentahilat, joita vastaavat konvergenssihistoriat ovat kuvassa 5.9. Kun hila on tihennetty nelinkertaiseksi kummassakin suunnassa, iteraatiokierrosten määrä kasvaa moninkertaiseksi. Tämän ilmiön ehkä pystyisi välttämään painepohjaiseen menetelmään yhdistetyn FAS-menetelmän avulla. (Monihila-algoritmin soveltamisesta tällä tavoin kts. esimerkiksi Ferziger-Peric). 1000 5.6. KERTAUS 151 5.6 Kertaus • painekorjausratkaisussa paine määräytyy jatkuvuusyhtälön avulla • painekorjausmenetelmässä painetta on yleensä pakko alirelaksoida. Relaksoinnin tarve tulee yhtälöiden epälineaarisuudesta ja epälineaaristen yhtälöiden vaillinaisesta linearisoinnista. • alirelaksoinnin tarpeeseen vaikuttaa virtaustapaus, laskentahila, turbulenssimalli, reunaehdot jne. • painekorjauksen yhteydessä FLUENTissa korjataan laskentatilavuuksien pinnoilla vallitsevat massavirtojen arvot. Todennäköisesti korjataan myös nopeudet, jotka sijaitsevat koppien keskellä. • painepohjainen ratkaisu tapahtuu kytkettynä tai painekorjausmenetelmällä • painekorjaustavat: SIMPLE, SIMPLEC ja PISO • yhtälöryhmien iterointi helpottuu lävistäjävaltaisilla yhtälöillä • painekorjausratkaisussa syntyy Poisson-tyyppinen yhtälö. Algoritmissa kullekin ratkaistavalle suureelle muodostuu lävistäjävaltainen yhtälö • painekorjausmenetelmän kriittinen vaihe ajan käytön suhteen on itse painekorjausyhtälö, muut yhtälöt konvergoivat helpommin • kytketty painepohjainen ratkaisu vaatii eniten aikaa iteraatiokierrosta kohden • tiheyspohjaisessa implisiittisessä menetelmässä lävistäjävaltaisuus kasvaa, kun Courantin lukua pienennetään • virtauslaskennassa ’konvergenssilla’ voidaan tarkoittaa ulkoisen iteraation lisäksi yhtälöryhmien ratkaisua • monihila-algoritmin soveltamistyypit: AMG, FAS ja FMG (ei FLUENTissa) • algebrallisessa monihilassa FLUENT käyttää Gauss-Seidel -menetelmää tasoittajana • FAS-menetelmää FLUENTissa käytetään vain tiheyspohjaisen eksplisiittisen ratkaisun yhteydessä 5.6. KERTAUS 152 • monihila perustuu tiheimmällä tasolla lasketun virheen korjaamiseen myös harvemmilla hilatasoilla, jolloin virheen ’matalataajuiset’ komponentit vaimenevat nopeasti harvoilla tasoilla ja ’korkeataajuiset’ tiheillä tasoilla • monihilaan liittyvät syklityypit: V, W, F ja joustava. Näistä F- ja joustava sykli ovat lähinnä FLUENT-ohjelman omia nimityksiä. • algebrallisessa monihilassa tarvitaan vain yhtälöryhmä. Harvalle tasolle mentäessä yhdistetään 2-4 yhtälöä (kukin yhtälö liittyy laskentatilavuuteen). • FAS-algoritmissa joudutaan yhdistämään laskentatilavuudet geometrisesti (’agglomeraatio’). • lopullisessa laskennassa konvektiolle toisen kertaluvun diskretointi • paineelle kannattaa standardimenetelmän sijaan kokeilla lineaarista interpolointia • painekorjaustavaksi voi yleensä valita SIMPLEn. Ajan suhteen tarkkoihin laskuihin manuaali suosittelee PISOa. • nopeuksien (liikemääräyhtälöiden) relaksointikerrointa voi yrittää pitää lähellä ykköstä ja käyttää päästabilointimenetelmänä paineen alirelaksointia • turbulenssisuureita voidaan joutua relaksoimaan joissain virtaustapauksissa rankastikin. Reynoldsin jännitys -malli on herkempi kuin yksinkertaiset mallit. • eksplisiittisellä tiheyspohjaisella ratkaisulla kannattaa aina käyttää FAS-algoritmia Courantin luvun kustannuksella • implisiittisellä tiheyspohjaisella algoritmilla ohjelma laskee automaattisesti Courantin luvun arvoa taatakseen lineaarisen yhtälöryhmän lävistäjävaltaisuuden ja sen avulla riittävän nopean konvergenssin • normaalikäyttäjän ei kannata lähteä muuttamaan monihila-algoritmien asetuksia • virtaustehtävissä suureilla on luonnolliset rajat, jotka kannattaa asettaa. Joissain tapauksissa niiden uudelleen asettaminen voi nopeuttaa konvergenssia 5.6. KERTAUS 153 • joskus rajojen asettamisella voi korjata esimerkiksi virheellisesti toimivan turbulenssimallin toimintaa (ei aloittelijalle soveltuva menettely) • virheelliset rajat voivat pilata ratkaisun, mikä on perussyy siihen, että FLUENTin oletusarvorajat ovat laajat • alkuarvojen väärä asettaminen saattaa joissain marginaalisissa tilanteissa johtaa väärään ratkaisuun tai hitaaseen konvergenssiin • simulointi kannattaa saattaa loppuun ’manuaalisesti’ • konvergenssin seurantapoja on useita. Eri tilanteissa on pohdittava oikeat tavat, kaavamainen residuaalien tuijottelu voi johtaa täysin harhaan • myös laskentatulosta on tutkittava ajon keskeytystilanteissa. Monimutkaisissa tapauksissa useimmiten sopiva ajofrekvenssi on kerran yön kuluessa, jolloin päivällä voi tuloksen mielekkyyttä tutkia • yksinkertaisia demoja lukuun ottamatta virtaussimuloinnin teko on aikaa vievää. Yhden onnistuneen ajon tekemiseen voi mennä jopa kuukausia. Tietokoneiden kehittyminen ei ole toistaiseksi vaikuttanut tähän aikaan (miksi?) Päivitetty 2.2.2014
© Copyright 2024