5. luento

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