Laskennallisen virtausmekaniikan

Laskennallisen
virtausmekaniikan ja
lämmönsiirron jatkokurssi
Timo Siikonen
c 2014 by
Aalto University School of Engineering
Department of Applied Mechanics
Sähkömiehentie 4
FIN-00076 Aalto
Finland
1
Sisällys
1 Johdanto
5
1.1
Taustaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2
Virtausyhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3
Virtausyhtälöiden yksinkertaistettuja muotoja . . . . . . . . . . . . 10
1.4
Yhtälöiden ratkaisu . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1
Tiheyspohjainen ratkaisu . . . . . . . . . . . . . . . . . . . 13
1.4.2
Painepohjainen ratkaisu . . . . . . . . . . . . . . . . . . . 15
1.5
Menetelmien tarkastelua . . . . . . . . . . . . . . . . . . . . . . . 18
1.6
Kurssin sisällöstä . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7
Käytetyt yhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Virtausyhtälöiden ominaisuuksia
30
2.1
Navier–Stokes-yhtälöt . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2
Primitiivimuodot ja vuovektorin Jacobin matriisi . . . . . . . . . . 31
2.3
Muunnokset konservatiivisten ja primitiivisuureiden välillä . . . . . 35
2.4
Ominaisvektorit ja Jacobin matriisin diagonalisointi . . . . . . . . . 36
2.5
Karakteristiset suureet ja niiden merkitys . . . . . . . . . . . . . . . 39
2.6
Karakteristikat ja reunaehdot . . . . . . . . . . . . . . . . . . . . . 42
2.7
Implisiittinen menetelmä Eulerin yhtälöillä . . . . . . . . . . . . . 47
2.8
Ajan suhteen tarkka laskenta . . . . . . . . . . . . . . . . . . . . . 53
2.9
Eulerin yhtälöiden tarkastelua . . . . . . . . . . . . . . . . . . . . 55
3 Ratkaisumenetelmien kertaus kontrollitilavuusmenetelmällä
59
4 Yksidimensioinen painekorjausmenetelmä
60
4.1
Taustaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2
4.2
Valmistava esimerkki . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3
Painekorjausyhtälön ominaisuuksia . . . . . . . . . . . . . . . . . . 66
4.4
Skalaariyhtälön ratkaisu ja Patankarin säännöt . . . . . . . . . . . . 69
4.5
Yksidimensioiset virtausyhtälöt . . . . . . . . . . . . . . . . . . . . 73
4.6
Painekorjaus limitetyllä hilalla . . . . . . . . . . . . . . . . . . . . 76
5 Painekorjausmenetelmä tavanomaisella hilalla
87
5.1
Limitetyn hilan etuja . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.2
Konvektionopeuden interpolointitavat . . . . . . . . . . . . . . . . 89
5.3
Pintanopeuden tarkastelua . . . . . . . . . . . . . . . . . . . . . . 94
5.4
Yksidimensioinen menetelmä tavallisella hilalla . . . . . . . . . . . 96
5.5
Reunaehtojen käsittely . . . . . . . . . . . . . . . . . . . . . . . . 103
5.6
Yksinkertaistettu vaimennustermi . . . . . . . . . . . . . . . . . . 105
6 Monidimensioinen painekorjausmenetelmä
107
6.1
Yhtälöiden diskretointi . . . . . . . . . . . . . . . . . . . . . . . . 107
6.2
Fysikaaliset reunaehdot . . . . . . . . . . . . . . . . . . . . . . . . 117
6.3
Reunaehtojen käsittely . . . . . . . . . . . . . . . . . . . . . . . . 119
6.4
Alirelaksointitavat . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7 Lineaaristen yhtälöiden ratkaisumenetelmät
127
7.1
Yhtälöiden ratkaisutarve . . . . . . . . . . . . . . . . . . . . . . . 127
7.2
Fysikaalisen probleeman ratkaisu . . . . . . . . . . . . . . . . . . . 128
7.3
Suorat ratkaisutavat . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.4
7.3.1
Gaussin eliminaatio . . . . . . . . . . . . . . . . . . . . . . 131
7.3.2
LU-hajotelma . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3
Tridiagonaaliset yhtälöt . . . . . . . . . . . . . . . . . . . . 133
Iteratiiviset menetelmät . . . . . . . . . . . . . . . . . . . . . . . . 134
7.4.1
Peruskäsitteitä . . . . . . . . . . . . . . . . . . . . . . . . 134
7.4.2
Konvergenssi ja spektraalisäde . . . . . . . . . . . . . . . . 135
7.4.3
Perusmenetelmiä . . . . . . . . . . . . . . . . . . . . . . . 137
7.4.4
Epätäydellinen LU-hajotelma: Stonen menetelmä . . . . . . 138
7.4.5
ADI ja muut ositusmenetelmät . . . . . . . . . . . . . . . . 139
7.4.6
Konjugaattigradienttimenetelmät . . . . . . . . . . . . . . . 140
3
7.5
Monihila-algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . 142
7.5.1
Peruskäsitteitä . . . . . . . . . . . . . . . . . . . . . . . . 142
7.5.2
Yksinkertainen esimerkki . . . . . . . . . . . . . . . . . . 144
7.5.3
Algebrallinen monihila-algoritmi yhtälöryhmille . . . . . . 146
7.6
Laskentaesimerkkejä . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.7
Loppupäätelmiä . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8 Virtausratkaisun tehostaminen
8.1
158
Rinnakkaistaminen . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.1.1
Rinnakkaistamistavat rakenteellisella ja rakenteettomalla hilalla158
8.1.2
Lohkorakenne . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.3
Laskennan tehostaminen rinnakkaistamalla . . . . . . . . . 161
8.1.4
Rinnakkaistaminen käyttäen viestinvälitystä . . . . . . . . . 164
8.1.5
Hilan jako osa-alueisiin . . . . . . . . . . . . . . . . . . . . 166
8.1.6
Rinnakkaistamisesta saavutetun hyödyn arviointi . . . . . . 168
8.2
Monihilamenetelmän käyttö . . . . . . . . . . . . . . . . . . . . . 171
8.3
Ratkaisun adaptiivisuus . . . . . . . . . . . . . . . . . . . . . . . . 177
9 Käyräviivainen laskentahila
183
9.1
Hilatyypit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.2
Hilangenerointi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
9.3
Nopeuskomponenttien valinta ja koordinaatistomuunnos . . . . . . 186
9.4
Kontrollitilavuusmenetelmä käyräviivaisella hilalla . . . . . . . . . 188
9.5
Painekorjaus käyräviivaisella hilalla . . . . . . . . . . . . . . . . . 198
9.6
Ohutkerrosapproksimaatio ja kiinteät pinnat . . . . . . . . . . . . . 202
10 Ajan suhteen tarkka laskenta
206
11 Turbulentin virtauksen laskenta
207
12 Virtauslaskennassa esille tulevia käsitteitä
208
12.1 Johdanto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
12.2 Geometristen suureiden laskenta . . . . . . . . . . . . . . . . . . . 208
12.2.1 Laskentatilavuuksien pinta-alavektoreiden laskeminen . . . 209
12.2.2 Tilavuuksien laskenta . . . . . . . . . . . . . . . . . . . . . 210
4
12.2.3 Tarkkuus . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
12.3 Voimien ja momentin laskenta . . . . . . . . . . . . . . . . . . . . 211
12.4 Paine- ja kitkakerroin . . . . . . . . . . . . . . . . . . . . . . . . . 215
12.5 Liikkuva laskentahila . . . . . . . . . . . . . . . . . . . . . . . . . 217
12.6 Pyörimisliike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
12.7 Nopeus- ja pyörteisyyskomponenttien sekä jännitystensorin peilaaminen221
13 Muita ratkaisumenetelmiä
227
13.1 Historiaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
13.2 Painekorjausyhtälön luonne . . . . . . . . . . . . . . . . . . . . . . 228
13.3 Painekorjausmenetelmät . . . . . . . . . . . . . . . . . . . . . . . 229
13.4 Viivästetyn korjauksen periaate . . . . . . . . . . . . . . . . . . . . 232
13.5 Implisiittinen Rhie-Chow interpolointi . . . . . . . . . . . . . . . . 233
13.6 Virtafunktio-pyörteisyys -menetelmä . . . . . . . . . . . . . . . . . 234
13.7 Näennäispuristuvuuskeino . . . . . . . . . . . . . . . . . . . . . . 235
13.8 Tiheyspohjaiset menetelmät . . . . . . . . . . . . . . . . . . . . . . 238
13.9 Muita lähestymistapoja . . . . . . . . . . . . . . . . . . . . . . . . 238
13.9.1 Epäjatkuva Galerkinin keino (discontinuos Galerkin method) 238
13.9.2 Hila-Boltzmann -menetelmät . . . . . . . . . . . . . . . . . 238
13.9.3 Sileä partikkelihydrodynamiikka (smoothed particle hydrodynamics)238
14 Virtausratkaisijat
240
14.1 Historiaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
14.2 Simulointiohjelman rakenne . . . . . . . . . . . . . . . . . . . . . 242
14.3 Katsaus ohjelmiin . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
14.3.1 PHOENICS . . . . . . . . . . . . . . . . . . . . . . . . . . 243
14.3.2 CFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
14.3.3 FLUENT . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
14.4 Lopuksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Hakemisto
246
5
1 Johdanto
1.1 Taustaa
Laskennallisen virtausmekaniikan perusteissa on perehdytty kontrollitilavuusmenetelmän perusteisiin. Kurssilla on ollut esillä konvektio-diffuusioyhtälön
∂T
+ ∇ · V~ T = ∇ · α∇T + qT
(1.1)
∂t
ratkaisu eri muodoissaan. Sopivilla nopeuden V~ = u~i + v~j + w~k ja diffuusiokertoimen α sekä dimensioiden valinnalla saatiin esille erilaisia numeeriseen laskentaan
liittyviä ongelmia. Lukuunottamatta yhtälöiden luokittelua varsinaiseen virtausyhtälöiden ratkaisuun ei paneuduttu ja paineen käsite ei ollut esillä.
Tällä jatkokurssilla on tarkoitus tuoda esille varsinaisten virtausyhtälöiden ratkaisu painekorjausmenetelmällä. Virtausyhtälöiden ratkaisutavat voidaan jakaa paineja tiheyspohjaisiin menetelmiin, painekorjaus kuuluu ’painepohjaisiin’. Kurssilla
käsitellään myös hieman tiheyspohjaisia ratkaisuja luvuissa 2.7 ja 13.7.
Perusteissa oli esillä myös seuraava tärkeä periaate
{numeriikka}∆T = {f ysiikka}
(1.2)
jossa ’f ysiikka’-osa sisältää yhtälöiden diskretoinnin ja ’numeriikka’-osa diskreettien yhtälöiden ratkaisun (fysiikalla ei tarkoiteta tässä yhteydessä ainoastaan
turbulenssin tai muiden ilmiöiden mallintamista, vaan etupäässä yhtälöiden diskretointia). Peruskurssin avulla malliyhtälöön (1.1) liittyvä ’fysiikka’ on kohtalaisen
hyvin hallittavissa. Numeriikasta oli esillä likimääräinen ositus, jolla voidaan tehokkaasti ratkaista monidimensioisia diskretoituja yhtälöitä, mutta joka ei ole ainoa
vaihtoehto. Ainoa olennainen puuttuva seikka on juuri paineen lisääminen tuntemattomien joukkoon ja paineen ratkaiseminen. Paine voidaan ottaa huomioon numeriikkapuolella usealla tavalla, joista seuraavassa tullaan siis tarkemmin käymään
läpi painekorjausmenetelmä, mutta myös muita vaihtoehtoja käsitellään lyhyesti.
1.1. TAUSTAA
6
Tällä kurssilla tullaan käyttämään etupäässä samantyyppisiä merkintöjä kuin
peruskurssilla. Tästä seuraa kuitenkin eräitä ongelmia, kuten myöhemmin tullaan
havaitsemaan. Pääsyynä on se, etteivät virtausmekaniikkaan liittyvät merkinnät ja
käsitteistöt ole täysin standardeja. Nyt esillä tulevat olemaan virtausyhtälöt kokonaisuudessaan, jolloin suure T kuvaa erityisesti lämpötilaa, ei esimerkiksi konsentraatiota. Myös malliyhtälö (1.1) on approksimatiivinen ja edellyttää, probleemasta riippuen, erinäisiä seikkoja. Lämmönjohtavuusyhtälön tapauksessa tiheyden ρ ja
ominaislämpökapasiteetin cp tulisi olla vakioita, jotta yhtälö (1.1) pätisi. Parempi
muoto yleiselle skalaarisuureen φ säilymisyhtälölle on
∂ρφ
+ ∇ · ρV~ φ = ∇ · α∇φ + qφ
∂t
(1.3)
Yhtälö on säilymismuodossa, mikä on numeerisessa ratkaisussa edellytys kyseisen
suureen φ globaalille säilymiselle. Mikäli yhtälössä purettaisiin derivaattoja auki,
päädyttäisiin primitiivimuotoon. Differentiaaliyhtälö (1.3) voidaan integroida mielivaltaisen kokoisen tasealueen yli, jolloin saadaan integraalimuotoinen yhtälö
∂
∂t
Z
V
ρφdV +
Z
S
ρ~n · V~ φdS =
Z
S
α∇φ · ~ndS +
Z
V
qφ dV
(1.4)
~ = ~nS on tilavuutta rajaava pinta ja ~n = nx~i+ ny~j + nz~k on pinnan normaamissä S
li. Tähän yhtälöön perustuu kontrollitilavuusmenetelmä. Kuten peruskurssilla todettiin, voidaan integraali lausua mielivaltaisen muotoisen tasealueen yli, jolloin menetelmä sallii monimutkaisten kappaleiden ohi tapahtuvan virtauksen kuvaamisen. Tasetilavuudet voivat myös olla muodoltaan esimerkiksi kolmioita (2D) tai tetraedrejä
ja prismoja (3D). Viimeksi mainitut ovat yleistymässä virtausyhtälöiden ratkaisussa. Edellä mainitusta voidaan myös ajatella kontrollitilavuusdiskretoinnin muodostavan eräässä mielessä enemmän eräänlaisen strategian kuin varsinaisen ’menetelmän’. Erimuotoisilla tasetilavuuksilla eri diskretoinneilla päädytään hyvinkin erilaisiin ratkaisualgoritmeihin. Yhteinen piirre kaikille on globaali säilymisperiaate
Vtot ∆φ = ∆t(Fsis − Fulos )
(1.5)
missä F on suureen φ virta alueen pinnan läpi. Suure muuttuu siis aikayksikössä
tasealueessa Vtot sen pinnan läpi siirtyvän määrän. Tasealue voi olla yksi laskentakoppi, koko laskenta-alue tai osa siitä. Virtausyhtälöt ovat epälineaarisia, joten tarvitaan yhtälön (1.2) mukaiseen linearisointiin perustuva iteraatio ennen kuin yhtälö
1.2. VIRTAUSYHTÄLÖT
7
(1.4) ja sen kautta tase (1.5) toteutuvat. Periaate on fysikaalisesti mielekäs ja käytännössä on havaittu juuri säilymisominaisuus useissa tapauksissa välttämättömäksi, jotta mielekäs numeerinen ratkaisu ylipäätänsä saavutettaisiin. Tälläkin kurssilla
nojaudutaan kontrollitilavuusperiaatteeseen vaikka geometria olisikin yksinkertainen. Huomautettakoon vielä tässäkin yhteydessä, että on myös olemassa toimivia
numeerisia menetelmiä, jotka eivät ole säilymismuotoisia.
1.2 Virtausyhtälöt
Virtausmekaniikan kirjoissa esitetään virtausta kuvaavien yhtälöiden, jotka kuvaavat massan, liikemäärän ja energian säilymistä, johtotapoja. Yhtälöiden johtoon ei
tarkasti puututa tässä yhteydessä. Todetaan vain, että syvälliseltä kannalta katsottuna johto on yllättävän hankala ja usein, erityisesti liikemääräyhtälön johtamisessa
on joskus jopa suoranaisia virheitä tai oikaisuja, joiden kautta kuitenkin päädytään
oikeaan lopputulokseen. Yhtälöt voidaan johtaa usealla tavalla. Kontrollitilavuus
voi olla kiinteä tai nestepartikkelien mukana liikkuva (kts. kuva 1.1). Se voi olla
myös äärellinen, jolloin päädytään integraalimuotoon tai infinitesimaalisen pieni,
jolloin saadaan tuloksena differentiaaliyhtälö. Kaikilla eri tavoilla päädytään kuitenkin samaan lopputulokseen.
Massan säilymisyhtälö on varsin helppo johtaa yleisestä säilymisperiaatteesta
tilavuusalkiolle dV
Z
∂ Z
ρdV + ρ~n · V~ dS = 0
∂t V
S
(1.6)
Soveltamalla Gaussin lausetta toiseen suuntaan kuin yhtälölle (1.3) tehtiin, saadaan
massan säilymiselle myös differentiaaliyhtälö
∂ρ
+ ∇ · ρV~ = 0
∂t
(1.7)
On syytä jälleen todeta, ettei differentiaalimuotoa diskretointiprosessissa kontrollitilavuusperiaatteella tarvita, vaan diskretointi pohjautuu yhtälöön (1.6). Massan säilymisyhtälö voidaan myös johtaa differentiaaliselle alkiolle, jolloin päädytään ensin
yhtälöön (1.7).
Liikemääräyhtälön johto on varsin hankala. Selkeä esitystapa kaikkien virtausyhtälöiden johtamisesta löytyy John D. Andersonin kirjasta Computational Fluid
1.2. VIRTAUSYHTÄLÖT
8
Kontrollipinta S
S
Kontrollitilavuus V
V
(a)
dV
T i l a v u u sV d
( b)
Kuva 1.1: Virtauksen mallinnus. (a) äärellinen kontrollitilavuus, (b) infinitesimaalisen pieni kontrollitilavuus. Vasemmalla tasetilavuudet ovat kiinteitä, oikealla virtauksen mukana
liikkuvia.
Dynamics. Kyseisessä kirjassa ei kuitenkaan puututa kitkatermin johtamiseen, joka löytyy puolestaan esimerkiksi Whiten Viscous Fluid Flow-kirjasta. Liikemäärän
säilymisestä päädytään seuraavaan yhtälöön:
∂
∂t
Z
V
ρV~ dV +
Z
S
ρV~ V~ · ~ndS =
X
f~
(1.8)
missä oikealla puolella ovat tilavuusalkioon kohdistuvat voimat. Nämä voivat olla
pintavoimia ja tilavuusvoimia. Edellisiä kuvaa jännitystensori
2 ∂uk
)δij + 2µDij
Tij = −(p + µ
3 ∂xk
(1.9)
missä p on paine, µ dynaaminen viskositeetti, δij on Kroneckerin deltasymboli ja
venymänopeustensori on
1 ∂ui ∂uj
+
)
(1.10)
Dij = (
2 ∂xj
∂xi
Yleensä venymänopeustensoria merkitään kirjallisuudessa ǫij :llä tai Sij :llä ja vastaavasti jännitystensoria τij :llä tai σij :llä, tässä on noudatettu Ferziger-Pericin tapaa.
Venymänopeustensori ja pyörteisyystensori
1 ∂ui
∂uj
Ωij = (
−
)
2 ∂xj
∂xi
(1.11)
ovat usein käytössä olevia käsitteitä esimerkiksi turbulenssimallien yhteydessä.
1.2. VIRTAUSYHTÄLÖT
9
Tilavuusvoimia voivat olla esimerkiksi gravitaatio- tai sähkömagneettiset voimat. Joskus myös koordinaatistomuunnoksesta aiheutuu voiman kaltaisia termejä
kuten keskipakovoima ja Coriolisvoima. Merkitsemällä tilavuusvoimaa ~b:llä saadaan liikemääräyhtälöksi
∂
∂t
Z
V
ρV~ dV +
Z
S
ρV~ V~ · ~ndS =
Z
S
T · ~ndS +
Z
V
ρ~bdV
(1.12)
mikä voidaan Gaussin lauseen avulla muuttaa differentiaaliyhtälöksi
∂ρV~
+ ∇ · ρV~ V~ = ∇ · T + ρ~b
∂t
(1.13)
Yhtälö on saanut nimensä kehittäjiensä Navierin (1785-1836) ja Stokesin (18191903) mukaan. Se on vektorimuotoinen, joten oikeanpuolen divergenssioperaattorin ja tensorin T tulosta tulee vektori. Yhdelle karteesiselle nopeuskomponentille
ui saadaan yhtälöstä (1.12)
∂
∂t
Z
V
ρui dV +
Z
S
ρui V~ · ~ndS =
Z
S
~ti · ~ndS +
Z
V
ρbi dV
(1.14)
missä
~ti = µ( ∂ui + ∂uj )i~j − (p + 2 µ ∂uk )~ii
∂xj
∂xi
3 ∂xk
(1.15)
ja ~ii on karteesinen yksikkövektori (= ~i, ~j, ~k kun alaindeksi i = 1, 2, 3). Yleensä
paine erotetaan viskooseista jännityksistä. Esimerkiksi x-suuntaiselle liikemäärälle
saadaan yhtälö
Z
Z
∂ Z
~
ρudV + ρuV · ~ndS + pnx dS =
∂t V
S
S
Z
Z
∂u
∂v
∂u
∂w 2
∂u
~
+ ny
+ ny
+ nz
+ nz
− nx ∇ · V )dS + ρbx dV
µ(2nx
∂x
∂y
∂x
∂z
∂x
3
V
S
(1.16)
Kuten havaitaan on kitkatermi varsin pitkä ja sisältää nopeuksien derivaattoja tasealueen reunoilla. Näiden numeeriseen määritykseen palataan jatkossa. Yhtälö on
lausuttu karteesisten nopeuskomponenttien avulla. Numeerisessa laskennassa ei ole
tarvetta muunlaisten nopeuskomponenttien käyttöön eikä geometrisiin koordinaatistomuunnoksiin (usein kannattaa kuitenkin tarkastella asioita liikkuvassa karteesisessa koordinaatistossa).
1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA
10
Energiayhtälön johtaminen tarkasti on yhtä hankalaa kuin liikemääräyhtälönkin.
Vaikeutena on lisäksi se, että energiayhtälön termit saattavat olla hyvinkin eri suuruisia eri tilanteissa ja usein kannattaa laskentatarkkuuden parantamiseksi pudottaa
turhia pieniä termejä pois. Integraalimuotoinen yhtälö on
Z
Z
Z
Z
∂ Z
~
~
ρEdV + ρE V ·~ndS = k∇T ·~ndS + T · V ·~ndS + (ρ~b · V~ + q ′′′ )dV
∂t V
S
S
S
V
(1.17)
Tässä E = e + V 2 /2 on kokonaisenergia, e ominaissisäenergia, k lämmönjohtavuus ja q ′′′ tilavuutta kohden kehittyvä lämpö. Yhtälön oikean puolen termit kuvaavat lämmönjohtumista, pintavoimien tekemää työtä sekä tilavuusvoimien tekemää
työtä ja lämmönkehitystä. Kokoonpuristumattomalla virtauksella kineettinen energia ρV 2 /2 on yleensä pieni ja saatetaan jättää pois taseesta. Toisaalta aidosti kokoonpuristumattomassa tapauksessa (joka on tietysti idealisointi), sisäenergia ei ole
määritelty ja vain kineettinen energia on jäljellä. Tällöin energiayhtälö redusoituu
kineettisen energian yhtälöksi, joka ei ole itsenäinen yhtälö, vaan on johdettavissa
liikemääräyhtälön avulla. Vastaava muista yhtälöistä riippuva yhtälö on johdettavissa kulmaliikemäärälle, tosin vain integraalimuodossa. Yleensä paine erotetaan
tässäkin muista pintavoimista ja yhdistetään energian konvektiovuohon
Z
Z
Z
Z
Z
∂
~ + q ′′′ )dV
~
~
ρEdV + ρH V ·~ndS = k∇T ·~ndS + τ · V ·~ndS + (ρ~b · V
∂t V
V
S
S
S
(1.18)
missä H = E + p/ρ on kokonaisentalpia. Tässä on Ferziger-Pericistä poiketen merkitty viskooseja jännityksiä kuvaavaa tensoria τ :lla, mikä on ehkä kaikkein yleisin
tapa. Nyt siis Tij = τij − pδij . Usein varsinkin painekorjausmenetelmän yhteydessä
myös aikaderivaatta kirjoitetaan kokonaisentalpian tai entalpian avulla, jolloin yhtä-
lön oikealle puolelle lisätään paineen derivaatta ajan suhteen. Energiayhtälö sisältää
myös uuden muuttujan, lämpötilan, joka tulee iteroiduksi tilayhtälön kautta. Edellyttäen, että kineettinen energia on pieni ja ominaislämpökapasiteetti vakio, saadaan
lämpötilalle suoraan kirjoitetuksi konvektio-diffuusioyhtälö, mikä tietysti helpottaa
laskenta-algoritmin laadintaa.
1.3 Virtausyhtälöiden yksinkertaistettuja muotoja
Virtausyhtälöitä voidaan useissa tapauksissa yksinkertaistaa, jolloin niiden matemaattinen luonne muuttuu. Täydelliset yhtälöt muodostavat vaillinaisesti paraboli-
1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA
11
sen ryhmän. Jatkuvuusyhtälö on hyperbolinen, liikemäärä- ja energiayhtälöt parabolista tyyppiä. Tasapainotilan virtauksen tyyppi riippuu nopeusalueesta. Voidaan
toisaalta todeta, että tasapainotilan virtaus esiintyy periaatteessa vain laminaarissa
tilanteessa ja käytännön virtaukset ovat enemmän tai vähemmän turbulentteja s.o.
ajasta riippuvia. Virtausyhtälöiden eri termien merkitsevyydestä saa paremman kuvan kirjoittamalla yhtälöt dimensiottomaan muotoon (kts. Ferziger-Peric).
Tässä yhteydessä tärkein approksimaatio on ρ = vakio. Tällöin jatkuvuusyhtälöstä seuraa
∇ · V~ = 0
(1.19)
Tämä yhteys on muista yhtälöistä poikkeava. Aikaderivaattaa ei esiinny ollenkaan
ja nopeus ei ole samassa asemassa kuin muiden yhtälöiden vuo. Yhteys (1.19) onkin sanan varsinaisessa merkityksessä ’jatkuvuusyhtälö’. Tähän muotoon perustuvassa numeerisessa ratkaisussa yhtälöllä on muista yhtälöistä poikkeava merkitys.
Se on enemmän side-ehto (constraint) kuin varsinainen yhtälö. Muita yhtälöitä siis
ratkaistaan siten, että ehto (1.19) on voimassa.
Liikemääräyhtälön jännitystermistä (1.15) putoaa termi ∂uj /∂xj = ∇ · V~ pois.
Yhtälöä voidaan vielä yksinkertaistaa olettamalla virtaus isotermiseksi, jolloin vis-
kositeetti on likimain vakio (viskositeetti riippuu etupäässä lämpötilasta). Tällöin
saadaan yhtälön (1.16) oikean puolen integraalista
Z
∂u
∂v
∂u
∂w
∂u
+ ny
+ ny
+ nz
+ nz
)dS
∂x
∂y
∂x
∂z
∂x
S
Z
Z
∂u
∂u
∂u
∂v
∂w
∂u
µ(nx
+ ny
+ nz )dS + µ(nx
+ ny
+ nz
)dS
∂x
∂y
∂z
∂x
∂xZ
∂x
S
S
Z
∂uj ~
ij · ~ndS
µ ∇u · ~ndS + µ
Z S
Z S ∂x
∂uj ~
µ ∇u · ~ndS + µ ∇ ·
ij dV
∂x
SZ
VZ
∂ ∂uj
µ ∇u · ~ndS + µ
dV
S
V ∂xj ∂x
Z
Z
∂ ∂uj
dV
µ ∇u · ~ndS + µ
S
V ∂x ∂xj
µ(2nx
Z
|
µ ∇u · ~ndS = µ
S
Z
V
{z
=0
}
∇2 udV
=
=
=
=
=
=
(1.20)
missä oletusten µ = vakio ja ∇· V~ = ∂uj /∂xj = 0 lisäksi käytettiin Gaussin lauset-
ta ja vaihdettiin derivoimisjärjestys. Sijoittamalla tämä yhtälöön (1.16) ja jakamalla
1.3. VIRTAUSYHTÄLÖIDEN YKSINKERTAISTETTUJA MUOTOJA
12
vakiotiheydellä saadaan x-suuntaisen liikemäärän yhtälöksi
Z
∂ Z
1Z
~
udV + uV · ~ndS +
pnx dS =
∂t
ρ S Z
V
S
Z
∂u
∂u
∂u
+ ny
+ nz )dS + bx dV
ν (nx
∂x
∂y
∂z
V
S
(1.21)
missä ν = µ/ρ on kinemaattinen viskositeetti. Soveltamalla jälleen Gaussin lausetta yhtälössä (1.21) ja vastaavasti muille liikemääräyhtälön komponenteille saadaan
vektorimuotoinen differentiaaliyhtälö
D V~
1
+ ∇p = ~b + ν∇2 V
Dt
ρ
(1.22)
Tämä on liikemääräyhtälö kirjoitettuna yksinkertaisimmassa muodossaan. Yllä merkintä D/Dt on materiaali- eli substantiaaliderivaatta, joka määritellään
Dφ
∂φ ~
=
+ V · ∇φ
Dt
∂t
(1.23)
Materiaaliderivaatta on muodollisesti sama kuin suureen φ(xi , t) kokonaisderivaatta ajan suhteen. Todetaan jälleen kerran, että yhtälö (1.22) on primitiivimuodossa
eikä siihen perustuva diskretointi ilman erikoistoimenpiteitä säilyttäisi liikemäärää.
Tämän vuoksi numeerinen ratkaisu jatkossa perustuukin yhtälöön (1.21) tai sen hieman monimutkaisempaan versioon, jossa oletetaan, että ρ 6= vakio. Kitkatermiä voi-
daan näet joskus approksimoida yllä olevalla tavalla vaikka neste ei olisikaan täysin
kokoonpuristumatonta ja isotermistä. Tämä johtuu siitä, että termit joihin sisältyy
∇ · V~ , ja jotka pudotettiin pois yhtälöstä (1.21), ovat kokemuksen mukaan pieniä
verrattuina muihin termeihin silloinkin, kun ∇ · V~ 6= 0. Erot tulevat merkittävämmiksi, kun virtaukseen liittyvä Machin luku Ma = |V |/c, missä c on äänen nopeus,
kasvaa. Tällöin virtaus muuttuu kokoonpuristuvaksi ja paine, nopeus ja tiheys riippuvat toisistaan monimutkaisemmalla tavalla kuin alhaisella nopeudella. Virtauksen
fysikaalinen luonne ei siis muutu, vaikka tiheys lämpötilariippuvuuden vuoksi olisikin muuttuva. Selkeä muutos tapahtuu vasta, kun Ma kasvaa tienoille 0,1...0,3.
Tämä raja on epämääräinen ja riippuu tapauksesta. Ns. klassisena rajana virtausmekaniikan kirjoissa pidetään arvoa Ma ≈ 0,3, mutta puristuvuusefektit saattavat
nousta merkittäviksi jo tätä pienemmillä Machin luvun arvoilla. Kuitenkin, kun ollaan tietyn rajan alapuolella, edellä esitetty virtausyhtälöiden approksimaatio pätee
hyvin. Ilmalla meren pinnan tasolla c ≈ 340 m/s ja vedellä c ≈1,3 km/s, joten
1.4. YHTÄLÖIDEN RATKAISU
13
yhtälöiden (1.19) ja (1.22) tarkkuus on riittävä moniin käytännön virtaustehtäviin.
Poikkeuksen muodostavat aerodynamiikka ja eräät ajasta riippuvat tilanteet.
Joskus yhtälöitä voidaan yksinkertaistaa myös pudottamalla koko kitkatermi
pois. Usein näitä kitkattoman virtauksen ns. Eulerin yhtälöitä käytetään juuri aerodynamiikassa, mutta alhaisella nopeusalueella voidaan vielä tehdä lisäoletus ρ =
vakio. Kitkattoman virtauksen approksimaatio on sitä parempi, mitä suurempi on tilanteeseen liittyvä globaali Reynoldsin luku. Tämä nähdään hyvin dimensiottomista
yhtälöistä. Toinen ääritapaus on Re << 1, jolloin liikemääräyhtälöstä voidaan konvektiotermi pudottaa muihin termeihin verrattuna pienenä pois. Jos lisäksi tiheys
ja viskositeetti ovat vakioita, saadaan ns. Stokesin yhtälöt, joiden ratkaiseminen
on suhteellisen helppoa. Tämä aiheutuu siitä, että numeeriselta kannalta suurin ongelma liittyy konvektiotermin aiheuttamaan liikemääräyhtälön epälineaarisuuteen.
Muita usein käytettyjä virtausyhtälöiden approksimaatioita ovat nopeuspotentiaalin
käyttö ja rajakerrosyhtälöt.
1.4 Yhtälöiden ratkaisu
1.4.1 Tiheyspohjainen ratkaisu
Virtausyhtälöiden ratkaiseminen on erittäin hankala tehtävä. Edellä on esitetty yhteensä viisi yhtälöä. Massansäilymisyhtälö, liikemääräyhtälö, jolla on kolme komponenttia ja energiayhtälö. Yhtälöissä on kuitenkin yhdeksän tuntematonta suuretta
ρ, p, e, T, u, v, w, µ, k. Näistä viskositeetti ja lämmönjohtavuus ovat virtaavan aineen materiaaliominaisuuksia. Tarvitaan siis vielä kaksi yhtälöä, jotta yhtälöryhmä
ratkeaisi. Lisäehdot saadaan termodynamiikan avulla, josta tiedetään kahden tilasuureen määräävän minkä tahansa kolmannen suureen arvon. Yhteyttä nimitetään
tilayhtälöksi ja suoraviivaisin - vaikkei aina paras - valinta on
p = p(ρ, e)
T = T (ρ, e)
(1.24)
Jos virtauksessa tapahtuu kemiallisia reaktioita, tilayhtälöstä tulee monimutkaisempi.
Palauttamalla mieleen edellisessä kappaleessa esitetyt yhtälöt, on mahdollista
konstruoida niiden suoraviivainen ratkaisu: Integroidaan ajan suhteen aika-askel
1.4. YHTÄLÖIDEN RATKAISU
14
kerrallaan kaikkia viittä yhtälöä, jolloin saadaan ratkaistuksi ρ, ρV~ ja ρE. Jakamalla liikemäärä tiheydellä saadaan nopeuskomponentit ja pienellä manipuloinnilla
ominaissisäenergia e. Tämän jälkeen tilayhtälön avulla voidaan paine ja lämpötila ratkaista ja edetä seuraavalle ajanhetkelle. Käyttämällä implisiittistä menetelmää
ja peruskurssilla opittuja tapoja, ratkaisua saadaan huomattavasti nopeutetuksi eksplisiittisestä aikaintegroinnista. Tasapainotila, mikäli sellainen löytyy, saavutetaan
integroimalla yhtälöitä ajan suhteen. Ratkaisutapaa nimitetään tiheyspohjaiseksi.
Edellä kuvattu suoraviivainen ratkaisu toimii, jos virtaus on kokoonpuristuvaa,
ts. Machin luku on ainakin suurempi kuin 0,1. Kokemus on osoittanut, että kun nopeus pienenee, menetelmän konvergenssi alkaa huonontua ja hitaille virtauksille ei
konvergoitunutta tulosta yleensä saada ollenkaan. Selkeää syytä konvergenssin huononemiseen ei ole esitetty. Kun Ma → 0, tiheyden muutokset myös pienenevät ja
paineen määritys tilayhtälön kautta tulee epätarkaksi. Periaatteessa tämä pitäisi ol-
la korjattavissa käyttämällä laskennassa kaksinkertaista tarkkuutta, mutta tilanne ei
sillä korjaannu. Viime aikoina on esitetty paljonkin menetelmiä alhaisen Machin
luvun virtaukselle. Ainakin yksidimensioisessa tapauksessa on osoitettu, että muotoilemalla reunaehdot sopivasti, aikaintegrointimenettely toimii hyvinkin alhaiselle Machin luvulle. Konvergenssin heikkenemisellä on selvästi jotain tekemistä karakterististen nopeuksien, joihin palataan myöhemmin, sekä sisään- ja ulosvirtausreunojen keskinäisellä vuorovaikutuksella. Tähän vuorovaikutukseen karakteristiset
nopeudet vaikuttavat.
Nyrkkisääntönä voidaan pitää, että kun suurimman ja pienimmän karakteristisen
nopeuden suhde on yli kymmenen, aikaintegrointimenetelmän konvergenssi huononee. Varma tapa parantaa konvergenssia on karakterististen nopeuksien manipuloiminen. Tämä voidaan tehdä pohjustamalla (preconditioning) virtausyhtälöitä. Nämä
voidaan kirjoittaa vektorimuotoon
∂U ∂F ∂G ∂H
+
+
+
=0
∂t
∂x
∂y
∂z
(1.25)
missä U = (ρ, ρu, ρv, ρw, ρE)T on ratkaistavien konservatiivisten suureiden muodostama vektori ja F, G, H ovat vuovektoreita x, y, z-suunnissa. Erityisesti kokoonpuristumattoman virtauksen tapauksessa käytetään ratkaisualgoritmissa primitiivisuureita, jotka voidaan valita usealla tavalla. Yleisimmin käytetty valinta on ehkä
u = (p, u, v, w, T ). Ominaisarvojen manipulointiin riittää lisätä yhtälöön näennäi-
1.4. YHTÄLÖIDEN RATKAISU
15
saikaderivaattatermi
Ap
∂u ∂U(u) ∂F(u) ∂G(u) ∂H(u)
+
+
+
+
=0
∂τ
∂t
∂x
∂y
∂z
(1.26)
missä τ on näennäisaika ja Ap on sopivasti valittu Jacobin matriisi. Tässä tavassa varsinainen aikaderivaatta, mikäli sitä edes tarvitaan, käsitellään lähdeterminä ja
integrointi tapahtuu suuren τ suhteen. Uudella Jacobin matriisilla manipuloidaan
karakteristisia nopeuksia ja saavutetaan hyvä konvergenssi. Menetelmä on kuvattu
hyvin Tannehill-Anderson-Pletcherin kirjassa. Yllä kuvattu konvergenssin parannuskeino on melko uusi eikä se ole kovin laajalle levinnyt. Menetelmää nimitetään
tiheyspohjaiseksi, vaikka siinä tiheys voikin olla vakio eikä jatkuvuusyhtälö olen
ilman lisätermiä integroitavissa ajan suhteen.
1.4.2 Painepohjainen ratkaisu
Numeeristen ratkaisujen kehityshistorian aamuhämärissä alhaisen Machin luvun
virtauksen simulointi ryhdyttiin perustamaan täydellisten yhtälöiden sijaan yhtälöihin (1.19) ja (1.22), siis oletukseen ρ = vakio. Paitsi, että yhtälöt näyttävät yksinkertaisemmilta, niihin liittyy erityisesti eksplisiittisessä ratkaisumaailmassa selkeä
etu. Karakteristisia nopeuksia on vain yksi λ = u (yksidimensioisessa tilanteessa).
Täydellisillä virtausyhtälöillä näitä nopeuksia on kolme λ1 = u ja λ2,3 = u±c. Kun
virtausnopeus pienenee äänen nopeuteen verrattuna, nähdään edellä mainittu ominaisarvojen suhteiden epäedullinen kehitys. Lisäksi eksplisiittisellä aikaintegroinnilla Courantin kriteeri, joka määrittää aika-askeleen pituuden on
∆t|λmax |
≤1
∆x
(1.27)
Peruskurssin yhteydessä konvektioyhtälöllä ominaisarvo λ oli aina nopeus. Nyt oletuksella ρ = vakio päästään tähän samaan ominaisarvoon, joka esimerkiksi vedellä
saattaa olla kaksi dekadia pienempi kuin täydellisiin yhtälöihin perustuva ominaisarvo, joka sisältää äänen nopeuden. Tällä seikalla oli huomattava merkitys aikana,
jolloin ratkaisut olivat käytännössä aina eksplisiittisiä. Ratkaisumenetelmiä ryhdyttiin kehittämään yhtälöille (1.19) ja (1.22) ja samalla eri nopeusalueiden ratkaisumaailmat erkanivat toisistaan niin paljon, että niiden asiantuntijatkaan eivät tunnu
täysin puhuvan samaa kieltä. Useat merkintätavat ja nimitykset ovat erilaistuneet.
1.4. YHTÄLÖIDEN RATKAISU
16
Esimerkkinä voidaan mainita malliyhtälö (1.3), jossa Ferziger-Peric systemaattisesti käyttää diffuusiokertoimena Γ:aa. Peruskurssilla oli puhetta laskentatilavuuteen referoidusta Reynoldsin luvusta, joka malliyhtälön tapauksessa itse asiassa
onkin Peclet:n luku. Virtausratkaisussa tärkein yhtälö on liikemääräyhtälö, jolloin
diffuusiota kuvaava dimensioton suure on nimetty Reynoldsin mukaan. Tällä kurssilla käytetään CFD-kirjoista (Fletcher, Hirsch, Tannehill-Anderson-Pletcher) peräisin olevia merkintöjä ja annetaan niille rinnakkaistapa Ferziger-Peric:in mukaan.
Eräissä kohden käytetään painekorjausmenetelmän yhteydessä täysin vakiintuneita
merkintöjä, kuten ns. ’ilmansuuntia’.
Ongelmaksi alhaisella Machin luvulla tulee paineen määritys. Liikemääräyhtälöistä voitaisiin periaatteessa ratkaista nopeudet, jos paine tunnettaisiin. Tilayhtälöä
ei voida käyttää, koska sellaista ei aina edes ole. Ainoaksi mahdollisuudeksi jää siis
jatkuvuusyhtälön ∇ · V~ käyttö, mikä ei ole täysin triviaalia. Vuosien varrella mene-
telmiä on kuitenkin esitetty useita ja niiden perusteet tulevat tällä kurssilla esille.
Ilmeisesti ensimmäinen todella toimiva tapa oli eliminoida paine pois yhtälöistä
(1.19) ja (1.21). Tämä käy päinsä uusien muuttujien virtafunktion ψ ja pyörteisyyden
~ = ∇ × V~
Ω
(1.28)
avulla (usein pyörteisyyttä merkitään myös pienellä omegalla). Pyörteisyysvektori
määrittelee myös pyörteisyystensorin (1.11) komponentit. Kaksidimensioisessa tapauksessa on helppo jatkuvuus- ja liikemääräyhtälöiden avulla johtaa ajasta ja paikasta riippuva yhtälö pyörteisyyden itseisarvolle ja toinen ns. Poisson-yhtälö virtafunktiolle. Virtafunktion avulla saadaan nopeuskomponentit. Paine ei ratkaisussa esiinny ollenkaan. Jos sitä tarvitaan, voidaan sille laatia erillinen, suhteellisen
hankalasti ratkaistava yhtälö. Virtafunktio-pyörteisyysmenetelmä oli aikaisemmin
niin yleinen, että 70-luvun alussa ilmestyneessä Roachen klassisessa Computational Fluid Dynamics-kirjassa pyörteisyysyhtälöä käytetään malliyhtälönä, jolle erilaisia diskretointeja esitetään. Menetelmää käytetään ja kehitetään edelleen, vaikka
se on hankala kolmidimensioisessa tapauksessa.
Viime vuosisadan lopulla yleistyi myös ns. näennäispuristuvuuskeinon (artificial compressibility method) käyttö. Siinä jatkuvuusyhtälöön lisätään aikaderi-
1.4. YHTÄLÖIDEN RATKAISU
17
vaatta
1 ∂p
+ ∇ · V~ = 0
β ∂τ
(1.29)
Tällä tavoin jatkuvuusyhtälö muuttuu ’oikeaksi’ yhtälöksi, josta paine voidaan integroida yhdessä liikemääräyhtälöiden nopeuksien kanssa. Temppu on sallittua tasapainotilan virtaukselle, koska tasapainotilassa aikaderivaattatermi häviää ja ratkaisuksi tulee kokoonpuristumattoman virtauksen yhtälöt. Ajasta riippuva tilanne
voidaan ratkaista lisäämällä oikea aikaderivaatta lähdeterminä ja pseudointegroimalla aika-askeleen sisällä. Menetelmä on selvästikin läheistä sukua matriisin pohjustamiskeinolle (1.26). Itse asiassa ero tulee vain siitä, että yhtälössä (1.26) oletetaan käytettäväksi täydellisiä virtausyhtälöitä. Soveltamalla näennäispuristuvuusmenetelmää tapaukselle ρ 6= vakio, päädytään varsin samanlaiseen formalismiin
kuin matriisin pohjustamis -menettelyllä, joka on itse asiassa huomattavasti vähemmän käytetty. Näennäispuristuvuuskeinon esitti Chorin jo vuonna 1968, mutta se-
kin yleistyi vasta viime vuosituhannen lopulla. Motivaationa oli saada erityisesti
aerodynaamisiin sovelluksiin kehitettyjä ohjelmia toimimaan myös kokoonpuristumattomassa tapauksessa tai alhaisella Machin luvulla. Näennäispuristuvuuskeino
on tavallaan tiheyspohjainen menetelmä, mutta kuten myöhemmin tulee esille, se
voidaan tulkita myös yksinkertaiseksi painekorjausmenetelmäksi.
Chorinin menetelmä on painekorjausmenetelmistä poikkeava esimerkki varhaisesta primitiivisuureiden käytöstä. Tässä yhteydessä primitiivisuureilla viitataan erityisesti paineeseen ja nopeuksiin, kun aiemmin ns. standardiratkaisu pohjautui virtafunktioon ja pyörteisyyteen. Paineen määräytyminen primitiivisuureiden avulla
säilyi pitkään ongelmana, kunnes hieman Chorinia aiemmin, vuonna 1965, Harlow ja Welch Los Alamosin laboratoriosta esittivät marker and cell -menetelmän
(MAC), jota voidaan pitää kaikkien varsinaisten painepohjaisten menetelmien esikuvana. Menetelmässä otettiin käyttöön ns. limitetty hila ja paine ratkaistiin Poissonyhtälöstä. Painepohjaisissa menetelmissä voidaan ratkaista joko suoraan painetta tai
paineen muutosta, tehdään siis ’paienkorjaus’. Tällä kurssilla keskitytään painekorjausmenetelmän ominaisuuksiin. Muihin ratkaisumenetelmiin palataan vielä luvussa 13.
1.5. MENETELMIEN TARKASTELUA
18
1.5 Menetelmien tarkastelua
Limitetyn hilan myötä eri nopeusalueiden ratkaisumenetelmät lähtivät primitiivisuureillakin eri teilleen. Implisiittisen menetelmän sisällä yleensä käytetään sopivasti valittuja primitiivisuureita, mutta lopullinen ratkaisuvektorin muutos on aina
konservatiivisten suureiden avulla muodossa ∆U. Paine ratkaistaan tämän jälkeen
tilayhtälöstä. Painepohjaisilla menetelmillä ratkaistaan yleensä primitiivisuureita,
joskus liikemäärän osalta myös konservatiivisia. On syytä muistaa, että ratkaistavien suureiden valinnalla ei ole mitään tekemistä säilymisominaisuuden kanssa.
Säilymisominaisuus pohjautuu yhtälön (1.2) oikean puolen diskretointiin. Vasemmalla puolella numeriikka-osassa voidaan käyttää mitä tahansa sopivia muuttujia.
Kuten aiemmin todettiin eri kehityssuunnat ovat aikaansaaneet tiettyjä eroja yhtälöiden esittämisformalismissa ja myös menetelmien kehityshistoriassa. Aerodynamiikassa pyritään laskemaan kappaleeseen kohdistuvia voimia ja niiden osalta
on oleellisen tärkeää, että kappaleen muoto on oikein. Tällöin on aluksi luovuttiin Navier–Stokes-yhtälöiden käytöstä ja sovellettiin kitkattoman virtauksen teoriaa ja siihen liittyviä ns. paneelimenetelmiä. Analyysiin voidaan yhdistää joko erikseen tai kiinteänä osana rajakerrosyhtälöiden ratkaisu, jolloin saadaan myös kappaleeseen vaikuttava kitkavoima. Tämä laskentatapa on edelleen käytössä lentokoneiden suunnittelussa nopeutensa vuoksi. Navier–Stokes-yhtälöiden käyttö oli huomattavan suppeaa eikä niitä aiemmin käytetty suunnittelussa. Vasta ns. supertietokoneiden (Cray-1 vuonna 1976) myötä laskentaresurssit olivat sillä tasolla, että Navier–Stokes-pohjaiseen virtausratkaisuun ryhdyttiin kiinnittämään enemmän
huomiota. Ratkaisumenetelmät kehittyivät implisiittisiksi (Beam ja Warming 1978)
ja niiden tehoa edelleen parannettiin monihila-algoritmin avulla (A. Jameson 1984).
Myöhemmin otettiin käyttöön länsimaissa uusi vuon laskentatapa, josta käytetään nimitystä vuovektorin ositusmenetelmä (flux-vector splitting, Bram van Leer
1982) ja sille läheistä sukua oleva approksimatiivinen Riemann-ratkaisu (myös
flux-difference splitting, P. Roe 1981). Kummatkin menettelyt pohjautuvat venäläisen S. K. Godunovin 1959 esittämään Riemann-ratkaisuun perustuvaan vuon laskentaan.
Uusien menetelmien ja jatkuvasti kehittyvien supertietokoneiden myötä arveltiin virtausratkaisun 80-luvun taitteessa olevan hyvinkin pian suunnittelussa vaa-
1.5. MENETELMIEN TARKASTELUA
19
ditulla tasolla. Käytännön virtauksia ei voida kuitenkaan vielä ratkoa turbulentissa
tapauksessa ajan suhteen tarkasti, vaan käytetään ns. Reynolds-keskiarvotettuja yhtälöitä, joita varten tarvitaan turbulenssin kuvausta varten erillinen turbulenssimalli.
Aerodynaamisissa sovelluksissa ajatuksena oli käyttää aiemmin rajakerrosyhtälöiden yhteydessä käytettyjä yksinkertaisia ns. algebrallisia malleja. Vähitellen selvisi,
ettei virtaus ole ratkaistavissa pelkällä numeron murskauksella, ainakaan nykyisellä
tietokoneiden teholla. Algebralliset mallit eivät toimineetkaan monimutkaisissa tilanteissa ja erityisen heikosti ne toimivat tapauksissa, joissa virtaus irtoaa pinnalta.
CFD:n perusongelma onkin siirtynyt lähinnä turbulenssin kuvaamisen tutkimiseen.
Myöhemmin aerodynamiikassakin on otettu käyttöön monimutkaisempia malleja,
joista tunnetuin on k − ǫ-malli. Lisäksi sinänsä tehokkaita koodeja on modifioitu
aiemmin esitetyillä tavoilla kokoonpuristumattomien virtauksien laskentaan. Unel-
ma turbulenssin kuvauksen selvittämisestä numeron murskauksella on kokemassa
renessanssia tietokoneiden lähes käsittämättömän kapasiteetin kasvun myötä. Suurimpia toiveita asetetaan ns. isojen pyörteiden menetelmään, jossa osa turbulenssin
spektristä kuvataan ajasta riippuvana ja vain osa mallinnetaan. Myös Navier–Stokes
yhtälöiden suoraa ratkaisua ilman keskiarvottamista voidaan käyttää alhaisilla Reynoldsin luvuilla (Re < 105 ).
Kokoonpuristumattoman virtauksen ratkaisuja ryhdyttiin soveltamaan erilaisten
teollisuusprosessien kuvaukseen ja tärkeä osa-alue oli lämmönsiirto. Ratkaisumenetelmien raportoinnissa keskeinen foorumi on ollut Numerical Heat Transfer -lehti.
CFD-termi on tällä alueella yleistynyt vasta 90-luvulla, sen liityttyä aiemmin lähinnä supertietokoneilla tehtyihin aerodynaamisiin simulointeihin. Yleensä teollisuusprosessien simuloinnissa tavoitteena ei ole ollut saada selville rakenteisiin vaikuttavia voimia, vaan virtausjakautuma ja virtauksen linkittyminen erilaisiin prosesseihin lähinnä turbulenssin aika- ja pituusskaalojen kautta. Tämän vuoksi heti aluksi
kiinnitettiin erityistä huomiota turbulenssin mallinnukseen. Ns. kaksi-yhtälömalleja
oli esitetty jo aiemmin (Kolmogorov 1942), mutta virtaussimulointien yhteydessä
ne tulivat esille 60-luvun lopulla (Harlow ja Nakayama 1968). Standardi k −ǫ-malli
on puolestaan esitetty hieman myöhemmin ja se on ollut alku sekä teollisuusprosessien virtaussimuloinneille että kaupallisille virtausratkaisijoille (Jones ja Launder
1972). MAC-menetelmästä kehitettiin tehokkaampi versio (SIMPLE, Patankar ja
Spalding 1972), mutta yhtälöiden diskretointitarkkuudesta tai kappaleiden muo-
1.6. KURSSIN SISÄLLÖSTÄ
20
doista ei välitetty käytännössä juuri mitään. Itse asiassa tarkkuus eräissä laskentakoulukunnissa vain aleni. MAC-menetelmässä käytetään keskeisdifferenssiä, jolla
on toisen kertaluvun tarkkuus. SIMPLE-menetelmän yhteydessä ryhdyttiin soveltamaan ensimmäisen kertaluvun ylävirtadiskretointia, jolla on globaalia Reynoldsin
lukua tuhoisasti alentava vaikutus, kuten peruskurssilla on esitetty. Laskentahilat
olivat suorakulmaisia ja vinot seinät kuvattiin sahalaitoina, jolloin mistään tarkkuudesta seinien lähellä ei kannattanut puhua.
Vasta tultaessa 90-luvulle kokoonpuristumattoman virtauksen yhteydessä käytetyt menetelmät ja myös runsaslukuisesti markkinoilla olevat kaupalliset koodit
alkoivat nopeasti kehittyä. Merkittävä virstanpylväs on ollut limitetystä hilasta luopuminen (Rhie ja Chow 1983). Sekin yleistyi melko hitaasti ja vasta 90-luvulle
tultaessa erilaiset menetelmän modifikaatioehdotukset ovat täyttäneet mm. Numerical Heat Transfer-lehden. Näistä on tehty varsin kattava kirjallisuustutkimus (A.
Miettinen, muistio CFD/TERMO-24-97). Limitetystä hilasta luopuminen on oleellisen tärkeä edistysaskel siirryttäessä käyräviivaiseen laskentahilaan, sovellettaessa monihila-algoritmia jne. Myös tarkemmat diskretointimenetelmät ovat lopulta
yleistyneet, mukaan lukien TVD-menetelmät, joita käsiteltiin peruskurssilla. Viime
aikoina ovat myös uudenlaiset hilatyypit (tetraedrit, prismat) nopeasti vallanneet
alaa. Painepohjaisiin menetelmiin on yhdistetty myös piirteitä, joilla ne saadaan
toimimaan suurella Machin luvulla, vastaavasti todettiin aikaintegrointipohjaisten
algoritmien vuosituhannen lopulla laajentuneen alhaiselle nopeusalueelle. Kehityksen myötä on nähtävissä, että erilaiset virtausyhtälöiden ratkaisutavat ovat hitaasti
konvergoitumassa yhdeksi laajemmaksi kokonaisuudeksi.
1.6 Kurssin sisällöstä
Edellä on usein viitattu Ferziger-Pericin kirjaan Computational Methods for Fluid
Dynamics, jota käytetään kurssilla pohjana. Teos on ensimmäinen laajempi esitys
painekorjausmenetelmästä sitten S. V. Patankarin klassisen kirjan Numerical Heat
Transfer and Fluid Flow. Tuskin mikään yksittäinen kirja on yhtä paljon referoitu
ja vaikuttanut niin suuresti tieteenhaaraansa kuin Patankarin kirja. Pääsyynä lienee teoksen poikkeuksellisen selkeä ja ytimekäs esitystapa, jolla vaikeatkin asiat
on saatu näyttämään helpoilta. Pedagogisessa mielessä Patankarin kirja on edelleen
1.6. KURSSIN SISÄLLÖSTÄ
21
ylittämätön, mutta itse sisällön kannalta se oli jo ilmestyessään osittain vanhentunut ja erityisesti diskretointivirheen tarkastelun kannalta liian suppea. Kirjaa voi ja
kannattaa käyttää edelleen, jos haluaa selkeää kuvausta painekorjausmenetelmän
ideoista ja taustoista, mutta itse menetelmän kuvauksessa se on vanhentunut.
Painekorjauksesta on ilmestynyt joitakin kirjoja, jotka lähinnä on tarkoitettu oppaaksi kaupallisten ohjelmien käyttäjille manuaalien rinnalla. Vasta Ferziger-Pericin
kirja on jossain määrin vakava yritys alan kurssikirjaksi. Valitettavasti se ei nouse
tyyliltään edeltäjänsä tasolle eikä sisällöltään läheskään vastaa monia laajempia
CFD-kirjoja (Hirsch, Fletcher, Tannehill-Anderson-Pletcher). Pelkästään FerzigerPericin varassa alasta ei saa kunnollista kuvaa. Kirjasta puuttuu esimerkiksi TVDmenetelmät kokonaan. Eräissä kohdin kirjoittajien mielipiteet eivät myöskään vastaa CFD-yhteisössä vallitsevaa käsitystä asioista. Esimerkkinä voidaan mainita keskeisdifferenssin käyttö aina oletusarvodiskretointina. Käsitys on siinä mielessä puhdasoppinen, että kuten peruskurssin pohjalta muistetaan, ylävirtapainotteinen menetelmä lisää aina numeerista vaimennusta ratkaisuun. Vaikka ylävirtamenetelmän
kertalukua kuinka kasvatettaisiin, mitä monidimensioisessa tapauksessa ei käytännössä pystytä tekemään toista kertalukua pitemmälle, modifioituun yhtälöön jää parillisia derivaattoja, jotka ovat vaimentavia. Keskeisdifferenssillä vaimennus tulee
vain fysikaalisesta diffuusiosta, vaikka käytännössä yleensä joudutaankin lisäämään
ns. Jameson-tyyppinen 4. kertaluvun vaimennustermi. Riittävän tiheällä diskretoinnilla voidaan kuitenkin väittää keskeisdifferenssin tarkkuuden olevan ylävirtamenetelmiä parempi. Ferziger-Pericin lähtökohtana on, että tämä hilatiheys on myös
käytännössä vaadittava. Valitettavasti käytännön simulointitehtäviltä vaaditaan varmatoimisuutta (’robustisuutta’), missä ylävirtamenetelmät ovat ylivoimaisia. Niiden
tarkkuus kokoonpuristuvan virtauksen yhteydessä sovellettavien Riemann-ratkaisijoiden yhteydessä on myös selkeästi keskeisdifferenssipohjaisia tapoja parempi,
koska tarkkuuden saavuttaminen epäjatkuvuuskohdan lähellä ei tällöin riipu keinotekoisesti lisätystä vaimennuksesta.
Tällä kurssilla oletetaan konvektiotermi diskretoitavaksi MUSCL-kaavalla, mikä ei sinänsä sulje pois valintaa κ = 1, mikä vastaa keskeisdifferenssiä. Mainittakoon, että MUSCL-kaavaakaan ei Ferziger-Pericissä ole, vaikka siihen pohjautuvia
diskretointitapoja esitetäänkin. Kirjan puutteet eivät ole katastrofaalisia, koska varsinaiset diskretointiasiat ovat tulleet esillä peruskurssilla ja ne oletetaan tässä yh-
1.6. KURSSIN SISÄLLÖSTÄ
22
teydessä tunnetuiksi esitiedoiksi. Puutteita poistamaan on kirjoitettu tämä moniste, jonka käsillä olevassa johdanto-osassa tuodaan esille käytetty yhtälöjärjestelmä
ja painekorjausmenetelmän taustaa. Tätä seuraa katsaus Navier–Stokes-yhtälöiden
ominaisuuksiin, jotka ovat tärkeämpiä kokoonpuristuvan virtausratkaisun yhteydessä, mutta toimivat taustana myös painekorjausmenetelmälle. Kolmannessa luvussa käydään läpi kertauksena peruskurssin sisältö. Tarkoituksena on lähinnä verrata aiemmin opittua Ferziger-Pericin esitystyyliin sekä merkintöihin ja nimityksiin.
Viimeksi mainituista saatetaan, kuten aiemmin jo todettiin, käyttää erilaista esitystapaa. Painekorjaus, joka sekin on enemmän eräänlainen strategia, kuin yksittäinen menetelmä, tuodaan esille hieman Ferziger-Pericistä poikkeavasti, mutta mitään suurta ristiriitaa ei ole. Ristiriitoja saattaa enemmän löytyä kirjan ja monille tutuiksi tulleiden kaupallisten ohjelmien ajatusmaailman välillä. Viimeksi mainituista
on tarkoitus tuoda pääkohtia esille kurssin lopuksi.
Ferziger-Pericistä käsitellään suoraan luku 6, joka käsittelee ajan suhteen tarkkoja menetelmiä. Myös luku 9 turbulenssista käsitellään sinällään ja luku 8 monimutkaisista geometrioista ehkä hieman täydennettynä. Luku 10 laskennan tehostamisesta on myös mukana täydennettynä. Kurssin sisältö on likimain seuraava:
1. Johdanto ja käytettävät yhtälöt
2. Virtausyhtälöiden ominaisuuksia
3. Diskretointimenetelmien kertaus (FP sivulle 84)
4. 1D painekorjaus limitetyllä hilalla, putkiverkot
5. Tavanomainen hila
6. Navier–Stokes yhtälöiden ratkaisu
7. Yhtälöryhmien ratkaisu (FP luku 5)
8. Ratkaisun tehostaminen (FP luku 11)
9. Monimutkainen geometria (FP luku 8)
10. Ajasta riippuvat tilanteet (FP luku 6)
11. Turbulenssi (FP luku 9)
1.7. KÄYTETYT YHTÄLÖT
23
12. Virtaussimulointeihin liittyvää käsitteistöä (FP taustamateriaalina)
13. Muut ratkaisumenetelmät
14. Virtaussimuloinneista ja kaupallisista ohjelmista
Totuttuun tapaan tähänkin kurssiin liittyy 12 kappaletta harjoitustehtäviä. Nämä
seuraavat löyhästi luentoja, koska harjoitustehtävissä keskitytään ainoastaan painekorjausalgoritmin rakentamiseen. Tämä on jaettu kahteentoista osatehtävään. Asioiden esittäminen luennolla ei kestä yhtä kauan ja jäljellä oleva aika käytetään muun
virtauslaskentaan liittyvän tiedon esittämiseen. Esimerkiksi turbulenssin mallinnukseen käytetään kaksi tuntia. Tämä ei tietenkään korvaa varsinaista turbulenssikoulutusta, mutta antaa kuitenkin jonkinlaisen kokonaiskuvan siitä, mitä elementtejä tällä
hetkellä numeeriseen virtaussimulointiin kuuluu. Tarve edes jossain määrin linkittää luentoja harjoitustehtävissä esillä olevaan asiaan, on puolestaan aikaansaanut
Ferziger-Pericistä poikkeavan asioiden esilletulojärjestyksen.
1.7 Käytetyt yhtälöt
Matemaattisessa mielessä kurssilla käsitellään tehtävää, jossa ratkaistaan yhtälöt
(1.19) ja (1.22). Ne ovat uudelleenkirjoitettuna:
∇ · V~ = 0
~
1
DV
+ ∇p = ~b + ν∇2 V
Dt
ρ
(1.30)
Numeriikassa emme kuitenkaan käsittele liikemääräyhtälöä näin, vaan sovellamme
säilymismuotoa (1.21)
Z
Z
∂ Z
~
ρudV + ρuV · ~ndS + pnx dS =
∂t
S
S Z
Z V
∂u
∂u
∂u
+ ny
+ nz )dS + ρbx dV
µ (nx
∂x
∂y
∂z
V
S
(1.31)
missä myös tiheys on mukana vuotermeissä ja liikemäärässä. Tekstiosuudessa tuodaan muoto (1.30) esille usein paitsi lyhyyden vuoksi, myös korostamaan sitä seikkaa, että ratkaisumenetelmä toimii nimenomaan vakiotiheydellä, ja että jatkuvuusyhtälö määrittelee liikemääräyhtälöissä esiintyvän painekentän eikä suinkaan tilayhtälö. Juuri tämä seikka on painekorjausmetodin ydin. Käytännössä ei ole mikään
1.7. KÄYTETYT YHTÄLÖT
24
ongelma lisätä menetelmään erilaisia piirteitä, esimerkiksi tiheyden riippuvuus paineesta ja lämpötilasta. Edellä esitetty tilayhtälö (1.24) tulee tällöin käyttöön, mutta
muodossa
ρ = ρ(p, e)
tai
(1.32)
ρ = ρ(p, T )
Yhtälö (1.31) on käytössä sekä yksi- että kaksidimensioisessa muodossa. Varsinainen virtausratkaisija tehdään kaksidimensioisena, jolloin kaikki kolmidimensioisessa tapauksessa esille tulevat piirteet saadaan jo esille. Painekorjaus voidaan kuitenkin suorittaa jo yksidimensioisilla yhtälöillä, jotka ovat alussa paljon helpommin
käsiteltäviä. Yhtälön (1.31) yksidimensioinen muoto on
∂
∂t
Z
V
Z
2
Z
ρudV + ρu dS + pnx dS =
S
S
Z
Z
∂u
dS + ρbx dV
µ
V
S ∂x
(1.33)
Tämän diskretointi kontrollitilavuusmenetelmällä on suoraviivaista. Ainoa huopn
x
i
S i −1/2
S i +1/2
p n
Kuva 1.2: Yksidimensioinen putkielementti, jossa nähdään paineesta aiheutuva voima putken seinämällä.
mionarvoinen asia on painetermi, johon on otettava myös putken pinnalla vallitseva paine mukaan (kts. kuva 1.2). Yksidimensioisessa tapauksessa putken pinnan
x-suuntainen komponentti on tilavuutta rajaavien x-suuntaisten pinta-alojen erotus
Si+1/2 − Si−1/2 . Muilla kuin painetermillä pintaintegraalit ovat nollasta poikkeavia
vain pinnoilla Si+1/2 ja Si−1/2 eikä niissä pinnan normaalin x-komponenttia nx = 1
ole merkitty eksplisiittisesti näkyviin. Mikäli putken poikkipinta on vakio, kyseinen
painekomponenttikin häviää. Tällöin voidaan kitkattomalle ja lähdetermittömälle
virtaukselle kirjoittaa yhtälö
∂
∂t
Z
V
ρudV +
Z
2
S
ρu dS +
Z
S
pdS = 0
(1.34)
1.7. KÄYTETYT YHTÄLÖT
25
mistä saadaan yksidimensioinen differentiaaliyhtälö
∂ρu ∂ρu2 ∂p
+
+
=0
∂t
∂x
∂x
(1.35)
Jo peruskurssissa tuotiin esille epälineaarisuuteen liittyviä ongelmia. Tämä asia tulee hyvin esille vakiotiheydellä, koska useat muut hankaluudet on vältetty. Edellä
olevan yhtälön ominaisuuksien tutkiminen voidaan aloittaa olettamalla painegradientti nollaksi. Derivoimalla saadaan tällöin
u
∂ρ
∂u
∂u
∂ρu
+ρ
+ ρu
+u
=0
∂t
∂t
∂x
∂x
(1.36)
Massan säilymisen perusteella ensimmäinen ja viimeinen termi ovat yhdessä = 0.
Virtausyhtälöitä muutettaessa erilaisiin primitiivimuotoihin (primitiivisuureet voidaan valita usealla tavalla), on usein käytetty temppu identifioida yhtälöistä termi:
suure × jatkuvuusyhtälö, joka on identtisesti nolla. Yllä oleva yhtälö redusoituu siis
lopulta Burgersin yhtälöksi, joka on primitiivimuodossa
∂u
∂u
+u
=0
∂t
∂x
(1.37)
Koska epälineaarisuutensa Burgersin yhtälö on hyvä aloituskohta painekorjausratkaisijan tekemiselle, tarkastellaan seuraavassa eräitä yhtälön ominaisuuksia. Säilymismuotoisen yhtälön vuoksi saadaan siis f = u2 /2. Burgersin yhtälöllä on yksi
karakteristika
dx
=u
(1.38)
dt
jota pitkin ratkaisu u pysyy vakiona. Burgersin yhtälöllä ratkaisussa esiintyy epäjatkuvuuskohtia, joiksi mikä tahansa kulkusuuntaan vähenevä jakautuma tiivistyy.
Epäjatkuvuuskohdan nopeudeksi C saadaan ns. yleisten yksidimensioisten RankineHugoniot ehtojen
∆F = C∆U
(1.39)
avulla saadaan Burgersin yhtälölle C = (uL + uR )/2. Yllä ∆F = FL − FR on vuo-
arvojen erotus epäjatkuvuuskohdan kahden puolen ja ∆U vastaava erotus ratkaistavien suureiden muodostamalle vektorille. Epäjatkuvuuskohdan ratkaisu on esitetty kuvassa 1.3 Jos tarkastellaan alunperin jatkuvaa jakautumaa, kuten kuvan 1.4
siniaaltoa, se lopulta terävöityy kuten kuvassa on esitetty. Terävöitymisen jälkeen
aallon nopeus on
C = u0 t +
√
Bt
(1.40)
1.7. KÄYTETYT YHTÄLÖT
26
u
u = Lu
uL
t
t = 0
uR
u = R
u
x
( uL + uR) t/2
x = 0
Kuva 1.3: Burgersin yhtälön ratkaisu shokkiaallolle
g(x)
A
t
t = 0
C
B/t
u0
x
0
L
u0t
u0t + Bt
Kuva 1.4: Burgersin yhtälön ratkaisu siniaallolle
ja sen korkeus on
q
B/t, missä B/2 on siniaallon pinta-ala. Aallon pinta-ala ei
muutu, koska tilanne on häviötön.
Jos suureen arvo on menosuunnassa kasvava, karakteristikat suuntautuvat x, ttasossa, kuten kuvassa 1.5 on esitetty. Ilmiötä sanotaan ekspansioviuhkaksi (expansion fan) ja se johtaa aallon loivenemiseen edelleen. Ratkaisu on saman kuvan
yläosassa ja se voidaan esittää muodossa
u(x, t) =


 u1


x/t
u2
x/t < u1
u1 < x/t < u2
x/t > u2
(1.41)
Periaatteessa ratkaisu voisi olla myös epäjatkuva (expansion shock), mikä olisi epäfysikaalista. Tarvitaan entropiaehto, josta peruskurssilla oli puhetta, jonka avulla
epäfysikaaliset ratkaisut voidaan matemaattisessa mielessä sulkea pois. Entropiaehdon toteuttavat ratkaisut voidaan löytää myös raja-arvona diffuusiotermin sisältävästä Burgersin yhtälön ratkaisusta antamalla diffuusiokertoimen lähestyä nollaa.
Burgersin yhtälön numeerisesta ratkaisusta oli myös puhetta peruskurssilla. Mi-
1.7. KÄYTETYT YHTÄLÖT
27
u
u2
t = 0
t
u1
x
0
u1t
u2t
t
t a nα1 = 1 / 1u
t a nα2 = 1 / 2u
α1
− u1t
α2
0
x
u2t
Kuva 1.5: Burgersin yhtälön ratkaisu harvennusaallolle
käli diskretointi on huonosti tehty, epäjatkuvuuskohdan luona esiintyy ’ylilyönti’.
Epäjatkuvuuskohdan ratkaisu onnistuu varsin tarkasti ns. Riemannin ratkaisun avulla. Roen approksimatiivinen Riemann-ratkaisija voidaan skalaariyhtälölle kirjoittaa
muodossa
∗
missä fi+1/2
1
1
∗
¯i+1/2 |(uR − uL )
(1.42)
fi+1/2
= (fR + fL ) − |a
2
2
on numeerisen vuon lauseke ja etenemisnopeus a¯i+1/2 määritetään si-
ten, että yhtälö
fR − fL = a¯i+1/2 (uR − uL )
(1.43)
¯i+1/2 = 1/2(uR + uL ), mikä on
toteutuu. Burgersin yhtälöllä tämä johtaa valintaan a
Rankine-Hugoniot ehdon mukainen epäjatkuvuuskohdan nopeus. Tällä valinnalla
∗
voidaan helposti myös havaita, että yhtälön (1.42) mukainen numeerinen vuo fi+1/2
voidaan myös kirjoittaa muotoon
∗
fi+1/2
=
(
1 2
u
2 R
1 2
u
2 L
a
¯i+1/2 ≤ 0
¯i+1/2 ≥ 0
a
(1.44)
Tämän ylävirtadiskretoinnin on aiemmin peruskurssilla todettu tuottavan ylilyönneistä vapaan ratkaisun ja nyt sen voidaan todeta tuottavan myös oikealla nopeudella etenevän epäjatkuvuuskohdan. Roen menetelmä voidaan yhdistää sopivan aikaintegrointimenetelmän kanssa. Menetelmä on luonteeltaan sellainen, että se ikään
1.7. KÄYTETYT YHTÄLÖT
28
kuin olettaa kahden kopin välissä olevan epäjatkuvuuskohdan. Tämä aiheuttaa sen,
että mikäli muutos onkin koppien välillä jatkuva, kuten harvennusaallossa, saattaa
siihen muodostua epäfysikaalinen harvennusaaltoshokki. Kokemuksen mukaan tämä voidaan poistaa ns. entropiakorjauksella (entropy fix), mutta myös kitkatermi
on yleensä riittävä tae fysikaalisesti mielekkäälle ratkaisulle.
Yllä oleva epäjatkuvuuskohdan käsittely tavallaan liittyy läheisemmin kokoonpuristuvien virtausten ratkaisuun. Alhaisella nopeudella voi esiintyä ns. kontaktiepäjatkuvuus esimerkiksi lämpötilassa ja tiheydessä. Painekorjausohjelman kehittäminen on helpointa aloittaa Burgersin yhtälöstä. Yllä esitetyn pohjalla voidaan tuloksia verrata myös tarkkaan ratkaisuun. Liikemääräyhtälön diskretoinnille saadaan
myös suunta yhtälön (1.44) perusteella. Tapa johtaa kuitenkin kokoonpuristumattomassa tapauksessa tiettyihin ongelmiin, joita selvitetään jatkossa. Tämän vuoksi
virtausyhtälöillä liikemääräyhtälön ratkaisussa erotetaan vuo muotoon ρu × u eli
muotoon massavirta × konvektoituva nopeus.
1.7. KÄYTETYT YHTÄLÖT
29
• Kokoonpuristumattoman virtauksen perusyhtälöt ovat
∇ · V~ = 0
1
D V~
+ ∇p = ~b + ν∇2 V
Dt
ρ
(1.45)
• Numeerinen ratkaisu pohjautuu integraalimuotoon. Myös jatkuvuusehdossa ∇ · ρV~ = 0 tiheys on tällöin mukana. Liikemääräyhtälö on xsuunnassa
Z
Z
Z
∂
ρudV + ρuV~ · ~ndS + pnx dS =
∂t
V
S
S Z
Z
∂u
∂u
∂u
+ ny
+ nz )dS + ρbx dV
µ (nx
∂x
∂y
∂z
V
S
(1.46)
• painekorjausmenetelmän ydin: jatkuvuusyhtälön toteutuminen määrittää painejakauman
• Burgersin yhtälö on hyvä lähtökohta liikemääräyhtälön tutkimiselle
∂2u
∂u ∂u2 /2
+
=ν 2
∂t
∂x
∂x
(1.47)
Yhtälön konvektio- ja diffuusiovuot muituttavat liikemääräyhtälön vastaavia termejä.
• Virtausyhtälöt,R niiden eri muodot
ja manipulointi. Hyödyllisiä yhteyksiä
~
~ ndS = R ∇· φdV
ja massansäilymisyhtälön käyttö.
Gaussin lause S φ·~
V
• Viskositeetti ja lämmönjohtavuus ovat ’aineominaisuuksia’. Kokoonpuristuvalle virtaukselle tarvitaan lisäksi tilayhtälö paineen määritystä varten.
• Globaali säilymisperiaate Vtot ∆φ = ∆t(Fsis − Fulos )
• Ratkaisumenetelmät eri nopeusalueille
1. Aikaintegrointi ja paine tilayhtälöstä, kun Ma > 0,1
2. Paine jatkuvuusyhtälön perusteella, kun Ma < 0,2. Tilayhtälöä
ei välttämättä edes tarvita. Ratkaisukeinot ovat matriisin pohjustus,
näennäispuristuvuus, virtafunktio-pyörteisyys -menetelmä sekä painekorjaus.
• Burgersin yhtälön ominaisuudet
Päivitetty 8.1.2014
30
2 Virtausyhtälöiden ominaisuuksia
2.1 Navier–Stokes-yhtälöt
Edellisessä luvussa tuotiin esille virtausyhtälöt. Aiemmin vektorimuotoista liikemääräyhtälöä on nimitettiin Navier–Stokes-yhtälöksi, mutta puhekielessä erityisesti CFD-alueella on yleistynyt tapa nimittää koko kitkallista virtausta kuvaavaa osittaisdifferentiaaliyhtälöryhmää tällä tavoin. Ilmeisesti tämä tapa pikkuhiljaa valtaa
myös klassisen virtausmekaniikan. Yhtälöt kirjoitettiin kompaktissa muodossa seuraavasti:
∂U ∂F ∂G ∂H
+
+
+
=0
∂t
∂x
∂y
∂z
(2.1)
missä U = (ρ, ρu, ρv, ρw, ρE)T on ratkaistavien konservatiivisten suureiden muodostama vektori ja F, G, H ovat vuovektoreita x, y, z-suunnissa. Vuovektorit ovat

F=








G=








H=







ρu
ρu2 + p − τxx
ρuv − τxy
ρuw − τxz
u(ρE + p) − uτxx − vτxy − wτxz + qx
ρv
ρuv − τxy
ρv 2 + p − τyy
ρvw − τyz
v(ρE + p) − uτxy − vτyy − wτyz + qy
ρw
ρuw − τxz
ρvw − τyz
ρw 2 + p − τzz
w(ρE + p) − uτxz − vτyz − wτzz + qz
























(2.2)
(2.3)
(2.4)
Yllä kitkatermit τij saadaan yhtälöstä (1.9) ilman painetta, joka on siirretty kitkattomaan vuovektoreiden osaan. Usein Navier–Stokes-yhtälöt kirjoitetaan erottamal-
2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI
31
la kitka- ja lämmönsiirtotermit, s.o. diffuusiotermit erikseen. Vuovektorit yhtälössä
(2.1) tulevat tällöin korvatuiksi vektoreilla F − Fv jne, missä alaindeksitön merkintä on varattu kitkattomalle vuon osalle.
Navier–Stokes-yhtälöt ovat hankalan näköisiä ja eri termien merkityksen mieltäminen edellyttää jo jonkinasteista asiantuntemusta. Yhtälöissä on kuitenkin tiettyä säännönmukaisuutta. Poistamalla diffuusiovuot, saadaan Eulerin yhtälöt, jotka koostuvat konvektiosta ja painegradientista. Alunperin Euler johti vuonna 1753
vain kitkattoman virtauksen liikemääräyhtälön, mutta nykyisin tälläkin nimityksellä tarkoitetaan yleensä koko yhtälöryhmää kitkattomassa muodossa. Nimitystilanne on siis samankaltainen kuin Navier–Stokes-yhtälöilläkin. Peruskurssista voidaan
palauttaa mieliin juuri konvektion diskretoinnin olevan hankalaa. Nyt vaikeudet lisääntyvät paineen määrityksen myötä. Paineen käsittely vaatii erilaista tekniikkaa
eri nopeusalueilla tai pikemminkin Machin lukualueilla. Eulerin yhtälöt muodostavat hyvän pohjan ratkaisumenetelmien kehittämiselle. Kitkatermi erikseen on hankalannäköinen, mutta sen diskretointi ja liittäminen numeriikkaan ei tuota periaatteellisia ongelmia, koska voidaan käyttää symmetrisiä laskentamolekyylejä. Siihen
palataan myöhemmin.
Eulerin yhtälöt muodostavat hyperbolisen ryhmän, edellyttäen että tiheys riippuu paineesta. Hyperbolisella ryhmällä on eräitä mielenkiintoisia ominaisuuksia,
jotka kuvaavat erilaisia virtausilmiöitä. Nämä ominaisuudet ovat myös tärkeitä konstruoitaessa ratkaisua kitkallisen virtauksen yhtälöille. Vaikka nyt tavoitteena onkin
saada ratkaistuksi yksinkertaistetut yhtälöt (1.45), tarkastellaan ensin Eulerin yhtälöiden ominaisuuksia kokonaisuudessaan ja pohditaan miten yhtälöiden luonne
muuttuu, kun Ma → 0 ja erityisesti rajalla Ma = 0.
2.2 Primitiivimuodot ja vuovektorin Jacobin matriisi
Seuraavaksi tarkastellaan eräitä Eulerin yhtälöiden ominaisuuksia. Tässä yhteydessä riittää yksidimensioinen malliyhtälö, joka täydellisenä voidaan kirjoittaa dimensiottomaan muotoon
∂U∗ ∂F∗
1 ∂F∗v
+
=
∂t∗
∂x∗
Re∞ ∂x∗
(2.5)
Tässä on kitkallinen vuo erotettu vasemmalle puolelle ja voidaan havaita yhtälön lähestyvän Eulerin yhtälöä, kun Re∞ = ρ∞ u∞ L∞ /µ∞ → ∞. Tässä Reynoldsin luku
2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI
32
on refereoitu johonkin sopivasti valittuun referenssitilaan. Havaitaan myös Eulerin
yhtälöiden olevan samanmuotoisia dimensiollisessa ja dimensiottomassa muodossa.
Eräs yksidimensioisten Eulerin yhtälöiden primitiivimuoto saadaan käyttämällä
konservatiivisia muuttujia U = (ρ, ρu, ρE)T ja derivoimalla vuotermi auki
∂U
∂U
+A
=0
∂t
∂x
(2.6)
missä A = ∂F/∂U on vuovektorin Jacobin matriisi. Tässä yhtälössä kyseessä on
konservatiivisten suureiden suhteen muodostettu Jacobin matriisi. Yllä olevan yhtälön avulla voidaan kehittää implisiittinen menetelmä kokoonpuristuvalle virtaukselle, jossa ratkaistaan konservatiivisia suureita U. Yksidimensioisessa tapauksessa




ρ
ρ




U =  ρu  =  m 
ǫ
ρE
ja vuovektori on

(2.7)


m
ρu
 m2 /ρ + p 


2

F =  ρu + p  = 
 m

(ǫ + p)
u(ρE + p)
ρ

(2.8)
missä on otettu käyttöön merkinnät m = ρu ja ǫ = ρE. Huomataan, että Jacobin
matriisin muodostaminen edellyttää paineen lausumista eksplisiittisesti suureiden
(ρ, m, ǫ)T avulla. Tämä on mahdollista esimerkiksi jos tilayhtälöä voidaan hyvällä
tarkkuudella approksimoida täydellisen kaasun tilayhtälöllä
m2
1
)
p = (γ − 1)ρe = (γ − 1)(ρE − ρu2 ) = (γ − 1)(ǫ −
2
2ρ
(2.9)
missä γ = cp /cv . Ilma on hyvin lähellä täydellistä kaasua kohtuullisilla lämpötiloilla. Sijoittamalla paineen lauseke yhtälön (2.8) mukaiseen vuovektoriin, on Jacobin
matriisin muodostaminen suoraviivaista.
Jacobin matriisi saadaan yksinkertaisemmaksi ottamalla käyttöön sopivat primitiivisuureet. Tällöin voidaan matriisi sopivalla linearisoinnilla lausua myös mielivaltaiselle tilayhtälölle, yllä se vaati paineen lausumista analyyttisesta yhtälöstä (2.9).
Primitiivisuureiden valinnassa pyritään yksinkertaisiin lausekkeisiin. Toinen asiaan
vaikuttava seikka on käytetty tilayhtälö ja siinä tarvittavat muuttujat. Tarkastellaan
2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI
33
asiaa konkreettisesti lausumalla yhtälö suureiden (ρ, u, e)T avulla. Avuksi tarvitaan
kineettisen energian yhtälö, joka saadaan liikemääräyhtälön primitiivimuodosta
ρ
∂u
∂u ∂p
+ ρu
+
=0
∂t
∂x ∂x
(2.10)
kertomalla se nopeudella u ja lisäämällä tulokseen nollan suuruinen termi u2 /2×
massan säilymisyhtälö. (Ilman viimeksi mainitun kaltaista operaatiota yhtälöiden
muuntaminen tuottaisi pitkiä ja virhealttiita lausekkeita). Yksidimensioiseksi kitkattomaksi kineettisen energian yhtälöksi saadaan
∂ρu2 /2 ∂ρu3 /2
∂p
+
+u
=0
∂t
∂x
∂x
(2.11)
Kitkallinen kineettisen energian yhtälö on paljon monimutkaisempi. Kineettisen
energian yhtälöstä ei ole säilymismuotoa, mikä tekee kineettisen energian säilymisen irrallaan kokonaisenergiasta hankalaksi. Ferziger-Pericissä pohditaan tätä seikkaa sivulta 152 lähtien. Asia on siinä mielessä hankala, että kokoonpuristumattomalla virtauksella sisäenergiaa ei ole määritelty ja ainoaksi energiamuodoksi jää
kineettinen energia. Ilmeisesti paljon tärkeämpää on kuitenkin liikemäärän säilyminen. Kineettisen energian yhtälön avulla on usein hyödyllistä tehdä erilaisia tarkasteluja, esimerkkinä voidaan mainita virtaus turbokoneissa. Yhtälö on myös apuväline manipuloitaessa kokonaisenergian yhtälöä. Vähentämällä viimeksi mainitusta
kineettisen energian yhtälö (2.11) saadaan sisäenergialle e säilymisyhtälö
∂u
∂ρe ∂ρue
+
+p
=0
∂t
∂x
∂x
(2.12)
Tästäkään ei ole olemassa säilymismuotoa, joten energian eri muotoja ei voida
ratkaista säilymismuotoisella diskretoinnilla ilman lisäapproksimaatioita. Säilymismuoto on olemassa vain kokonaisenergialle e+u2/2 tai e+u2/2+gh. Näistä potentiaalienergian sisältävä vaihtoehto on sikäli ’voimakkaammassa’ säilymismuodossa,
että energiayhtälöön ei tule gravitaatiovoimasta lähdetermiä. Differentiaaliyhtälössä
kaikki suureet ovat tällöin nablan ’alla’.
Yhtälö (2.12) voidaan edelleen yksinkertaistaa massan säilymisyhtälön avulla
muotoon
ρ
∂e
∂e
∂u
+ ρu
+p
=0
∂t
∂x
∂x
(2.13)
2.2. PRIMITIIVIMUODOT JA VUOVEKTORIN JACOBIN MATRIISI
34
Nyt yhtälöt (2.10), (2.13) ja massan säilymisyhtälö voidaan kirjoittaa matriisimuodossa





1 0 0
ρ

 ∂ 

 
 0 1 0 
 u +

∂t
0 0 1
e
u
ρ
0
1 ∂p
1 ∂p
u
ρ ∂ρ
ρ ∂e
0
p/ρ
u







ρ
∂  
 u =0
∂x
e
(2.14)
paikkaderivaattatermin kertojana on valittujen primitiivisuureiden Jacobin matriisi
˜ Karakteristiset nopeudet saadaan suoraan tämän matriisin ominaisarvoina, koska
A.
aikaderivaattaa kertoo yksikkömatriisi (kts. peruskurssi)




|A˜ − λI| = det 
u−λ
ρ
0
1 ∂p
1 ∂p
u−λ
ρ ∂ρ
ρ ∂e
0
p/ρ u − λ





=0
(2.15)
Ominaisarvoiksi saadaan λ1,2 = u ± c ja λ3 = u. Kaksidimensioisessa tapauksessa
saadaan ominaisarvoja λ3 kaksi ja kolmidimensioisessa tapauksessa kolme kappa-
letta. Samaa ominaisarvoa vastaa kolme vasenta ominaisvektoria, joten ominaisarvoja tavallaan on yhteensä viisi kappaletta kuten ominaisvektoreitakin. Tällöin hyperbolisuuden määritelmä täyttyy. On huomattava, että kyse on nyt x-suuntaisen
vuovektorin Jacobin matriisin ominaisarvoista, jotka määrittelevät karakteristiset
nopeudet vain tässä suunnassa. Ottamalla huomioon yhtälön (2.1) kaikki suunnat,
saadaan karakteristinen pinta, josta peruskurssilla oli puhetta yhtälöiden luokittelun
yhteydessä. Ominaisarvot määrittelevät äänen nopeudeksi tässä tapauksessa
c2 =
∂p p ∂p
+
∂ρ ρ e
(2.16)
Kuten jo peruskurssilla on todettu, tämän tyyppinen yhtälöryhmä on hyperbolinen
ja kuvaa siis eräiden suureiden etenemistä häviöttömänä pitkin karakteristikoita,
jotka määräytyvät yhtälöistä
dx
= λi i = 1, 2, 3
dt
(2.17)
Jos nopeus ja äänen nopeus ovat vakioita, karakteristikat ovat aika-paikka-tasossa
suoria, joiden kulku on hahmoteltu kuvassa 2.1. Koska sekä nopeus että äänennopeus muuttuvat ratkaisun edetessä, karakteristikat ovat käytännössä kaareutuvia.
Primitiivisuureiden valinta voidaan tehdä monella tavoin, koska kahden termodynaamisen suureen avulla on aina lausuttavissa kolmas. Sopiva valinta on nyt käy-
2.3. MUUNNOKSET KONSERVATIIVISTEN JA PRIMITIIVISUUREIDEN
VÄLILLÄ
35
t
ylisooninen
virtaus
al i s o o n i n e n
virtaus
88888
riippuvuus−
88888
alue
88888
P
888888888888
88888888
P ( x , t ) 888888888888
88888888
888888888888
88888888
888888888888
C+
C0
C−
88888888
888888888888
88888888
888888888888
88888888
888888888888
88888888
888888888888
x
88888888
888888888888
88888888
888888888888
P+ P0 P−
P+
P0
P−
88888888
888888888888
Kuva 2.1: (a) karakteristikat ylisoonisessa tapauksessa u > c, (b) karakteristikat , kun u < c
tetyn lisäksi (p, u, h)T , jolloin äänen nopeudeksi saadaan
1
=
c2
∂ρ
∂p
!
1
+
ρ
h
∂ρ
∂h
!
(2.18)
p
Äänennopeuden lauseke luonnollisesti muuttuu aina käytössä olevien derivaattojen
mukaan. Periaatteessa ne ovat kaikki manipuloitavissa samaan muotoon
2
c =
∂p
∂ρ
!
(2.19)
s
missä paineen derivointi tiheyden suhteen tapahtuu vakioentropialla s. Yhtälöä (2.19)
yleensä pidetään äänennopeuden määritelmänä.
2.3 Muunnokset konservatiivisten ja primitiivisuureiden välillä
Kuten edellä mainittiin, eräs hyöty primitiivisuureiden käytölle on myös se, ettei
tilayhtälöä tarvitse kirjoittaa eksplisiittisessä muodossa näkyviin. Sen sijaan selvitään linearisoinneilla. Käyttökelpoinen muunnos on myös konservatiivisista suureista primitiivisiin


ρ
∂U
∂  ~ 
M=
=
 ρV 
∂u
∂u
ρE
(2.20)
missä primitiivisuureiden muodostamaa vektoria on merkitty u:lla. Huomautettakoon, että aika usein (esim. Hirsch) primitiivisuureiden vektoria merkitään V :llä ja
TAP, josta nyt esillä olevat merkinnät on lainattu, heiluu silloin tällöin lihavoitettujen ja tavallisten kirjainten välillä. Edellä olevassa yksidimensioisessa tapauksessa
2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 36
muunnosmatriisi on hyvin yksinkertainen
M=
∂U
∂ρ
∂U
∂u
∂U
∂e
!




=
1
u
0
ρ

0

0 


u2
e+
ρu ρ
2
(2.21)
Käänteismatriisi M −1 määrittelee muunnoksen primitiivisuureista konservatiivisiin.
Valituilla primitiivisuureilla
M −1


ρ
∂u
∂  ~ 
=
=
 V 
∂U
∂U
e
(2.22)
Tässä tapauksessa derivointi on selvästi työläämpää, mutta koska MM −1 = I, saadaan M −1 myös suoraan kääntämällä matriisi (2.21).
Yhteys konservatiivisten ja primitiivisuureiden Jacobin matriisien välillä saadaan yhtälöstä (2.6)
∂U
∂U
∂U ∂u
∂U ∂u
∂u
∂u
+A
=
+A
≡M
+ AM
=0
∂t
∂x
∂u ∂t
∂u ∂x
∂t
∂x
(2.23)
Kertomalla matriisilla M −1
∂u
∂u
∂u
∂u
+ M −1 AM
≡
+ A˜
=0
∂t
∂x
∂t
∂x
(2.24)
Tästä nähdään Jacobin matriisin toteuttavan similaarisuusmuunnoksen
A˜ = M −1 AM
ja
˜ −1
A = M AM
(2.25)
jolloin niillä on samat ominaisarvot. Eulerin yhtälöiden karakterististen ominaisuuksien tutkimiseen voidaan siten käyttää primitiivisuureiden avulla lausuttuja yhtälöitä, mikä on yksinkertaisempaa kuin konservatiivisten suureiden käyttö. Jacobin
matriisilla on myös merkitystä yhtälöiden implisiittisessä ratkaisussa. Tämä saatiin nyt hajotettua kolmen matriisin tuloksi, mutta matriisi A˜ voidaan vielä hajottaa
tekijöihin, mikä tekee implisiittisen menetelmän soveltamisesta käytännössä yksinkertaisempaa.
2.4 Ominaisvektorit ja Jacobin matriisin diagonalisointi
Hyvin yksinkertainen Jacobin matriisi saadaan valitsemalla primitiivisuureiksi (ρ, u, p)T .
˜ löydetään vasempien ominaisvekMatriisi, jonka avulla voidaan diagonalisoida A,
2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 37
torien avulla. Vasen ominaisvektori vastaten ominaisarvoa λ(j) määritellään yhtälöllä
˜l(j) A˜ = λ(j) ˜l(j)
(2.26)
missä summausta indeksin j yli ei tapahdu. Yllä primitiivisuureiden avulla määriteltyyn Jacobin matriisiin liittyvää ominaisvektoria on merkitty ˜l(j) :lla. Kun sekaannusvaaraa ei ole, jatkossa aaltoviivaa ei ominaisvektorien yhteydessä käytetä. Tarkastellaan yksidimensioisen esimerkin avulla ominaisvektoreiden määritystä.
Otetaan käyttöön primitiivisuureet (ρ, u, p)T , jolloin saadaan hyvin yksinkertainen
Jacobin matriisi
l1 l2 l3





u
ρ
0
u
0 ρc2
0
1
ρ
u





=λ
l1 l 2 l 3
(2.27)
missä li ovat λ:a vastaavan ominaisvektorin komponentteja. Ominaisarvolle λ = u
saadaan
ul1 = ul1
ρl1 + ul2 + ρc2 l3 = ul2
1
l2 + ul3 = ul3
ρ
(2.28)
Ensimmäinen yhtälö toteutuu mielivaltaisella l1 :n valinnalla. Viimeisestä yhtälöstä
saadaan l2 = 0. Valitsemalla l1 = 1, voidaan toisesta yhtälöstä ratkaista l3 = −1/c2 .
Toiselle ja kolmannelle ominaisarvolle λ = u±c voidaan kirjoittaa yhtälöryhmä
ul1 = (u ± c)l1
ρl1 + ul2 + ρc2 l3 = (u ± c)l2
1
l2 + ul3 = (u ± c)l3
ρ
(2.29)
Nyt ensimmäisestä yhtälöstä saadaan l1 = 0 ja kaksi muuta toteutuvat, kun l2 =
±ρcl3 . Valitsemalla taas l2 = 1 saadaan l3 = ±1/ρc. Vasemmat ominaisvektorit
muodostavat matriisin, jota merkitään L−1 :llä
L−1
1 
1
0
−

c2 

1 



0
1
=

ρc 



1 
0 1 −
ρc

(2.30)
2.4. OMINAISVEKTORIT JA JACOBIN MATRIISIN DIAGONALISOINTI 38
Hyperbolisen yhtälön määritelmänä voidaan pitää reaalisia ominaisarvoja ja niitä
vastaavia ominaisvektoreita (2.30). Ominaisvektoreiden ratkaisu sujuu kuten yllä
esitettiin: Yleensä jokin vektorin komponentti = 0 ja muuta ratkeavat vakiokerrointa vailla. Esimerkiksi yllä olisi toiseksi ja kolmanneksi vasemmaksi ominaisvektoriksi voitu yhtä hyvin valita 0, ±ρc, 1.
Ominaisvektoreiden muodostaman matriisin (2.30) käänteismatriisi on
ρ 
ρ
−
1

2c
2c 



L=









0
1
2
0
ρ
ρ
−
2c
2c
1
2









(2.31)
Vasempien ominaisvektoreiden muodostaman matriisin merkitys on siinä, että sen
˜ Kirjoittamalla yhtälö (2.26) kaikille omiavulla voidaan diagonalisoida matriisi A.
naisarvoille, saadaan matriisimuodossa
L−1 A˜ = ΛL−1
(2.32)
missä Λ on ominaisarvojen muodostama lävistäjämatriisi. Nyt saadaan seuraavat
yhteydet
A˜ = LΛL−1
(2.33)
˜
Λ = L−1 AL
(2.34)
Kun otetaan huomioon yhteys (2.25) saadaan konservatiivisten suureiden suhteen
kirjoitettu Jacobin matriisi muotoon
A = MLΛL−1 M −1
(2.35)
Tämä muoto on erittäin hyödyllinen implisiittisen ratkaisun yhteydessä. Merkitsemällä P = ML, jolloin P −1 = L−1 M −1 voidaan primitiivimuodossa oleva yhtälö
(2.6) lausua muodossa
∂U
∂U
+ P ΛP −1
=0
(2.36)
∂t
∂x
Hyperbolisen yhtälöryhmän määrittelynä voidaan käyttää myös sitä, että on olemassa similaarisuusmuunnos A = P ΛP −1. Tähän muunnokseen pohjautuvat monet
tiheyspohjaiset ratkaisumenetelmät, esimerkiksi vuovektorin (flux-vector splitting)
2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS
39
ja vuon erotuksen ositukset (flux-difference splitting, käytetään myös nimitystä approksimatiivinen Riemann-ratkaisu).
Vasempien ominaisvektorien lisäksi voidaan määritellä oikeanpuoliset ominaisvektorit R
˜ = RΛ
AR
(2.37)
A˜ = RΛR−1
(2.38)
josta saadaan
On huomattava, että vasemmat ominaisvektorit ovat matriisin L−1 vaakarivejä ja oikeat ominaisvektorit matriisin R pystyrivejä. Kumpikin matriisi toteuttaa muodollisesti samanmuotoisen yhtälön (2.38) tai (2.33), joten R = L. Yksidimensioisessa
esimerkissämme oikeanpuoleiset ominaisvektorit ovat siis matriisin (2.31) pystyrivejä. Eri tavoin määritellyt ominaisvektorit ovat ortogonaalisia
˜l(j) · r˜(k) = δjk
(2.39)
Oikeiden ominaisvektoreiden merkitys on siinä, että ne ovat verrannollisia karakteristisella nopeudella λj etenevän häiriön intensiteettiin. Koska yhtälöt (2.38) ja
(2.33) ovat muodollisesti identtisiä, merkintätavoissa esiintyy helposti horjuvuutta.
2.5 Karakteristiset suureet ja niiden merkitys
Yhtälö (2.36) voidaan kirjoittaa myös muotoon
∂U
∂U
P −1
+ ΛP −1
=0
(2.40)
∂t
∂x
mistä nähdään, että määrittelemällä uudet ns. karakteristiset suureet δW = P −1 δU =
L−1 M −1 δU = L−1 δu yhtälö voidaan kirjoittaa muotoon
∂W
∂W
+Λ
=0
(2.41)
∂t
∂x
Hyperbolisilla yhtälöillä on siis säilymis- ja primitiivimuodon lisäksi karakteristinen muoto. Näistä vain säilymismuoto on yksikäsitteisesti määrätty, muut muodot
voidaan valita usealla tavalla. Primitiivisuureet saadaan karakteristisista muunnoksella δu = LδW. Konservatiivisia ja karakteristisia suureita puolestaan sitovat yhtälöt
δW = P −1 δU
(2.42)
δU = P δW
(2.43)
2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS
40
Jälkimmäinen yhtälö voidaan myös kirjoittaa matriisin A ominaisvektorien r (j) avulla muodossa
δU =
X
δwk r (k)
(2.44)
k
mistä nähdään, että konservatiivisten suureiden muutos koostuu matriisin A oikeiden ominaisvektoreiden kuvaamista aalloista, joiden amplitudit ovat karakteristiset
suureet δwk . Ominaisvektorit r (k) saadaan helpoimmin yhteydestä P = MR = ML
matriisin P pystyriveinä. Yksidimensioisessa tapauksessa karakteristisia nopeuksia
t
Vaikutus−
alue
Karakteristinen
pinta
P
x
P:n riippuvuusalue
xy−tasossa
y
Kuva 2.2: Kaksidimensioisessa tapauksessa hyperbolisella yhtälöllä muodostuu ns. karakteristinen kartio.
ja suureita on kolme kappaletta. Karakteristikat ovat x, t -tasossa käyriä. Itse asiassa useampidimensioisella virtauksella muodostuu karakteristisia pintoja kuten kuvassa 2.2. Tarkasteltaessa esimerkiksi x-suuntaa, kuten tässä, karakteristikat ovat
karakteristisen pinnan projektioita x, t-tasoon. Tässä yhteydessä on huomautettava,
että laskennallisessa virtausdynamiikassa karakteristisilla pinnoilla on vähän käyttöä. Tämä johtuu siitä, että ratkaisumaailma on käytännössä aina yksidimensioinen
kullakin laskentatilavuuden pinnalla pinnan normaalin suuntaisessa koordinaatistossa. Tähän palataan kohdassa 2.8. Todellisesta yksidimensioisesta mallista poiketen numeerisessa ratkaisussa muuttujien lukumäärä onkin 3-5 ja Jacobin matriisi
muodostetaan jokaiseen koordinaattisuuntaan erikseen. Tällöin kaksidimensioisessa tapauksessa saadaan kaksi ja kolmidimensioisessa kolme u:n suuruista karakte-
2.5. KARAKTERISTISET SUUREET JA NIIDEN MERKITYS
41
ristista nopeutta. Tätä samaa ominaisarvoa λ = u vastaa näissä tapauksissa kaksi
tai kolme ominaisvektoria.
Yksidimensioinen tapaus kolmella yhtälöllä on selkeä, koska ominaisarvot ovat
erilliset. Siinä karakteristisiksi suureiksi saadaan määritelmän δW = L−1 δu avulla
1
δp
c2
1
δw2 = δu + δp
ρc
1
δw3 = δu − δp
ρc
δw1 = δρ −
(2.45)
Jos suure φ on ajan ja paikan funktio, on sen derivaatta ajan suhteen
∂φ dx ∂φ
dφ
=
+
dt
∂t
dt ∂x
(2.46)
∂φ
∂φ
dφ
=
+ λi
dt
∂t
∂x
(2.47)
Tällöin voidaan tulkita, että
on suureen φ derivaatta pitkin karakteristikaa
dx
= λi
dt
(2.48)
Näin ollen yhtälö (2.41) voidaan tulkita tavalliseksi differentiaaliyhtälöksi pitkin
t
t + ∆t
C +
C −
C0
t
i−1
A
U
i
B
i+1
x
Kuva 2.3: Karakteristikoiden kulku x, t-tasossa. Pisteiden A, B ja U arvot on interpoloitava
hilapistearvoista i.
karakteristikaa. Tähän perustuu ns. karakteristikamenetelmä, jota havainnollistaa
kuva 2.3. Karakteristiset yhtälöt voidaan diskretoida seuraavasti
ρt+∆t
− ρU −
i
1 t+∆t
(p
− pU ) = 0
c2 i
2.6. KARAKTERISTIKAT JA REUNAEHDOT
1 t+∆t
(p
− pA ) = 0
ρc i
1
− pB ) = 0
ut+∆t
− uB − (pt+∆t
i
ρc i
42
ut+∆t
− uA +
i
(2.49)
missä yläindeksittömät suureet ovat aikatasolta t. Menetelmän ongelma on se, ettei suureita pisteissä A, B ja U tunneta. Nämä arvot on interpoloitava hilapistearvoista i, mikä johtaa numeeriseen virheeseen. Mikäli käytettäisiin lineaarista interpolointia, päädyttäisiin numeeriseen diffuusioon. Toinen karakteristikamenetelmän ongelma on, ettei se ole säilymismuodossa eikä näin ollen säilytä ratkaisualueen massaa, liikemäärää ja energiaa. Markku Rajamäen VTT:llä kehittämä PLIMmenetelmä pohjautuu siihen, että ratkaisu hilapisteiden välillä lausutaan tarkemmin tiettyjen paloittain lineaaristen jakautumien avulla. Tällöin esimerkiksi epäjatkuvuuskohtaan liittyvä numeerinen diffuusio saadaan häviämään lähes kokonaan.
PLIM-menetelmää on myös modifioitu varsinaisesta karakteristika-menetelmästä
poiketen siten, että ratkaistavat suureet säilyvät.
Karakteristikamenetelmää on käytetty varsin paljon yksidimensioisten ajasta
riippuvien ongelmien ratkaisuun. Kun sekä äänen nopeus että tiheys muuttuvat ratkaisun kuluessa, karakteristikat ovat käyriä, joita yhden aika-askeleen kuluessa approksimoidaan suorilla. Putkistoille menetelmää on käytetty ns. vesi-iskujen (waterhammer) analysointiin. Tällöin voidaan usein hyvällä tarkkuudella pitää tiheyttä ja
äänennopeutta vakioina. Ensimmäinen yhtälöistä (2.49) putoaa tällöin pois. Mikäli
halutaan laskea myös karakteristikaa ∆t/∆x = u pitkin vakiona pysyvää termodynaamista suuretta, tiheyden sijasta parempi valinta on esimerkiksi entalpia. Tiheys
voidaan laskea joka aika-askeleella tilayhtälöstä ρ = ρ(p, h). Tämä karakterististen
suureiden valinta on parempi, koska esimerkiksi vedelle tiheyden muutokset voivat
olla hyvin pieniä jolloin menetelmän tarkkuus kärsii.
2.6 Karakteristikat ja reunaehdot
Karakteristikamenetelmän laajennus useampaan dimensioon on hankalaa. Menetelmällä on rajattu käyttö yksidimensioisissa sovelluksissa. Kokoonpuristuvalla alueella (Ma > 0,1) vaaditaan toimivalta menetelmältä säilymisominaisuutta. Karakteristikoita voidaan kuitenkin käyttää hyödyksi reunaehtojen antamisessa. Kuvassa
2.4 on hahmoteltuina sisään- ja ulosvirtausreunoilla karakteristikoiden kulku. Yli-
2.6. KARAKTERISTIKAT JA REUNAEHDOT
C−
C
0
3333
3333
C+
P 3333
03333
t 3333y l i s o o n i n e n
C
3333
sisäänvirtaus +
3333
3333
C
0
3333
3333
3333
3333
3333
x = x
0
C−
43
y l i s o o n i n e n u l toasuv si r
3333
3333
P
3333
3333 1
3333
3333
3333
3333
3333
C−3333 x
3333
3333
3333
x = 1x
C
0
a l i s o o n i n e n u l toasuv si r
3333
3333
3333
3333
C−
3333
3333
P1
C+
P0
3333
3333
3333
3333
t
C+
3333
3333
3333
3333
3333
3333
C
3333
3333
0
alisooninen
3333
3333
sisäänvirtaus
3333
3333
3333
3333 x
3333
3333
3333
3333
x = x
0
x = 1x
Kuva 2.4: Karakteristikoiden suuntautuminen reunoilla erilaisissa virtaustilanteissa
soonisessa tapauksessa kaikki karakteristikat osoittavat laskenta-alueeseen päin. Tämä tarkoittaa sitä, että kaikki kolme (yksidimensioisessa tapauksessa) reunaehtoa
on annettava. Tämä pätee silloinkin, kun ratkaistaan säilymismuotoisia yhtälöitä,
koska yhtälöiden fysikaalinen luonne ei muutu siitä miksikään. Jos sisäänvirtaus on
alisooninen, yksi karakteristikoista osoittaa laskenta-alueesta ulospäin. Tämä tarkoittaa sitä, että vain kaksi sisäänvirtausehtoa voidaan antaa, kolmas tekisi probleemasta ylispesifioidun eli huonosti asetetun. Koska reunalla tarvitaan kolme suuretta, on kolmas reunaehto jollain tavoin määrättävä ratkaisualueen sisällä vallitsevista
arvoista. Yleisin tapa on ekstrapoloida jokin konservatiivinen tai primitiivisuure.
Myös karakteristinen suure voidaan ekstrapoloida. Tälle olisi tavallaan olemassa
fysikaalinen perustelu, mutta käytännössä konservatiivisen suureen ekstrapolointi
johtaa likimain samaan tulokseen yksinkertaisemmin. Kolmatta reunaehtoa nimitetään usein numeeriseksi reunaehdoksi ja muita kahta fysikaalisiksi ehdoiksi.
Vastaavasti ulosvirtausreunalla, jos kaikki karakteristikat osoittavat laskentaalueesta ulos, mitään reunaehtoa ei saa antaa. Ratkaisu määräytyy tällöin täysin
laskenta-alueen ratkaisusta ja tapaukseen liittyy tällöin vain numeerisia reunaehto-
2.6. KARAKTERISTIKAT JA REUNAEHDOT
44
Taulukko 2.1: Tarvittavien reunaehtojen määrä yksidimensioisille ja kolmidimensioisille
(suluissa) Eulerin ja Navier–Stokes-yhtälöille
Sisäänvirtaus
Ulosvirtaus
Ylisooninen Alisooninen Ylisooninen Alisooninen
3 (5)
2 (4)
0 (0)
1 (1)
Euler
3 (5)
3 (5)
2 (4)
2 (4)
Navier–Stokes
ja. Yleisin tapa on jälleen suureiden ekstrapolointi muodossa tai toisessa. Alisoonisessa tapauksessa yksi karakteristika on ratkaisualueeseen päin, joten yksi suure
on annettava fysikaalisena reunaehtona. Usein luonteva suure on paine ja sen kanssa yhteensopivia sisäänvirtaussuureita ovat tiheys ja nopeus. Tällöin massavirta ρu
laskenta-alueeseen on kiinnitetty. Jos sisäänvirtausehdoksi annettaisiin paine, paineero tulisi kiinnitetyksi ja nopeus määräytyisi ratkaisun mukana. Eräät ratkaisumenetelmät, mukaan lukien karakteristikamenetelmä, toimivat siten, että vaikka reunoilla annettaisiin ylimääräisiä ehtoja, ne menetelmän luonteen vuoksi automaattisesti kytkeytyvät pois. Esimerkiksi van Leerin vuon ositusmenetelmässä havaitaan
helposti vuon olevan alisoonisessa sisäänvirtaustapauksessa funktio vain kahdesta
annetusta suureesta, jotka kuitenkin riippuvat monimutkaisella tavalla kaikista primitiivisuureista ja yhdestä laskenta-alueesta määräytyvästä suureesta.
Edellä on tarkasteltu Eulerin yhtälöitä ja on syytä pohtia miten reunaehdot olisi annettava Navier–Stokes-yhtälöille ja erityisesti mitä tapahtuu yhtälöiden (1.45)
määrittelemässä idealisoidussa tilanteessa. Aiemmin on todettu Navier–Stokes-yhtälöiden muodostavan vaillinaisesti parabolisen ryhmän. Reunaehtojen määrän pitäisi matemaattisessa mielessä olla tällöin taulukon 2.1 mukainen. Taulukossa on
myös edellä esitetty reunaehtojen määrä Eulerin yhtälöille ja suluissa määrät kolmidimensioisessa tilanteessa. On syytä vielä korostaa, että tarkastelu pätee kokoonpuristuvalle tilanteelle ∂ρ/∂p 6= 0, mutta jos esimerkiksi vedellä pyritään laskemaan
paineaaltojen kulkua, reunaehdot on silloinkin annettava taulukon mukaisesti.
Aiemmin todettiin Eulerin yhtälöiden olevan idealisointi tilanteelle, jossa probleeman globaali Reynoldsin luku on suuri. Käytännössä on havaittu, että reunaehdot on
syytä lähes aina antaa kuten Eulerin yhtälöille ei siis kuten taulukossa 2.1 on esitetty Navier–Stokes-yhtälöille. Reynoldsin luvut teknillisissä sovelluksissa vaihtelevat
miljardista (laivat), sataan miljoonaan (liikennelentokone) ja alapäässä ehkä muu-
2.6. KARAKTERISTIKAT JA REUNAEHDOT
45
tamaan tuhanteen. Mitään osoitusta asialle ei ole olemassa, mutta saattaa olla mahdollista, että vasta kun Reynoldsin luku on suuruusluokkaa O(1), käytännössä ehkä Re ≈ 10, virtaus alkaa fysikaalisessa mielessä reunaehtojen suhteen vaatimaan
taulukon mukaista käsittelyä Navier–Stokes-yhtälöille. Reunaehtojen ja erityisesti
numeeristen reunaehtojen antamisen tärkeyttä korostetaan kaikissa CFD-kirjoissa,
mutta kovin vähän konkreettista tietoa asiasta annetaan. Reunaehtojen antaminen on
eräs tärkeä virtauslaskennan osa-alue, jossa käytännön kokemus on tärkeää ja johon
viime kädessä asia pohjautuu. Eräs kokeilematta oleva ajatus tukeutuu kontrollitilavuusmenetelmän luonteeseen. Varsinainen reunaehtohan on vuo laskenta-alueen
pinnalla. Tämä suo periaatteellisen mahdollisuuden antaa erikseen reunaehdot kitkattomalle vuon osalle ja kitkalliselle. Käytetyt ekstrapolaatiot saattavat toimia tällä tavoin: Eulerin yhtälöiden perusteella tehdään tarvittavat ekstrapoloinnit. Nämä
puolestaan johtavat nollagradientteihin eli diffuusiovuo häviää laskenta-alueen ulkoreunalla. Tämä voidaan tulkita myös siten, että diffuusiovuolle on tällöin erikseen
annettu arvo.
Eulerin yhtälöt ovat siis idealisointi tilanteesta, jossa Re∞ → ∞. Vakiotiheyttä
ja siitä seuraavaa yhtälöä ∇ · V~ = 0 voidaan puolestaan pitää idealisointina tilanteesta, jossa Ma∞ → 0. Jos tarkastellaan tilannetta, jossa ∇ · V~ = 0, niin aiem-
min todettiin, että jäljelle jää vain liikemääräyhtälö, jossa nyt on kaksi suuretta: nopeus ja paine. Karakteristikoiden määräämiseen tarvitaan joku lisäehto, jolla painegradientista päästään eroon. Käytännössä ei ole (ainakaan tiedossa) muuta keinoa,
kuin käsitellä painegradientti ’lähdeterminä’ ja siirtää se tavallaan ’yhtälön oikealle
puolelle’. Tällöin nähdään suoraan, että liikemääräyhtälöllä on (yksidimensioisessa
tapauksessa) yksi karakteristika
dx
=u
dt
(2.50)
Sisäänvirtauskohdassa on nyt siis annettava yksi suure, nopeus. Paineelle ei siis näytettäisi tarvittavan reunaehtoa ollenkaan! Tämä tavallaan järjetön tilanne seuraa siitä, ettei jatkuvuusyhtälö ∇ · V~ = 0 määrittele paineen tasoa mitenkään, ainoas-
taan paine-erot eli painegradientin. Näin ollen laskentamenetelmätkin, painekor-
jaus, näennäispuristuvuus tai virtafunktio-pyörteisyys -menetelmä, antavat tulokseksi vain paine-eroja. Laskenta-alueessa siis tavallaan vallitsee eräänlainen ’systeemipaine’ ja virtausratkaisu antaa erot tähän referenssitasoon sekä nopeusjakau-
2.6. KARAKTERISTIKAT JA REUNAEHDOT
46
tuman. Jos paine ja tiheys eivät linkity toisiinsa tilayhtälön kautta, painekorjausmenetelmässä ei ole sisäänrakennettuna mitään keinoa painetason säätelemiseksi,
laskennasta saadaan ainoastaan paine-erojakautuma.
Paineen tason kiinnittäminen voidaan hoitaa kahdella tavalla. Tässä suositeltava
tapa on näennäinen reunaehtojen käyttö. Tarkastelemalla tilannetta, jossa Ma → 0,
käytössä onkin kaksi karakteristikaa (ilman energiayhtälöä) ja jos sisääntulossa an-
netaan nopeus, luonteva valinta ulosvirtaukselle on paine. Jos täysin kokoonpuristumattomassa (käytössä on yksi karakteristika) tilanteessakin annetaan ulosvirtausreunalla paineen arvo, on painetaso kiinnitetty koko laskenta-alueessa fysikaalisesti
mielekkäällä tavalla. Reunaehto ei ole todellinen reunaehto, koska tilanne ei vaadi sitä. Reunaehtopisteessä painekorjaus on = 0. (Reunaehtojen laskentaan palataan viidennessä luvussa). Voidaan lisäksi todeta, että vaikka kokoonpuristuvalla
virtauksella ja esimerkiksi karakteristikamenetelmällä on mahdollista antaa myös
nopeus ulosvirtausehtona, niin side-ehdolla ∇ · V~ = 0 tilanne tulisi sillä valinnalla
huonosti asetetuksi, koska tällöin aina, myös ajasta riippuvassa tilanteessa, on ulos-
virtauksen oltava yhtä suuri kuin sisäänvirtaus. Tämä on helppo nähdä integroimalla
jatkuvuusyhtälö laskenta-alueen yli ja käyttämällä Gaussin lausetta
Z
V
∇ · V~ dV =
Z
S
V~ · ~ndS =
Z
sis
|V~ · ~n|dS −
Z
ulos
|V~ · ~n|dS = 0
(2.51)
Toinen tapa, joka on käytössä kaupallisissa ohjelmissa, on kiinnittää painetaso johonkin mielivaltaiseen pisteeseen laskenta-alueessa. Todellisessa tilanteessa tällä ei
ole fysikaalista perustaa, mutta se toimii idealisoidussa tilanteessa. Vaikka käytännön laskennassa tiheyden annettaisiinkin muuttua, se ei kuitenkaan muuta tilannetta
niin paljon, ettei laskenta silloinkin tiettyyn rajaan saakka onnistuisi tällä keinolla.
On mielenkiintoista todeta, että jos virtaus käsitellään alhaisen Machin luvun virtauksena, on Eulerin yhtälöiden reunaehdot periaatteessa annettava, mutta laskenta
ilmeisesti toimii myös kokoonpuristumattoman virtauksen ehdoilla. Tilanne on analoginen kitkallisen virtauksen reunaehdoille, joita kokemuksen mukaan ei edes pidä
käyttää ennen kuin Reynoldsin luku on tarpeeksi pieni. Nyt voidaan samoin ajatella
reunaehdoista, jotka tarvitaan vasta riittävän isolla Machin luvulla.
Suosituksena tässä siis annetaan ensimmäinen reunaehtopaineeseen nojaava tapa, koska sillä on myös fysikaalinen perusta. On syytä vielä kerran korostaa, että
kokoonpuristumattomuusoletuksella ∇ · V~ = 0 kyseessä ei ole oikea reunaehto,
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
47
vaan ainoastaan mielekäs tapa kiinnittää paine jossain kohtaa laskenta-aluetta. Tällä hetkellä on epäselvää onko reunaehtotyypillä sinänsä merkitystä ratkaisun stabiilisuuden kanssa. Usein käytetään ns. konvektiivista ulosvirtausehtoa, jolloin kaikki suureet ekstrapoloidaan ja paine sen sijaan kiinnitetään jossain mielivaltaisessa
pisteessä. Mikäli jatkuvuusyhtälö toteutuu eksaktisti, paineen määräämistavoilla ei
ole merkitystä. Käytännössä jatkuvuusyhtälö ei kuitenkaan toteudu eksaktisti painekorjauksen jälkeen. Tämä aiheutuu ratkaisun konvergoinnille välttämättömästä alirelaksoinnista. Onko tällöin merkitystä sillä seikalla, että ulosvirtausreuna on ’kiinteämpi’ paineen kiinnittämisen johdosta, on tällä hetkellä epäselvää. Jos ajatellaan
reunoiltaan suljetun säiliön laskemista, paine on kuitenkin pakko kiinnittää keinotekoisesti jossain kohdassa laskenta-aluetta, mikä kuvaa myös sitä, ettei paineen
antaminen jollain avoimen alueen reunalla ole varsinainen reunaehto.
2.7 Implisiittinen menetelmä Eulerin yhtälöillä
Kun Machin luku on riittävän suuri, yhtälöryhmä (2.1) voidaan ratkaista eksplisiittisellä aikaintegroinnilla. Ensimmäiset tiheyspohjaiset menetelmät olivat eksplisiittisiä. Paljon käytetty oli peruskurssilla mainittu MacCormack-menetelmä. Konstruoidaan seuraavaksi implisiittinen vaihe Eulerin yhtälöille. Ratkaisussa voidaan
käyttää avuksi karakteristisia suureita ja Jacobin matriisin A diagonalisointia. Yksidimensioisessa tapauksessa kontrollitilavuusmenetelmällä voidaan säilymisyhtälö
diskretoida seuraavasti
Vi
∆U
ˆ n+1 + F
ˆ n+1 = −Si+1/2 Fn+1 + Si−1/2 Fn+1
= −F
i+1/2
i−1/2
i+1/2
i−1/2
∆t
(2.52)
Koska vuovektori F riippuu vain ratkaistavien suureiden vektorista U, voidaan se
linearisoida seuraavasti
Fn+1 = Fn +
∂F ∆U
∂F
∂F
∆t = Fn +
∆t = Fn +
∆U = Fn + A∆U (2.53)
∂t
∂U ∆t
∂U
Jos vuossa on diffuusio-osa, niin sekin voidaan linearisoida vuovektorin suhteen,
jolloin saadaan toinen Jacobin matriisi. Tätä voidaan huomattavasti yksinkertaistaa
ja siihen palataan jatkossa.
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
48
Yhdistämällä yllä olevat saadaan
Vi
∆U
= −Si+1/2 Fni+1/2 + Si−1/2 Fni−1/2 −Si+1/2 Ai+1/2 ∆Ui+1/2 +Si−1/2 Ai−1/2 ∆Ui−1/2
∆t
{z
}
|
= Ri = explisiittinen vaihe
(2.54)
Yhtälössä esiintyy ratkaistavia suureita tilavuuksien pinnoilla i ± 1/2. Nämä arvot
voidaan lausua joko keskeisdifferenssillä tai ylävirtapainottamalla. Koska ylävirtapainotus johtaa robustiin lävistäjävaltaiseen implisiittiseen vaiheeseen, käytetään
tällä kurssilla vain sitä. Jacobin matriisi voidaan ylävirtapainottaa approksimatiivisesti ottamalla huomioon karakteristikoiden kulkusuunnat. Ensimmäisen kertaluvun diskretoinnilla (implisiittisessä vaiheessa ei juuri kannata käyttää korkeamman
kertaluvun tarkkuutta, koska se ei vaikuta lopputulokseen) Jacobin matriisi ylävirtapainotetaan seuraavasti
−
Ai+1/2 ∆Ui+1/2 = A+
i+1/2 ∆Ui − Ai+1/2 ∆Ui+1
(2.55)
missä
A+ = P |Λ+ |P −1
A− = P |Λ− |P −1
(2.56)
Yllä diagonaalimatriisit Λ± sisältävät positiiviset ja negatiiviset A:n ominaisarvot.
On huomattava, että eksplisiittisen vaiheen residuaali Ri voidaan laskea tarkemmalla paikkadiskretoinnilla, jopa keskeisdifferenssillä, vaikka implisiittinen vaihe
käsitellään ensimmäisen kertaluvun menetelmällä.
Kokoamalla yllä olevat saadaan
Vi
∆U
−
+
−
= Ri −Si+1/2 (A+
i+1/2 ∆Ui −Ai+1/2 ∆Ui+1 )+Si−1/2 (Ai−1/2 ∆Ui−1 −Ai−1/2 ∆Ui )
∆t
⇒
−∆Ui+1 Si+1/2 A−
i+1/2 + ∆Ui (I
Vi
−
+ Si+1/2 A+
i+1/2 + Si−1/2 Ai−1/2 )
∆t
−∆Ui−1 Si−1/2 A+
i−1/2 = Ri
Ottamalla käyttöön peruskurssilla olleet merkinnät
L+
x (ai ∆Ui ) ≡ ai+1/2 ∆Ui+1 − ai−1/2 ∆Ui
L−
x (ai ∆Ui ) ≡ ai+1/2 ∆Ui − ai−1/2 ∆Ui−1
(2.57)
Tämä voidaan myös kirjoittaa siistimpään muotoon:
∆t −
∆t
+
−
I+
Lx Si A+
∆Ui =
Ri
i − Lx Si Ai
Vi
Vi
(2.58)
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
49
Yhtälö (2.58) muodostaa blokkitridiagonaalisen ryhmän, kun peruskurssilla saatiin
skalaariyhtälöille aina tridiagonaalisia ryhmiä. Matriisioperaatioita voidaan huomattavasti yksinkertaistaa, jos pidetään matriisi P paikallisesti vakiona. Tällöin se
voidaan ottaa differenssioperaattoreiden ulkopuolelle
∆t
∆t −
+
−
Lx Si Λ+
P −1 ∆Ui =
Ri
P I+
i − Lx Si Λi
Vi
Vi
(2.59)
Kertomalla matriisilla P −1 ja ottamalla huomioon karakterististen suureiden määritelmä W = P −1 δU
∆t −
∆t
+
−
I+
Lx Si Λ+
∆Wi = P −1 Ri
i − Lx Si Λi
Vi
Vi
(2.60)
Karakteristisille suureille saadaan siis tridiagonaalisten yhtälöiden ryhmä, jotka voidaan ratkoa kukin erikseen. Eulerin yhtälöillä tämä vastaa skalaariyhtälön tridiagonaalista implisiittistä vaihetta ja se nopeuttaa huomattavasti laskentaa verrattuna blokkitridiagonaaliseen ratkaisuun. Yhtälöryhmä (2.58) voidaan yksinkertaistaa myös faktoroimalla se kahdeksi erilliseksi yhtälöksi, toinen pitkin positiivisia karakteristikoita ja toinen negatiivisia. Kun tähän yhdistetään eri suuntiin tehty approksimatiivinen faktorointi, saadaan LU-faktoroinnin (lower-upper) nimellä
kulkeva menetelmä, josta on useita versioita. LU-faktorointi voidaan tulkita myös
eräänlaiseksi Gauss-Seidel -iteraatioksi, josta tulee myöhemmin puhetta. Kun otetaan vielä huomioon, että matriisi P on hajotettavissa osatekijöihinsä, voidaan implisiittinen menetelmä Eulerin yhtälöillä purkaa osamatriisioperaatioihin, joita tulee
useita. Aalto-yliopistossa kehitetyssä FINFLO-ohjelmassa käytetään diagonaalisesti dominoivaa LU-faktoroinnin versiota, jossa eri koordinaattisuunnissa tehtävien
matriisioperaatioiden lukumäärä nousee yhteensä yli viidenkymmenen. Operaatiot
ovat nopeita ja ne voidaan myös ohjelmoida kompaktissa muodossa. Eulerin yhtälöiden implisiittinen ratkaisu ei Jacobin matriisin diagonalisointiominaisuuksien
vuoksi ole siis niin hankala operaatio kuin yhtälön (2.54) perusteella saattaisi näyttää.
Diffuusio-osa käsitellään erikseen ja se voidaan joko faktoroida erikseen konvektioosasta tai yhdistää siihen. Ottaen huomioon että diffuusiovuo paikassa i + 1/2 on
riippuvainen vain kahdesta laskentapisteestä
Fv ,i+1/2 = Fv (Ui , Ui+1 )
(2.61)
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
50
se voidaan linearisoida kaikkien argumenttiensa suhteen
Fv n+1
,i+1/2
=
Fv n,i+1/2 +
∂Fv
∂Ui
!
∂Fv
∆Ui +
∂Ui+1
i+1/2
!
∆Ui+1 + O(∆U2 ) (2.62)
i+1/2
Liikemääräyhtälön diffuusio-osan täydellinen linearisointi johtaa varsin täyteen ja
monimutkaiseen matriisiin. Joskus sitäkin käytetään, mutta yleensä diffuusiovuon
linearisointi yksinkertaistetaan. Se voidaan kaikissa tapauksissa perustaa kokoonpuristumattomuusoletukseen. Tällöin kaikkien yhtälöiden diffuusiovuot voidaan implisiittistä vaihetta varten approksimoida muodossa
Fv,i+1/2 = −αi+1/2
Ui+1 − Ui
∆x
(2.63)
ja käyttäen linearisointia pisteessä i + 1/2
n
Fv n+1
,i+1/2 = Fv ,i+1/2 +
αi+1/2
αi+1/2
∆Ui −
∆Ui+1
∆x
∆x
(2.64)
sijoittamalla tämä diskretoituun yhtälöön
Vi
∆Ui
n+1
= −Si+1/2 Fv n+1
,i+1/2 + Si−1/2 Fv ,i−1/2
∆t
saadaan
Vi
αi+1/2
αi+1/2
αi−1/2
αi−1/2
∆Ui
= Ri −Si+1/2 (
∆Ui −
∆Ui+1 )+Si−1/2 (
∆Ui−1 −
∆Ui )
∆t
∆x
∆x
∆x
∆x
⇒
−∆Ui+1 Si+1/2
αi+1/2
αi+1/2
αi−1/2
Vi
+ ∆Ui (
+ Si+1/2
+ Si−1/2
)
∆x
∆t
∆x
∆x
αi−1/2
= Ri
−∆Ui−1 Si−1/2
∆x
(2.65)
Periaatteessa diffuusiokerroin α on eri suuruinen eri yhtälöille ja massayhtälöllä diffuusiota ei ole ollenkaan. Jos tämä seikka halutaan ottaa huomioon ja silti selvitä
tridiagonaalisilla yhtälöillä, vaihtoehdoksi jää diffuusion ja konvektion faktoroiminen toisistaan erilleen. Yleisemmin käytetty tapa on korvata diffuusiokerroin suurimmalla yhtälöissä esiintyvällä diffuusiokertoimella ja käyttää kaikille yhtälöillä
sitä. Tämän vaikutus on sama kuin alirelaksaatiolla, koska muihin yhtälöihin tulee
tällöin lisätyksi numeerista vaimennusta implisiittisessä vaiheessa (lisätty vaimennus ei tietenkään vaikuta ratkaisuun). Merkitsemällä k = αmax /∆x ja ottamalla
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
51
huomioon yhteys k = P kP −1 voidaan konvektio-osan ja diffuusio-osan Jacobin
matriisit yhdistää
A± = P (|Λ±| + kI)P −1
(2.66)
Määrittelemällä Jacobin matriisi näin, voidaan yhtälöä (2.58) käyttää myös kitkallisen virtauksen yhtälöiden ratkaisun implisiittisenä vaiheena.
Edellä oletettiin tilanne yksidimensioiseksi. Asia ei juuri monimutkaistu sovellettaessa kontrollitilavuusmenetelmää useammassa dimensiossa. Tällöin ratkaisevassa asemassa on kunkin laskentatilavuuden seinällä oleva paikallisesti määritelty suorakulmainen koordinaatisto. Muuntamalla yhtälöt tähän koordinaatistoon, ne
säilyvät muodoltaan samanlaisina kuin karteesisessa koordinaatistossa. Karakteristiset suureet voidaan myös määritellä tässä koordinaatistossa, kun otetaan käyttöön
pintaa vastaan kohtisuora nopeus
u¯ = ~n · V~ = nx u + ny v + nz w
(2.67)
Korvaamalla tässä luvussa olevissa yhtälöissä nopeus u skaalatulla kontravarian-
a)
b)
u
u
u
T
Kuva 2.5: (a) Kaksidimensioisen laskentakopin pintaa vasten kohtisuorassa koordinaatistossa lausutut nopeuskomponentit, (b) kolmidimensioisessa tapauksessa pinnan suuntaiset
komponentit voidaan valita vapaasti.
tilla nopeuskomponentilla u¯, ne säilyvät muodollisesti ennallaan. Kaksidimensioisessa tapauksessa voidaan yksikäsitteisesti määrittää myös tangentiaalinopeus uT
kuten kuvassa 2.5. Kolmidimensioisessa tilanteessa on kaksi toisiaan vasten kohtisuorassa olevaa kopin pinnan suuntaista nopeuskomponenttia, jotka eivät ole yksikäsitteisesti määritellyt. Mikä tahansa valinta on käyttökelpoinen. Uudet paikalliset
nopeuskomponentit saadaan globaalissa karteesisessa koordinaatistossa lausutuista
2.7. IMPLISIITTINEN MENETELMÄ EULERIN YHTÄLÖILLÄ
52
nopeuskomponenteista muunnosmatriisin avulla. Ratkaisua varten kannattaa yhdistää muunnokseen kaikki primitiivisuureet, joista vain nopeuskomponentit todellisuudessa muuntuvat.
(2.68)
u
¯ = Tu
missä u¯ on pintaa vasten kohtisuorassa koordinaatistossa lausuttujen primitiivisuureiden muodostama pystyvektori. Kaksidimensioisessa tapauksessa



T =

1 0
0
0 nx ny
0 −ny nx
0 0
0
0
0
0
1





(2.69)
Primitiivisuureet saadaan käänteismatriisin T −1 avulla. Kolmidimensioisessa tapauksessa on löydettävä kaksi pinnan normaalia vasten kohtisuoraa vektoria. Vaikka näitä on ääretön määrä, niiden yksinkertainen määrittely on hankalaa. Valinnassa
on varottava, ettei matriisia (2.69) vastaava matriisi ole singulaarinen millään kopin
pinnan orientaatiolla. On myös huomattava, että pinnan normaalista puhuttaessa tarkoitetaan aina yksikkönormaalia, jolloin muunnoksissa nopeuden itseisarvo säilyy.
Myös muunnosmatriisin determinantti on aina = 1. Jacobin matriisi voidaan saattaa
vielä kaikkeen yleisimpään muotoon
A± = MT L(|Λ± | + kI)L−1 T −1 M −1
(2.70)
Matriisi saadaan siis jaetuksi kuuden matriisin ja yhden lävistäjämatriisin tuloksi. Kaikki matriisit ovat suhteellisen yksinkertaisia alkuperäiseen verrattuna. Kuten edellä mainittiin, on vielä mahdollista tehdä faktorointi positiivisten ja negatiivisten karakteristikoiden mukaan, jolloin lopullisten matriisien määrä kasvaa jo
toiselle kymmenelle. Jos ajatellaan implisiittistä vaihetta, jossa matriisilla A kerrotaan eksplisiittisen vaiheen residuaalia, niin yhtälöstä (2.70) nähdään ensin residuaali muunnettavan primitiivisuureiden avulla lausutuksi, sitten kontravarianttien (tarkasti ottaen skaalattujen kontravarianttien), ja sen jälkeen karakterististen
suureiden avulla lausutuksi. Tässä muodossa yhtälöistä on tullut skalaarimuotoisia
ja implisiittiset operaatiot suoritetaan. Tämän jälkeen tehdään muunnokset toiseen
suuntaan. On huomautettava, että implisiittinen vaihe voidaan suorittaa suoremminkin matriisiin A pohjautuen, mutta tällöin se on paljon monimutkaisempi.
2.8. AJAN SUHTEEN TARKKA LASKENTA
53
Jos yhtälöt käsitellään kokoonpuristumattomina yllä oleva alunperin blokkitridiagonaalinen ryhmä redusoituu skalaariyhtälöiden ryhmäksi, joilla on vain heikko riippuvuus toisistaan. Yleensä yhtälöt ratkaistaankin tällöin irrallaan toisistaan.
Kun paineen ja muiden termodynaamisten suureiden välillä ei ole kytkentää, karakteristisia nopeuksiakin tulee vain yksi ja painetta ei voida linearisoida. Viimeksi mainitusta poikkeuksen tekee näennäispuristuvuuskeino, jossa matriisioperaatiot
vastaavat edellä esitettyjä, mutta modifioiduilla matriiseilla. Skalaariyhtälöiden linearisointi käy hyvin esille Burgersin yhtälön avulla. Siinä tapauksessa vuo on
1
∂u
f = u2 − α
2
∂x
(2.71)
ja
U = u; A+ = max(u, 0) +
α
α
; A− = max(−u, 0) +
∆x
∆x
(2.72)
Joten implisiittinen vaihe saadaan seuraavaan muotoon
−∆Ui+1 Si+1/2 [max(−u, 0) +
+∆Ui [I
α
]i+1/2
∆x
α
α
Vi
+ Si+1/2 (max(u, 0) +
)i+1/2 + Si−1/2 (max(−u, 0) +
)i−1/2 ]
∆t
∆x
∆x
−∆Ui−1 Si−1/2 [max(u, 0) +
α
]i−1/2 = Ri
∆x
(2.73)
Tässä olevat ∆U:n kertoimet ovat tärkeässä asemassa painekorjausmenetelmässä ja
niihin ja niiden merkitsemistapaan ja Jacobin matriisin johtoon palataan seuraavissa
luvuissa.
2.8 Ajan suhteen tarkka laskenta
Peruskurssilla oli esillä, että kaikki MUSCL-kaavaan pohjautuvat vuon laskentatavat voidaan integroida Lax-Wendroff-tyyppisellä toisen kertaluvun aikaintegroinnilla. Yksinkertainen eksplisiittinen Eulerin menetelmä antaa huonoja tuloksia ja
on tasapainotilan tyyppisiin tehtäviin tehoton lyhyen aika-askeleen vuoksi. Toisaalta taas Lax-Wendroff-integrointi tuottaa aika-askeleen pituudesta riippuvan ratkaisun, mikä ei sovellu tasapainotilan laskentaan.
2.8. AJAN SUHTEEN TARKKA LASKENTA
54
Implisiittisellä menetelmällä päästään aika-askeleen rajoituksista irti. On silti muistettava, että usein CF L = 1 on kuitenkin tarkkuuskriteeri, jota ei ainakaan kovin suuressa osassa laskenta-aluetta saa huomattavasti ylittää. Mikäli pitkää
aika-askelta halutaan kuitenkin hyödyntää, mikä tasapainotilan tehtävässä tietysti
on tarkoituskin, tulee yhtälöiden epälineaarisuus ongelmaksi. Implisiittiset vaiheet
(2.65) ja (2.73) perustuvat linearisointiin ja tällöin jää epälineaarisuudesta aiheutuvaa virhettä lopputulokseen. Se näkyy mm. Burgersin yhtälössä ylilyöntinä epäjatkuvuuskohdassa. Epälineaarisuuden sisältämä virhe saadaan pois suorittamalla
aika-askeleen sisällä iterointia (kts. peruskurssi). Iteroinnissa on jokainen aika-askel
käsiteltävä kuten tasapainotilan tehtävä ja siirrettävä aikaderivaattatermi residuaaliosaan. Tarkastellaan asiaa yksidimensioisella esimerkillä. Konvektioyhtälö, esimerkiksi Burgersin yhtälö, voidaan diskretoida implisiittisellä Eulerin menetelmällä
Uin+1 − Uin
n+1
n+1
= −Fi+1/2
+ Fi−1/2
(2.74)
∆t
Mikäli halutaan iteroida, on linearisointi suoritettava olemassa olevan uuden ajanVi
hetken suureen Uin+1,ν+1 suhteen, jossa yläindeksi ν viittaa iteraatiokierrokseen.
Ensimmäisellä kierroksella sijoitetaan supennut arvo edelliseltä ajanhetkeltä Uin+1,1 =
Uin . Tällöin aikaderivaattatermiksi tulee Eulerin menetelmällä
Ut =
Uin+1,ν+1 − Uin
U n+1,ν + ∆Uin+1,ν − Uin
= i
∆t
∆t
(2.75)
Jo tunnetut termit voidaan yhdistää residuaaliin joksi saadaan
Riν = −Vi
Uin+1,ν − Uin
n+1,ν
n+1,ν
− Fi+1/2
+ Fi−1/2
∆t
(2.76)
vuotermit lasketaan jokaisella iteraatiokierroksella käyttäen edellisen iteraatiokierroksen arvoja. Kun iteraatio on supennut, residuaalin arvoksi tulee nolla ja implisiittisen menetelmän linearisoinnista aiheutuva virhe on nolla. Iteraatiokierrosten
välillä päivitetään ratkaisuvektorin arvoa
Uin+1,ν+1 = Uin+1,ν + ∆Uin+1,ν
(2.77)
ja lasketaan sen jälkeen uusi residuaali. Implisiittinen vaihe saadaan yhtälöstä (2.65),
ainoastaan residuaalin määritys muuttuu. Yleensä jo muutama, joskus jopa vain
kaksi, iteraatiokierrosta aika-askeleen sisällä parantaa tulosta huomattavasti. Kuitenkin monimutkaisessa tapauksessa turbulentilla virtauksella on mahdollista, että
2.9. EULERIN YHTÄLÖIDEN TARKASTELUA
55
joudutaan ottamaan jo pelkän stabiilisuuden vuoksi kymmeniä iteraatiokierroksia /
aika-askel, mikä tekee ajan suhteen tarkoista laskuista erittäin aikaa vieviä.
Aika-askeleen sisällä tapahtuva iterointi on myös mahdollista muilla kuin yksinkertaisella Eulerin menetelmällä. Peruskurssilla oli esimerkkinä kolmen aikatason
integrointi. Tällöinkin siirretään aikaderivaattatermi residuaaliin. Joskus fysikaalinen aika-askel on niin pitkä, että aika-askeleen sisäistä iterointia on tarvetta alirelaksoida. Tämä käy päinsä käyttämällä ns. näennäisaika-askelta. Tällöin varsinaisen aikaderivaatan lisäksi käytetään aika-askeleen sisäistä näennäisaikaintegrointia.
Yhtälö voidaan kirjoittaa muotoon
Uτ + Ut + F(U)x = 0
(2.78)
jolloin linearisoinnissa saadaan fysikaalisen aika-askeleen ∆t lisäksi näennäisaikaaskel ∆τ implisiittisen vaiheen diagonaalille. Pienentämällä sopivasti näennäisaikaaskelta saadaan ratkaisua alirelaksoiduksi. Tällöin stabiilisuus paranee, mutta tarvittavien iteraatiokierrosten määrä kasvaa. Myös näennäisaika-askeleen yhteydessä
voidaan käyttää korkeamman kertaluvun diskretointeja fysikaaliselle aikaderivaatalle Ut . Termille Uτ käytetään aina implisiittistä Eulerin menetelmää.
2.9 Eulerin yhtälöiden tarkastelua
Edellä on tarkasteltu Eulerin yhtälöiden ominaisuuksia, joiden kokemuksen mukaan tiedetään noudattavan Navier–Stokes-yhtälöiden ominaisuuksia. Tämän voidaan katsoa aiheutuvan siitä, että teknillisissä sovelluksissa globaali Reynoldsin luku on aina suuri. Tilanne on myös oletettu ajasta riippuvaksi, mutta erillinen tasapainotilan tarkastelu ei toisi esimerkiksi reunaehtoihin mitään uutta. Kokoonpuristuvia
yhtälöitä ratkottaessa lisäksi aikaderivaatta on yhtälöissä muodossa tai toisessa mukana.
Lähdettäessä ratkomaan virtausta yhtälöiden ∇ · V~ = 0 ja
D V~
1
+ ∇p = ~b + ν∇2 V
Dt
ρ
pohjalta, tilanne muuttuu. Paine on käsiteltävä lähdeterminä ja karakteristisia nopeuksia on vain yksi. Reunaehtojen määrä myös muuttuu ja paine ei määräydy
yksikäsitteisesti. Laskennan suorittajan on silloin ymmärrettävä oletuksen merkitys. Reunaehtoja voidaan käyttää painetason määritykseen ja reunojen fysikaalinen
2.9. EULERIN YHTÄLÖIDEN TARKASTELUA
56
vaikutus todellisuudessa tapahtuu karakteristikoiden määrittelemällä tavalla. Mikäli ratkaisussa tiheys riippuu paineesta, myös ratkaisumaailma muuttuu hyperboliseksi ratkaisumenetelmästä riippumatta. Tällöin reunaehdot myös laskentamallissa
määräytyvät karakterististen suuntien avulla, oli itse ratkaisutapa painekorjausmenetelmä tai jokin muu. Käytännössä tietynlaiset, oikeammin tilanteelle ∇ · V~ = 0
laaditut reunaehdot, saattavat silti toimia. Tämä edellyttää, että virtauksen Machin
luku on riittävän pieni.
2.9. EULERIN YHTÄLÖIDEN TARKASTELUA
57
• Eulerin yhtälöillä
∂U ∂F ∂G ∂H
+
+
+
=0
∂t
∂x
∂y
∂z
(2.79)
on edellä olevan yksikäsitteisen säilymismuodon lisäksi primitiivimuoto
ja karakteristinen muoto, jotka voidaan valita usealla tavalla.
• Hyperbolisilla yhtälöillä on aina similaarisuusmuunnos A = P ΛP −1.
• Karakteristiset nopeudet saadaan helpoiten sopivan primitiivisuureiden
avulla lausutun yhtälön avulla
|A˜ − λI| = 0
(2.80)
• Muunnos konservatiivisista suureista U primitiivisiin u
M=
∂U
∂u
(2.81)
• Similaarisuusmuunnos
A˜ = M −1 AM
ja
˜ −1
A = M AM
(2.82)
• Matriisin L−1 vaakarivit ovat primitiivisuureiden suhteen muodostetun
Jacobin matriisin A˜ vasempia ominaisvektoreita.
L−1 A˜ = ΛL−1
(2.83)
˜ oikeita ominaisvektoreita
• Matriisin R pystyrivit ovat A:n
˜ = RΛ
AR
(2.84)
• R = L ja eri ominaisvektorit ovat ortogonaalisia.
• Hyperboliset yhtälöt voidaan suureiden δW = P −1δU
L−1 M −1 δU = L−1 δu avulla kirjoittaa karakteristiseen muotoon.
=
2.9. EULERIN YHTÄLÖIDEN TARKASTELUA
58
• Täydellisillä Eulerin yhtälöillä sisään- ja ulosvirtausreunaehtojen määrä
pohjautuu karakteristikoiden suuntiin.
• Navier-Stokes yhtälöillä ja mahdollisesti tehdyillä lisäoletuksilla reunaehtojen määritys on hankala ja lähinnä kokemusperäinen tehtävä.
• Reunaehdot voidaan jakaa fysikaalisiin ja numeerisiin ehtoihin. Eulerin
yhtälöillä ja Navier–Stokes yhtälöillä on toisistaan poikkeavat ’slip’- ja
’no-slip’-ehdot kiinteillä pinnoilla.
• Implisiittiset ratkaisut perustuvat vuovektorin linearisointiin
Fn+1 = Fn + A∆U
(2.85)
• Jacobin matriisin diagonalisointiominaisuuksia voidaan käyttää tehokkaasti hyväksi implisiittisessä ratkaisussa.
• Diffuusiovuon linearisointi pohjautuu yleensä approksimaatioon
Fv,i+1/2 = Fv (Ui , Ui+1 )
(2.86)
ja se voidaan myös yhdistää kitkattoman osan Jacobin matriisiin.
• Pyöritysmatriisilla T voidaan suureet muuntaa paikallisesti kopin pintaa
vasten kohtisuoraan koordinaatistoon.
• Yleinen Jacobin matriisi Eulerin yhtälöiden vuovektorille
A = MT LΛL−1 T −1 M −1
• Burgersin yhtälöllä ja skalaariyhtälöillä Jacobin matriisi on yksinkertainen.
• Paine ei ratkea yksikäsitteisesti, jos tiheys ei riipu paineesta. Painegradientti on tällöin lähdetermi ja yhtälöille jää vain yksi karakteristinen
nopeus dx/dt = u. Yhtälöiden luonne siis muuttuu, kun Ma → 0.
• Aika-askeleen sisällä tehty iterointi parantaa implisiittisen menetelmän
tulosta, koska epälineaarisuuteen liittyvät virheet saadaan eliminoiduksi.
Päivitetty 23.1.2013
59
3 Ratkaisumenetelmien kertaus
kontrollitilavuusmenetelmällä
(Ferziger-Peric 21-84 ja kalvot)
60
4 Yksidimensioinen
painekorjausmenetelmä
4.1 Taustaa
Painekorjausmenetelmän varhaishistoria ei tätä kirjoitettaessa ole täysin selvillä.
Ensimmäinen teknillisissä sovelluksissa esiintyvä painekorjausmenetelmä on Harlowin
ja Welchin Los Alamosissa 60-luvun puolivälissä kehittämä marker and cell-menetelmä (MAC), josta oli artikkelit Physics of Fluids-lehdessä ja myöhemmin Scientific American-lehdessä. Viimeksi mainittu oli innoittajana mm. Seppo Laineen väitöskirjatyössä, joka 1970-luvun alussa tehtynä ei jäänyt kovin monia vuosia jälkeen
yleisestä kehityksestä. Laineen väitöskirjassa tosin käytettiin virtafunktio–pyörteisyys-menetelmää, joka siihen aikaa oli vaihtoehto primitiivisuureiden käytölle.
Nykyisin käytetään usein nimitystä painepohjaiset ratkaisumenetelmät (pressurebased methods), jotka eroavat luonteeltaan luvussa 2 esitetystä täydellisten yhtälöiden ns. tiheyspohjaisista menetelmistä. Klassista painekorjausmenettelyä on pyritty
tehostamaan ns. kytketyllä ratkaisulla, jossa jatkuvuus ja liikemääräyhtälöt ratkaistaan yhtä aikaa. Tuloksena saadaan hyvin monimutkainen Jacobin matriisi, joka
vaatii tehokkaan yhtälöryhmien ratkaisijan.
Ensimmäiset varsinaiset virtaussimuloinnit olivat kaksidimensioisia. (Kaikkein
vanhinta alan kehitystä edustaa John von Neumannin johdolla tehdyt yksiulotteiset shokin etenemisprobleemat, mutta niitä ei voida pitää varsinaisina virtaussimulointeina). Tietokoneiden kapasiteetti rajoitti laskennan kahteen dimensioon ja alhaiselle Reynoldsin luvulle. Jokainen virstanpylväs tietokoneiden kehityksessä on
näkynyt virtausprobleeman koossa. CDC-7600 oli 60-luvun lopussa oman aikansa
’superkone’ ja Suomeen hankittu Univac-1108 hetken aikaa Euroopan tehokkain.
Termi supertietokone otettiin käyttöön Cray-1 koneen myötä vuonna 1976, minkä
4.2. VALMISTAVA ESIMERKKI
61
jälkeen laskennallinen virtausmekaniikka lähti siihen nousuun, jossa se on vieläkin.
Tekniikan alueella painekorjausmenetelmää sovelletaan etupäässä ns. teollisuusprosessien (industrial flows) simulointiin. Perinteisesti menetelmää on kehitetty piireissä, joilla ei ole ollut varaa tehokkaimpiin tietokoneisiin. Jos ajatellaan teknisiä sovelluksia, tunnetuin kehittäjäryhmä toimi Imperial Collegessa Lontoossa professori Spaldingin johdolla. Monilla nykyisillä kaupallisilla koodeilla on juurensa 70-luvulla Imperial Collegessa tehdyissä väitöskirjoissa. Algoritmi on tutkijoiden mukana levinnyt Imperial Collegesta ympäri maailmaa. Näin syntyivät mm.
TASCflow- ja FLUENT-ohjelmat. Vanhimpia kaupallisia virtausratkaisijoita puolestaan on Spaldingin kehittämä PHOENICS. Supertietokoneita on etupäässä käytetty lento- ja puolustusvälinetekniikan sovelluksiin sekä toisaalta sääennustusteiden tekemiseen. Tietokonekapasiteetin puute on ilmeisesti eräs syy miksi riittävän
tiheisiin laskentaverkkoihin, kappaleen realistiseen muotoon ja jopa diskretoinnin
tarkkuuteen painekorjausmenetelmän yhteydessä kiinnitettiin kunnolla huomiota
vasta 1990-luvulle tultaessa, jolloin tehokkaita työasemakoneita tuli markkinoille
jo kohtuullisella hinnalla.
Painekorjausta tai vastaavaa menettelyä on käytetty myös muissa kuin teknisissä
sovelluksissa, esimerkiksi meteorologiassa ja turbulenssitutkimuksessa. Luvussa13
tullaan osoittamaan, että liikemääräyhtälöstä saadaan suoraan Poisson-tyyppinen
yhtälö paineelle ilman mitään oletuksia diskretointitavasta. Meteorologit käyttävät
painetta vastaavalle suureelle saadusta yhtälöstä nimitystä Helmholz-yhtälö. Koska menettelytapa on täysin yleinen, pikemminkin eräänlainen strategia, kuin yksittäinen menetelmä, sen ’keksijästä’ on vaikea saada selkoa. Käytössämme oleviin
CFD-kirjoihinkaan vieraiden alueiden tiedot eivät helposti tule mukaan.
4.2 Valmistava esimerkki
Painekorjausmenetelmä olisi kuitenkin voitu oikeastaan keksiä jo ennen tietokoneiden aikakautta, jolloin tehtiin suuriakin käsilaskentaan perustuvia analyysejä
esimerkiksi rajakerrosyhtälöillä tai karakteristikamenetelmällä. Kaiken todennäköisyyden mukaan myös tasapainotilan virtausta yksidimensioisten putkien muodostamassa verkostossa laskettiin mitoitustarkoituksessa. Putkiverkko voi olla kaupungin
4.2. VALMISTAVA ESIMERKKI
62
vesi- tai viemäriverkko, jossa eri korkeuksilla olevia säiliöitä yhdistetään toisiinsa
putkien avulla. Putkissa muodostuu toisaalta painehäviöitä ja niihin on sijoitettava
sopiviin kohtiin pumppuja näiden voittamiseksi. Jos unohdetaan korkeuspainehäviöt saadaan yksinkertaisimmalla tavalla virtaus kahden pisteen i ja j välillä yhteydestä
1
Kij ρuij |uij | = pi − pj
2
(4.1)
uij
Pi
Pj
missä Kij on noodien i ja j välinen virtausvastuskerroin. Tässä kaikkein yksinkertaisimmassa mallinnuksessa vastuskertoimeen summataan välillä olevien toimilaitteiden tai putken mutkien kertavastukset ja putken seinämän kitka. Sekä kertavastuksille että seinämäkitkalle on jo kauan ollut saatavilla mittauksiin perustuvaa
tietoa. Esimerkkeinä voidaan mainita kuuluisa venäläinen Idelchikin kirja kertavastuksista ja Moodyn kitkakerroin-käyrästö, joka on toisen maailmansodan ajalta.
Yhtälön (4.1) ongelmana on pinta-alaltaan muuttuva putki, josta aiheutuva liikemäärän vuotermi pitäisi myös yhdistää vastuskertoimeen Kij . Parempi tapa on
mallintaa yhtälöt aidosti yksidimensioisina liikemäärän vuotermin kanssa, kuten
jatkossa kohdassa 4.5 tehdään. Usein yhtälön (4.1) tarkkuus riittää ja sitä on käytetty putkiverkkojen paine- ja virtausjakautumien laskennassa. Ratkaisutavoista ei
ole tarkkaa tietoa, mutta kyseinen yhtälö saattaisi olla pohja seuraavassa esitetylle ’teknikkotasoiselle’ laskentasysteemille. (Ratkaisutapa sopisi myös hyvin jonkun
sähköinsinöörin keksittäväksi, koska putkiverkko voidaan korvata sähköisellä analogialla ja samaa menetelmää voidaan käyttää sähköverkkojen laskentaan).
Jos tarkastellaan kuvan 4.1 yksinkertaista putkiverkkoa, voidaan helposti havaita, että nopeudet ja sen avulla massavirrat ratkeaisivat, jos paineet tunnettaisiin numeroiduissa noodipisteissä. Yhtälö (4.1) on tavallaan liikemääräyhtälö, vastaten yhtälöä (1.45). Paine-ero on siinä lähdeterminä ja se tulee määritetyksi jatkuvuusyhtälön kautta. Jos meillä on käytössämme oikeat paineet, yhtälöstä (4.1) ratkeaa sellaiset nopeudet, että jatkuvuusyhtälö samalla toteutuu. Painekorjauksen idea perustuu
siihen, että jatkuvuusyhtälön avulla korjataan paineita, kunnes iterointi suppenee tilanteeseen, jossa sekä jatkuvuusyhtälö että liikemääräyhtälö toteutuvat. Ratkaisua
4.2. VALMISTAVA ESIMERKKI
1
63
3
7
6
5
4
Kuva 4.1: Yksinkertainen putkiverkko.
varten painehäviöyhtälö kannattaa kirjoittaa tässä tapauksessa muotoon
1 ′
K m
˙ ij |m
˙ ij | = pi − pj
2 ij
(4.2)
missä Kij′ = Kij /ρSij2 on eräänlainen dimensiollinen häviökerroin, m
˙ ij pisteiden i
ja j välinen massavirta sekä Sij putken poikkipinta-ala. Kuhunkin painenoodiin eli
putkiverkon solmuun liittyy massatase
X
(4.3)
m
˙ ij = 0
j6=i
Massatase määrittelee välillisesti paineen. Kannattaa myös huomata, että jos paineero korvataan jännitteellä U, massavirta sähkövirran voimakkuudella I ja merkitään
˙ ij |, saadaan sähköverkkoa kuvaavat yhtälöt U = RI ja
R = 12 Kij′ |m
P
j6=i Iij
= 0.
Miten jatkuvuusyhtälöstä saadaan paine tai vaihtoehtoisesti vaikkapa sähköinen
potentiaali? Periaatteessa voitaisiin linearisoida yhtälöt (4.2) ja (4.3) ja ryhtyä ratkaisemaan syntynyttä yhtälöryhmää. Tämä on kappaleessa 4.1 mainitun kytketyn
ratkaisun perusidea. On osoittautunut kuitenkin oivalliseksi keinoksi ratkaista massavirta (tai nopeus) kahdessa vaiheessa. Ensiksi pidetään painetta vakiona ja käytetään edellisen kierroksen arvoja yhtälöä (4.2) ratkaistaessa. Sen jälkeen käytetään
massatasetta hyväksi ja ratkaistaan painekorjaus. Tämän avulla saadaan myös massavirtakorjaus, jonka jälkeen jatkuvuusyhtälö (4.3) toteutuu eksaktisti. Liikemääräyhtälöön (4.2) muodostuu korjauksen jälkeen virhettä ellei massatasevirhe ollut
= 0. Toistamalla sykli saadaan lopulta kumpikin yhtälö toteutumaan tarkasti. Tässä
tapauksessa saadaan yksinkertainen liikemääräyhtälö ratkaistua tarkasti
q
m
˙ ∗ij = sign(pni − pnj ) 2|pni − pnj |/Kij′
(4.4)
4.2. VALMISTAVA ESIMERKKI
64
missä n viittaa edellisen kierroksen arvoihin, m
˙ ∗ij on massavirran uusi arvo ja funktio sign(pi − pj ) saa paineiden erotuksen etumerkin. Varsinaiset virtausyhtälöt (yksidimensioisetkin) ovat epälineaarisia useamman massavirran (tai nopeuden) arvon
suhteen. Tällöin ainoaksi keinoksi jää linearisointi. Niin voidaan tehdä nytkin
1
˙ nij |m
˙ nij | + (pni − pnj )]/(Kij′ |m
˙ nij |) = Rij /(Kij′ |m
˙ nij |)
∆m
˙ ij = [− Kij′ m
2
(4.5)
missä Rij on yhtälön (4.2) määrittelemä residuaali. Tämän jälkeen uusi massavirta
saadaan yhteydestä m
˙ ∗ij = m
˙ nij + ∆m
˙ ij . Voidaan havaita, että linearisoidussa yhtälössä on nollalla jako mahdollista, mikä täytyy estää. Aiemmin on ollut esillä keino
käyttää aikaderivaattatermiä liikemääräyhtälössä.
Tässä tapauksessa saadaan siis massavirta ratkaistuksi joko tarkasti tai approksimatiivisesti. On syytä todeta, että yhtälöön (4.5) perustuva tapa on todennäköisesti
nopeampi kuin yhtälö (4.4). Tämä johtuu siitä, että neliöjuuren otto on laskennallisesti raskas ja myös siitä, että tulos tässä vaiheessa on joka tapauksessa approksimatiivinen, jos käytössä ollut painekenttä ei ollut tarkka.
Merkitään nyt sellaista uutta massavirtaa, joka toteuttaa jatkuvuusyhtälön m
˙ ij :llä
ja painehäviöyhtälöstä (4.2) olemassa olevalla painekentällä ratkaistua massavirtaa
m
˙ ∗ij :llä. Tällöin
m
˙ ij = m
˙ ∗ij + m
˙ ′ij
(4.6)
Painekorjausmenetelmän eräs vakiintuneimmista tavoista on merkitä ’*’-suureilla
arvoja, jotka eivät ole lopullisia, vaan iteraatiosyklin jonkin vaiheen välituloksia.
Tässä tapauksessa yhtälön (4.2) ratkaisun jälkeisiä. Lähes yhtä vakiintunut tapa on
käyttää pilkullisia arvoja korjattaessa paineita ja nopeuksia jatkuvuusyhtälön avulla. Sijoittamalla korjattu massavirta m
˙ ij yhtälön (4.3) mukaiseen massataseeseen
saadaan
X
j6=i
X
m
˙ ′ij = −
j6=i
m
˙ ∗ij = −∆m
˙ ∗i
(4.7)
missä ∆m
˙ ∗i on noodiin i liittyvä massataseen virhe. Yhtälö siis yksinkertaisesti määrittelee massavirtakorjausten summaksi saman kuin massataseen virhe, kuten pitääkin. Linearisoimalla yhtälö (4.2) ja olettamalla yhtälön residuaali nollaksi, saadaan
Kij′ |m
˙ ∗ij |m
˙ ′ij = p′i − p′j
(4.8)
4.2. VALMISTAVA ESIMERKKI
65
Sijoittamalla tästä saatu massavirtakorjaus m
˙ ′ij yhtälöön (4.7) saadaan paineiden
korjauksille p′i yhtälö
p′i − p′j
= −∆m
˙ ∗i
′
∗
K
|
m
˙
|
ij
j6=i ij
X
(4.9)
Jokaiselle painenoodille i voidaan kirjoittaa yllä olevan muotoinen yhtälö. Kun massatasevirheet tunnetaan, voidaan paineet, jotka toteuttavat jatkuvuusyhtälön, ratkaista saadusta yhtälöryhmästä (4.9). Tämä yksinkertainen painekorjausalgoritmi
voidaan pukea seuraavaan muotoon:
1. Edellisen iteraatiokierroksen painekentällä ratkaistaan liikemääräyhtälöä vastaavasta painehäviöyhtälöstä (4.2) massavirrat joko yhtälöstä (4.4) tai (4.5).
Ensimmäisellä iteraatiokierroksella voidaan valita reunaehtopaineita lukuunottamatta pi = 0. On syytä muistaa, että painekorjauksesta saadaan vain
paine-erot, jos tilayhtälöä ei ole käytössä. Sama koskee sähköistä potentiaalia, jos menetelmää käytetään sähköverkkojen ratkaisuun. Reunaehtopaineinakin siis käytetään paine-eroja johonkin referenssipaineeseen, esimerkiksi
ilmakehän paineeseen.
2. Lasketaan noodikohtaiset massatasevirheet ∆m
˙ ∗i =
P
j6=i
m
˙ ∗ij . Jos on saavu-
tettu riittävä tarkkuus (∆m
˙ ∗i on annetun kriteerin alapuolella kaikilla i:n arvoilla), iteraatio lopetetaan.
3. Mikäli massatasevirhettä oli jäljellä ratkaistaan painekorjausyhtälö (4.9).
4. Korjataan paineet yhtälöstä pi = p∗i + p′i ja massavirtakorjaukset yhtälöstä
(4.8). Päivitetään myös massavirrat yhteydestä (4.6). Palataan kohtaan 1.
Painekorjausmenetelmä yksinkertaisessakin muodossa saattaa tuntua mystiseltä ’reseptiltä’. Jos ajattelemme kahden epälineaarisen yhtälön (4.2) ja (4.3) ratkaisua, niin ensimmäisenä mieleen tuleva keino on yhtälöiden linearisointi ja syntyvän yhtälöryhmän ratkaisu eli aiemmin mainittu kytketty ratkaisu. Käytännössä on
osoittautunut, että syntyvä yhtälöryhmä ei ole yhtä hyvin käyttäytyvä kuin painekorjausyhtälö. Yksinkertaisempi ja monessa suhteessa parempi keino on suorittaa
liikemääräyhtälön ratkaisu kahdessa vaiheessa. Ensin pidetään paineita vakioina,
ikään kuin yhtälön lähdetermeinä. Toisessa vaiheessa taas ratkaistaan painetta ja
4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA
66
paineen muutoksen aiheuttamaa massavirran muutosta. Liikemääräyhtälön linearisointi kutistuu muotoon (4.8), koska yhtälön residuaalin oletetaan olevan = 0. Tätä
toista vaihetta säätelee massatase, joka pakotetaan toteutumaan eksaktisti.
Tässä kuvattu painekorjausalgoritmi putkiverkoille on niin yksinkertainen ja
seuraa suoraan perusyhtälöistä, että on pidettävä suoranaisena ihmeenä, jos sitä ei
ole käytetty ennen MAC-menetelmää. Seuraavassa tehtävä lähempi tarkastelu paljastaa, että algoritmi sisältää kaikki varsinaisten virtausyhtälöiden ratkaisussa vaaditut piirteet.
4.3 Painekorjausyhtälön ominaisuuksia
Painekorjausmenetelmät (joita voidaan kehittää ääretön määrä) on tapana esittää
edellä kuvatun algoritmin muodossa. Syynä on se, että eri yhtälöt perinteisesti ratkaistaan erillään toisistaan ja kaiken ytimenä on painekorjausyhtälö. Eräissä menetelmissä yhtälö saatetaan muodostaa suoraan paineille (SIMPLER) tai sitten saatetaan ratkaista myös korjausten korjauksia (PISO). Painekorjausmenetelmien päämuunnelmilla on perinteisesti käytetty periaatteessa huvittavia lyhenteitä. Edellä
kuvaamamme menetelmä on lähinnä ns. SIMPLE-algoritmi ja tässä yksinkertaisessa tapauksessa nimi kuvaakin ratkaisutapaa varsin hyvin.
Algoritmi muodostaa eräänlaisen ketjun, jota itse asiassa voidaan alkaa purkamaan lähes mielivaltaisesta kohdasta. Tässä esitetty perusalgoritmi on tosin niin
pelkistetty, että voidaan aloittaa vain joko kohdasta 1 tai 2. Kokoonpuristuvia yhtälöitä puolestaan ratkaistaan yhdessä, jolloin ’algoritmi’ supistuu periaatteessa yhden suuren tyyppiä (2.58) olevan yhtälöryhmän ratkaisuun. Näiden menetelmien
yhteydessä ei edellä esitetyn kaltaisia ’reseptejä’ esitetäkään.
Aiheellisesti voidaan vielä kysyä, miksei yllä olevia yhtälöitä (4.2) ja (4.3) aina
ratkaista yhtä aikaa? Tämä siis on periaatteessa mahdollista, mutta silloin yhtälöryhmästä tulee muodoltaan monimutkainen. Sellaiselle on kehitetty ratkaisijoita (esim.
Galpin, Doormaal ja Raithby 1985). Tällä ns. kytketyllä ratkaisijalla on eräs edulliselta kuulostava ominaisuus: Se tuottaa tarkan ratkaisun Navier-Stokes yhtälöille
rajalla Re → 0 eli silloin, kun liikemääräyhtälö on lineaarinen konvektiotermin
puuttumisen vuoksi. Kytketty ratkaisu (simultaneous solution) on käytössä eräissä
kaupallisissa virtausratkaisijoissa, mutta se ei välttämättä ole edellä esitettyä huo-
4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA
67
mattavasti yleisempää sarjamuotoista (sequential solution) algoritmia tehokkaampi. Tämä johtuu linkitetyn yhtälöryhmän monimutkaisuudesta ja sen vastapainona
painekorjausyhtälön (4.9) eräistä edullisista ominaisuuksista. Jatkossa tällä kurssilla
käytetään vain peräkkäistä ratkaisua.
Yhtälöllä (4.9) nähdään olevan seuraavat ominaisuudet
aii = −
P
j6=i
aij =
aij ≤ 0
P
1
′
˙ ∗ij |
j6=i Kij |m
kun
≥0
j 6= i
(4.10)
Matriisi on singulaarinen, jos massavirta on nolla. Tämä on yllä esitetyn metodin
heikkous, mutta se voidaan hoitaa joko aikaderivaatan avulla tai alirelaksaatiolla.
Toisaalta nähdään matriisin lävistäjän olevan aina yhtä suuren kuin muiden alkioiden summa vastakkaismerkkisenä. Tämä on edullista iteratiivisten ratkaisumenetelmien kannalta. Esimerkiksi Gauss-Seidel menetelmä suppenee, jos Scarboroughin
kriteeri
P
j6=i
aij
≤1
<1
kaikille yhtälöille
ainakin yhdelle yhtälölle
(4.11)
aii
toteutuu. Nyt on siis kasvatettava painekorjausyhtälön lävistäjävaltaisuutta. Tämä
=
onnistuu samoilla keinoilla kuin singulaarisuuden esto. Virtausyhtälöissä saattaa olla myös ns. lähdetermi, joka linearisoidaan aina vain lävistäjäalkiota kasvattavalla
tavalla. Tähän palataan jatkossa.
Painekorjausyhtälö on putkiverkolla harva ja se voidaan myös ratkaista suoralla menetelmällä. Yhtälö on eräässä mielessä ’Poisson-tyyppinen’ ja varsinaisille
virtausyhtälöille saadaan aina Poisson-yhtälö painekorjauksille. Tämä yhtälö on elliptistä tyyppiä ja joskus kokoonpuristumattomia virtauksia nimitetäänkin ’elliptisiksi’. Nämä ovat vakiintuneita nimityksiä laskennallisessa virtausmekaniikassa,
mutta eräässä mielessä harhaanjohtavia. Tarkkaan ottaen Poisson yhtälö paineelle p
olisi
∇2 p = b
(4.12)
Painekorjausyhtälö vastaa jossain määrin tämän diskretoitua vastinetta. Käytännössä joudumme aina kasvattamaan kerroinmatriisin lävistäjävaltaisuutta. Tällöin kyseessä ei oikeastaan olekaan Poisson-yhtälö, vaan lähinnä Helmholzin yhtälön
∇2 p + k 2 p = b
(4.13)
4.3. PAINEKORJAUSYHTÄLÖN OMINAISUUKSIA
68
diskreetti vastine. Meteorologit puhuvatkin esimerkiksi ’nopeasta Helmholz-ratkaisijasta’, kun tarkoittavat insinöörikielellä ’nopeaa Poisson-ratkaisijaa’.
Aiemmin on todettu paineen ratkeavan vain paine-eroina. Putkiverkolla voidaan
paine kiinnittää fysikaalisesti järkevästi reunaehtojen avulla. Jos näin ei tehtäisi tai
alue olisi suljettu, painekorjausyhtälö ei ratkeaisi ollenkaan. Tämä on seuraus kokoonpuristumattomuusehdosta. Tällöin täytyy ulosvirtauksen olla sama kuin sisäänvirtauksen. Tämä tarkoittaa sitä, ettei ulosvirtausnoodin jatkuvuusyhtälö anna mitään lisäinformaatiota. Seurauksena on, että eri noodeille kirjoitetut jatkuvuusyhtälöt eivät ole lineaarisesti riippumattomia ja tällöin yhtälö ei tietenkään ratkea. Patankar mainitsee, että tässä tapauksessa iteratiivinen yhtälöryhmän ratkaisu konvergoi
johonkin tilaan, joka riippuu alkuarvauksesta. Koska vain paine-erot ovat merkitseviä, tulos on käyttökelpoinen. Sen sijaan suora ratkaisu kaatuu. Jos ratkaistavana
on reunoiltaan suljettu säiliö on helppo nähdä, että silloin käy samalla tavalla. Jos
tiheys ratkaistaan tilayhtälöstä, paine sen sijaan ratkeaa. Täysin kokoonpuristumattomalle nesteelle on pakko asettaa jokin lisäehto muotoa pi = 0, sopivasti valitulla indeksillä i. Kuten luvussa 2 suositeltiin, paine saadaan kiinnitettyä fysikaalisesti järkevien reuna-arvojen kautta ja silloin myös painekorjausyhtälön ongelma
korjaantuu. Putkiverkolla tämä merkitsee paineen kiinnittämistä jossain sopivassa,
vaikkapa vesitornia kuvaavassa noodissa.
Painekorjausmenetelmässä on erittäin tärkeää ymmärtää, että korjaamalla massavirtoja (tai nopeuksia) yhtälöstä (4.8) tai vastaavasta, jatkuvuusyhtälö toteutuu sen
jälkeen eksaktisti painekentän arvoista huolimatta. Voisimme siis asettaa kertoimille 1/Kij′ |m
˙ ∗ij | mielettömät epäfysikaaliset arvot, jotka tuottaisivat järjettömän pai-
nejakautuman, mutta täsmällisesti toteutuvan jatkuvuusyhtälön! Kun edellä esitetty
painekorjausyhtälö muodostetaan, käytetään apuna lausekkeen
∆uij ≈ −
1
(∆pi − ∆pj )
Aij
(4.14)
kaltaista linearisointia. Tässä kerroin Aij on muodostettava siten, että yhteys vastaa liikemääräyhtälöstä saatua linearisointia. Edellä oli Aij = Kij′ |m
˙ ∗ij |. Silloin pai-
nekorjaus ajaa ratkaisua myös kohden liikemääräyhtälön ratkaisua. Linearisoitaessa liikemääräyhtälö, kuten edellä tehtiin, tulos on luonnollisesti toivottu. Asetelma muuttuu ongelmalliseksi, jos jatkuvuusyhtälössä olevia nopeuksia, siis koppien
rajapinnoilla tai esimerkissämme putkissa olevia nopeuksia, approksimoidaan jol-
4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT
69
lain ei-triviaalilla tavalla (kts. esim. yhtälö (5.51)) ja näitä nopeuksia linearisoimalla johdetaan yhtälöä (4.14) vastaava yhtälö. Pohjana tulee siis olla liikemääräyhtälö
ja yleisimmin käytetyssä ns. Rhie–Chow-interpoloinnissa pintanopeudet saadaankin liikemääräyhtälön avulla. Silloin sekä pintanopeuksien että liikemääräyhtälön
linearisointi tuottavat muodon (4.14), joka vastaa samalla liikemääräyhtälön linearisointia. Rhie–Chow-interpolointiin palataan jatkossa.
Jatkuvuusyhtälön toteutuminen olisi toivottavaa jokaisella iteraatiokierroksella. Yhtälöstä (4.14) laskettujen nopeuskorjausten jälkeen näin tapahtuukin. Sen sijaan, jos nopeuskorjausta alirelaksoidaan, jatkuvuusyhtälö ei toteudukaan, mutta
nopeuskorjaus ajaa ratkaisua iteraation kuluessa oikeaa tulosta kohti. Ongelmia jatkuvuusyhtälön eksaktin toteutumisen kanssa tulee myös jos tiheys ei ole vakio.
4.4 Skalaariyhtälön ratkaisu ja Patankarin säännöt
Putkiverkkoratkaisussa voidaan ottaa hyvin yksinkertaisesti huomioon myös lämpötilat. Energiayhtälöksi tasapainotilassa saadaan haaran kokonaisentalpian Hij avulla
X
j6=i
m
˙ ij Hij ≈
X
m
˙ ij (cp T )ij = 0
(4.15)
j6=i
Toisinaan ratkaisussa käytetään lämpötiloja Tij , mutta mikäli lämpötilaa käytetään
jo eksplisiittisessä vaiheessa (residuaalissa), energiayhtälö on approksimatiivinen.
Ratkaisussa haarojen entalpiat tai lämpötilat on lausuttava noodipisteiden avulla.
Esimerkissämme ainoa toimiva ratkaisu on katsoa mistä noodista virtaus on tulossa.
Kuvassa 4.2 käytetään noodin i lämpötilaa, jos virtaus on positiivinen ja noodin j
jos virtaus on negatiiviseen suuntaan.
Ti
.
mij
Tj
Kuva 4.2: Lämpötilan määräytyminen noodipisteiden arvoista.
4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT
70
Yhtälö (4.15) voidaan kirjoittaa muotoon
Hi
X
X
m
˙ ij +
out
(4.16)
m
˙ ij Hj = 0
in
missä positiivinen massavirta m
˙ ij on noodista i ulospäin ja negatiivinen noodia i
kohti. Usein käytetään FORTRANin MAX- tai MIN-käskyjä vastaavia merkintöjä
Hi
X
max[m
˙ ij , 0] +
j6=i
X
min[m
˙ ij , 0]Hj = 0
(4.17)
min[m
˙ ij , 0]cp,j Tj = 0
(4.18)
j6=i
Jos ratkaistaan suoraan lämpötiloja, saadaan
Ti cp,i
X
max[m
˙ ij , 0] +
j6=i
X
j6=i
Tarkastelemalla skalaariyhtälöä, havaitaan sen olevan lineaarinen. Periaatteessa voisimme ratkaista suoraan lämpötiloja, mutta se ei yleensä ole järkevää, vaan yhtälö
on syytä linearisoida ja käyttää lämpötila tai entalpiakorjauksia implisiittisessä vaiheessa. On huomattava, että käytännön ongelmissa yhtälö linearisoidaan yleensä
entalpian suhteen implisiittisessä vaiheessa. Tässä yksinkertaisessa esimerkissä se
ei ole tarpeen lineaarisuuden vuoksi. Painekorjausyhtälöstä poiketen kerroinmatriisi
on nyt epäsymmetrinen, mutta toteuttaa ehdot
aii = −
aij ≤ 0
Ehdon aii = −
P
j6=i
P
j6=i
aij ≥ 0
kun
(4.19)
j 6= i
aij voidaan havaita seuraavan suoraan massan säilymisestä,
mutta ehto ei toteudu lämpötilaratkaisussa, ellei cp ole vakio. Noodin entalpiaarvoksi tässä lähdetermittömässä tapauksessa tulee massavirroilla painotettu keskiarvo naapurinoodien entalpioista. Jos lisäämme energiayhtälön ratkaisun algoritmiin massavirtakorjausten jälkeen, saadaan aina järkevät entalpiat tai lämpötilat,
koska massatase toteutuu. Jos massataseeseen jää virhettä on mahdollista, että entalpiat alkavat heilahdella levottomasti. Tämä asia voidaan korjata helposti. Ei lasketakaan kerrointa aii ulosmenomassavirroista, vaan yhteyden aii ≡
−
P
in
P
out
m
˙ ij =
m
˙ ij avulla sisääntulomassavirroista. Toinen tapa on lisätä lävistäjälle mas-
sataseen virhe, mikä johtaa identtisesti samaan tulokseen. Jos energiayhtälössä on
lähdetermi, olisi ratkaisun realistisuuden kannalta tietysti edullisempaa, että massatase toteutuisi jokaisella kierroksella tarkasti.
4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT
71
Kun energiayhtälö lisätään ratkaisuun, klassisen painekorjausalgoritmin rakennusosat ovat kasassa. (Tässä yhteydessä energiayhtälö tarvittiin vain konvektiotermin diskretoinnin periaatteen esittämisen vuoksi. Aiemmin esitetty malliprobleemamme (1.45) ei sisällä energiayhtälöä). Jos tarkastelemme asiaa fysikaalisesti,
malli on eräänlainen tankki–tuubi-järjestelmä. Paineet ja lämpötilat ratkaistaan ’tankeissa’, joiden ei todellisuudessa tarvitse aina olla säiliöitä, vaan joihin osa putkistoa on yhdistetty yhdeksi ekvivalentiksi tilavuudeksi. Tankit ovat yhdistetyt toisiinsa virtausteillä, joita kuvaa epälineaarinen painehäviötermi. Ratkaisualgoritmissa
tankkien paineita korjataan vähitellen. Lopulta saadaan sellainen painekenttä, joka
tuottaa liikemääräyhtälöstä jatkuvuusyhtälön toteuttavan ratkaisun. Jokaisen painekorjauksen jälkeen seuraa massavirtakorjaus, joka toteuttaa jatkuvuusyhtälön eksaktisti jokaisella iteraatiokierroksella, mikäli alirelaksaatiota ei ole nopeuskorjauksessa. Energiayhtälön ratkaisu on mukana passiivisena skalaarina ja tässä lineaarisessa tapauksessa saadaan jokaisella kierroksella energiayhtälön toteuttava lämpötilajakautuma. Kuhunkin noodiin tuleva energiavirta tuo naapurinoodeista (tankeista) siellä vallitsevassa lämpötilassa olevaa nestettä. ’Tuubeissa’ ei lämpötilojen eikä
paineiden arvoja lausuta.
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
Kuva
4.3: Yksidimensioinen
säiliö ja putki-järjestelmä.
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
33333
Jos ratkaisumenetelmän peruselementtejä sovelletaan yksidimensioiselle virtaustielle, voidaan tulos hahmotella kuvan 4.3 tapaan. Paine- ja lämpötilanoodeja vastaa
’tankit’, joihin putki on jaettu. Näiden välillä olevat virtaustiet on kuvaan piirretty
putkimaisiksi, mutta vakiopoikkipintaisella putkella virtausteihin liittyy myös tilavuus, joka sijaitsee painenoodien puolivälissä, ja jonka tilavuus on puolet rinnakkaisten painekoppien tilavuuksista. Olemme tulleet määritelleeksi kuvassa 4.4 olevan tavanomaisesta poikkeavan hilatyypin, ns. limitetyn hilan (staggered grid), joka
on erittäin sopiva painekorjausmenetelmän yhteydessä. Lämpötilaratkaisun yhtey-
4.4. SKALAARIYHTÄLÖN RATKAISU JA PATANKARIN SÄÄNNÖT
72
dessä lämpötilat konvektoituivat ylävirran suunnassa olevasta noodista. Kyseessä
on selvästikin ensimmäisen kertaluvun ylävirtadiskretointi. Limitetty hila ja yksinkertainen ylävirtamenettely konvektiolle, olivat pitkään painekorjausratkaisun peruskivet ja ovat eräässä mielessä sitä vieläkin ainakin implisiittisen vaiheen osalta.
}
liikemääränoodi
}
painenoodi
Kuva 4.4: Limitetty hila.
Patankar perustelee kirjassaan pitkään kummankin asian oleellisuutta virtausratkaisussa. Nämä perustelut eivät enää siinä mielessä päde, että limitettyä hilaa ei
välttämättä tarvita ja ensimmäisen kertaluvun menetelmää ei edes saa käyttää. Kyseisten elementtien avulla saadaan kuitenkin periaatteessa idioottivarma järjestelmä ja sen perusideat on osittain saatava toteutumaan implisiittisessä vaiheessa, so.
muodostettaessa ratkaistavia yhtälöryhmiä. Patankar listaa neljä periaatetta, jotka
diskretoinnin tulee toteuttaa:
1. Vuo laskentatilavuuden rajapinnalla tulee laskea konsistentilla tavalla: toisesta kontrollitilavuudesta ulos = toisesta sisään. Tämä ei ole muuta kuin yleinen
säilymisperiaate, joka eräissä poikkeustapauksissa, kuten Chimera-hilalla, voi
jäädä paikallisesti toteutumatta.
2. Positiiviset kertoimet lävistäjällä aii ja negatiiviset kertoimet lävistäjän ulkopuolella. Tämä periaate on tärkeä implisiittisessä vaiheessa. Eksplisiittisessä
vaiheessa periaate on sama kuin monotonisuusehto (kts. peruskurssi), joka on
aiemmin todettu liian rajoittavaksi. Voimme siis eksplisiittistä residuaalia laskettaessa käyttää korkeamman kertaluvun diskretointia, mutta implisiittinen
vaihe suoritetaan ensimmäisen kertaluvun tarkkuudella. Aiemmin osoitettiin
kertoimien tällöin toteuttavan kyseiset ehdot.
3. Lähdetermi mainittiin aiemmin linearisoitavan vain lävistäjää kasvattavalla
tavalla. Tämä tarkoittaa, että lähdetermiä ei linearisoida naapurinoodien suh-
4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT
73
teen. Pisteen i (tai P ) suhteen lähdetermi kirjoitetaan muotoon
qφ = qφ,C + qφ,P φ
(4.20)
Jotta linearisointi voidaan suorittaa, on kertoimen qφ,P oltava pienempi kuin
nolla. Yleensä asianlaita näin onkin. Positiivinen kerroin merkitsisi lähdetermin kasvua suureen φ kasvaessa, mikä on fysikaalisesti epästabiili tilanne. Kun laskennassa käytetään delta-muotoa, saadaan Patankarin alkuperäistä
lauseketta (4.20) yleisempi esitys
qφ = qφ∗ +
∂qφ
∆φ
∂φ
(4.21)
missä derivaatan ∂qφ /∂φ on siis oltava pienempi kuin nolla.
4. Neljäs sääntö koskee yhtälöryhmän kertoimia. Aiemmin todettiin sekä painekorjausyhtälön että energiayhtälön kertoimille yhteys
aii = −
X
aij
(4.22)
j6=i
Käytännössä tämä sääntö on pikemminkin lähtökohta, koska lävistäjää pyritään kasvattamaan. Yhteys seuraa suoraan vuon konsistentista laskennasta
tilavuuksien rajapinnalla, joten se on myös jossain mielessä seurausta säännöstä 1. Iteroinnissa sääntö takaa suureiden muutoksille järkevät naapurinoodeista riippuvat arvot.
4.5 Yksidimensioiset virtausyhtälöt
Ennen kuin perehdytään painekorjausmenetelmään malliyhtälöille (1.45), tarkastellaan yksidimensioisia virtausyhtälöitä. Niiden avulla on mahdollisuus tarkemmin johtaa yhtälön A∆φ = b kerroinmatriisille ja vasemman puolen pystyvektorille lausekkeet. Ratkaisun perusperiaatteet ovat sen jälkeen samat kuin putkiverkkoesimerkissä. Laajennus kolmeen dimensioon ei tuo yhtälöiden luonteeseen enää
mitään oleellisesti uutta. Yksidimensioisia malleja käytetään esimerkiksi prosessien simuloinnissa ja ydinreaktoreiden turvallisuusanalyyseissä. Toimiakseen malleihin on yhdistettävä suuri määrä kokeellista tietoa lämmönsiirtokorrelaatioiden
yms. muodossa. Yksidimensioinen malli toimii myös hyvänä pohjana monidimensioiselle diskretoinnille. Luvussa 1 tarkasteltiin jo yksidimensioisten yhtälöiden muo-
4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT
74
qρ
i − 1/2
q"
}
Liikemääränoodi
pi
i + 1/2
pi + 1
}
P a i nneo o d i
Kuva 4.5: Yksidimensioinen diskretointi limitetyllä hilalla
toja. Jatkuvuusyhtälöstä (1.6) saadaan sen diskretoiduksi muodoksi
Vi
dρi
+ (Sρu)i+1/2 − (Sρu)i−1/2 = (qρ )i
dt
(4.23)
Tällä kurssilla tiheys pidetään vakiona, jolloin aikaderivaattatermi putoaa jatkuvuusyhtälöstä periaatteessa pois. Täydellisyyden vuoksi tiheys pidetään kuitenkin
mukana jatkossa olevissa muissa lausekkeissa.
Liikemääräyhtälön (1.34) yhteydessä on oltava tarkkana paineen integroinnissa
seinien yli. Käyttämällä limitettyä hilaa saadaan liikemääränoodille i + 1/2
Vi+1/2
d(ρu)i+1/2
+(Sρu2)i+1 −(Sρu2 )i +(Sp)i+1 −(Sp)i −pi+1/2 (Si+1 −Si ) = (qρ uqx +qm )i+1/2
dt
(4.24)
Laskentatilavuuden kiinteällä seinällä vallitsee paine pi+1/2 ja seinän x-komponentti
on poikkipinta-alojen erotus. Jatkuvuus- ja liikemääräyhtälöiden oikealle puolelle on kirjoitettu lähdetermejä. Yksidimensioisessa tarkastelussa voidaan massalähteellä qρ ottaa huomioon virtauskanavan seinästä tuleva massavirta. Kyseinen massavirta voi tuoda myös x-suuntaista liikemäärää, jolloin uqx on massalähteen xsuuntainen nopeuskomponentti. Jos lähde on kohtisuorassa putkea vasten, on huomattava että uqx = 0. Liikemäärän lähdetermi qm sisältää puolestaan seinämäkitkan,
gravitaation ja mahdolliset muut tilavuusvoimat. Esimerkiksi pumpun vaikutus voidaan kuvata lähdetermillä.
Energiayhtälö voidaan kirjoittaa usealla eri tavalla. Yleensä kokoonpuristumattomissa tapauksissa voidaan olettaa kineettinen energia ρV 2 /2 pieneksi termiseen
4.5. YKSIDIMENSIOISET VIRTAUSYHTÄLÖT
75
energiaan nähden. Vuotermissä on tällöin entalpia, mutta aikaderivaatassa sisäenergia. Käytetään seuraavassa ratkaistavana suureena entalpiaa h, jolloin yhtälön kummallekin puolelle on lisättävä paineen aikaderivaatta. Energian taseeksi saadaan yhtälön (1.18) avulla
Vi
dpi
dρhi
+ (Sρuh)i+1/2 − (Sρuh)i−1/2 = (qρ hq + qm u + qT )i + Vi
dt
dt
(4.25)
missä qT on siirtyvä lämpöteho. Edellä olevissa yhtälöissä on otettava huomioon
lähdetermien yksiköt. Energiayhtälössä lähdetermit lausutaan wateissa. Lämpöteho
saadaan lämpövuosta q ′′ kertomalla se noodin seinämän pinta-alalla. Lähdetermien
lähempi tarkastelu osoittaa, että niissä on käytävä määrätynlainen manipulointi läpi,
jossa esiintyy noodin tilavuus, seinämä- ja poikkipinta-alat. Lähdetermien tarkastelu on tämän kurssin ulkopuolella. Yksidimensioisessa tapauksessa diffuusiotermi
yleensä jätetään pois kuten yhtälöissä (4.23)...(4.25) tehtiin. Diffuusion merkitys on
suuri vain putken seinää vasten kohtisuorassa suunnassa. Yksidimensioisessa mallissa tämä vaikutus esitetään lähdetermien avulla, joilla mallinnetaan kitkaa ja lämmönsiirtoa.
Edellä olevat yhtälöt voidaan kirjoittaa myös massavirran m
˙ avulla yhtenäiseen
muotoon
Vi
dρi
+m
˙ i+1/2 − m
˙ i−1/2 = (qρ )i
dt
d(ρu)i+1/2
+ (mu)
˙ i+1 − (mu)
˙ i
dt
+(Sp)i+1 − (Sp)i − pi+1/2 (Si+1 − Si ) = (qρ uqx + qm )i+1/2
dpi
d(ρh)i
+ (mh)
˙ i+1/2 − (mh)
˙ i−1/2 = (qρ hq + qm u + qT )i + Vi
Vi
dt
dt
Vi+1/2
Painekorjauksessa massatase on keskeinen ja siksi massavirta on nytkin käyttökelpoinen apusuure. Usein painekorjauksen avulla korjataan massavirtoja, joskus nopeuksia. Erityisesti limitetyllä hilalla massavirtakorjaus on kätevä, koska se heijastuu suoraan skalaarisuureiden taseisiin. Tarkastellaan diskretointia kuvan 4.5 avulla. Voidaan havaita, että massatase ja skalaarisuureen tase käsitellään samalla tavoin kuin putkiverkkoesimerkissä. Entalpian arvot hi±1/2 perinteisessä SIMPLEmenetelmässä perustuivat yksinkertaiseen ylävirtapainotukseen. Parempi tulos saadaan tietenkin jollain MUSCL-diskretoinnilla. Kuten muistetaan F-P:ssä käytetään
keskiarvoa noodipisteiden arvosta, mikä johtaa puolestaan keskeisdifferenssiin.
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
76
Liikemääräyhtälö (4.24) ei ole yhtä elegantissa muodossa kuin putkiverkolla.
Limitys vaikuttaa jossain määrin liikemääräyhtälön lähdetermeihin, jotka osittain
riippuvat massalähteistä, mutta diskretoidaan näistä poikkeavassa kohdassa. Lähdetermien käsittelyssä keskiarvottaminen ei kuitenkaan aiheuta ongelmia. Limitetyllä hilalla massavirrat (ja nopeudet) on määritelty skalaarikoppien seinillä pisteissä
i ± 1/2. Kokemus on osoittanut, että myös liikemääräyhtälön vuotermissä voidaan
käyttää massavirtojen keskiarvoja m
˙ i = 1/2 (m
˙ i+1/2 + m
˙ i−1/2 ) ainakin riittävän alhaisella nopeusalueella. Tällöin nopeudet ui+1 ja ui ovat konvektoituvia suureita,
jotka interpoloidaan hilapistearvoista ui±1/2 ja ui±3/2 . Kuten on jo todettu aiemmin tämä tapa johtaa Burgersin yhtälön ratkaisussa ylilyöntiin ja parempi tapa olisi
käsitellä vuotermi ylävirtapainottamalla sitä kokonaisuudessaan, kuten Roen menetelmällä, mutta tällöin liikemääräyhtälön käsittely tulisi muista yhtälöistä poikkeavaksi konvektion osalta. Tämä on ratkaisematon ongelma. Onneksi vuotermin
diskretointi ei sinänsä muuta painekorjausalgoritmia, joten seuraavassa käytetään
yksinkertaista keskiarvoon perustuvaa konvektionopeuden laskentatapaa. Voidaan
myös todeta, että implementoitaessa painekorjaus monidimensioiseen tapaukseen
tavanomaisella laskentahilalla edut liikemäärän vuon ’väärästä’ diskretoinnista ilmeisesti ovat haittoja suuremmat. Tämä aiheutuu saavutetusta kaikkien yhtälöiden
yhdenmukaisuudesta vuotermin suhteen.
Edellä on kiinnitetty huomiota etupäässä painekorjausyhtälön johtamiseen ja
todettu limitetyn hilan johtavan hyvin käyttäytyvään painekorjausyhtälöön. (Voisi
ehkä todeta myös toisinpäin painekorjausyhtälön johtavan limitettyyn hilaan). Hilatyypillä on muitakin hyviä ominaisuuksia, joihin palataan seuraavassa luvussa. Tässä yhteydessä kannattaa kiinnittää huomiota siihen, että jatkuvuusyhtälössä massavirrat ja liikemääräyhtälössä painegradientti tulee symmetrisellä tavalla diskretoiduksi. Tämä ei aiheuta vaimennusta ratkaisuun, kuten korkeankin kertaluvun ylävirtamenetelmät aina aiheuttavat. Vaimennusta diskretointiin tulee kuitenkin konvektoituvista suureista ellei näitäkin yritetä ratkaista keskeisdifferenssillä.
4.6 Painekorjaus limitetyllä hilalla
Seuraavassa johdetaan putkiverkkoesimerkin kaltainen painekorjausmenetelmä yksidimensioisille yhtälöille. Tässä oletetaan tiheys vakioksi, mutta pidetään se kui-
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
77
tenkin mukana vuotermeissä täydellisyyden vuoksi. Näin saadaan mukaan massavirrat, jotka voidaan helposti laajentaa yleiseen muuttuvatiheyksiseen tapaukseen.
Myöhemmin käsitellään lyhyesti myös tilayhtälön käyttöä.
Ensimmäisenä ratkaistaan liikemääräyhtälö. Ratkaisua varten yhtälö on linearisoitava. Tässä käytetään edellä esitettyä muotoa konvektiotermille. Kuten on todettu
Burgersin yhtälöllä käytetty Roen menetelmä voitaisiin myös ottaa käyttöön liikemääräyhtälön yhteydessä eikä se muuttaisi ratkaisun perusluonnetta. Yksinkertaisuuden vuoksi seuraavassa ei linearisoida lähdetermejä. Niiden mukaan ottaminen
on suoraviivaista yhtälön (4.21) mukaan. Ratkaistavina suureina käytetään nopeutta ja paine-eroa. Näistä edellisen tilalle olisi voitu valita myös massavirta, mutta
sekään ei muuta menetelmän luonnetta. Tässä tehdyn valinnan avulla saadaan yksinkertaisimmat yhtälöt. Aikaderivaatta pidetään mukana estämässä nollalla jako ja
aika-askeleen pituutta säätelemällä alirelaksoidaan ratkaisua.
Yksidimensioinen liikemäärän vuo voidaan korkeamman kertaluvun menetelmällä pinnalla i kirjoittaa muotoon
Fi = (mu)
˙ i + Si pi = max(m
˙ i , 0)uli − max(−m
˙ i , 0)uri + Si pi
(4.26)
missä arvot uli ja uri saadaan interpoloimalla pisteistä i ± 1/2 ja i ± 3/2 MUSCL-
kaavalla. Implisiittistä vaihetta varten kirjoitetaan 1. kertaluvun ylävirta-approksimaatio
max(m
˙ i , 0)ui−1/2 − max(−m
˙ i , 0)ui+1/2 + Si pi
(4.27)
Vuo koostuu konvektio-osasta ja painetermistä. Linearisoimalla konvektiovuo F liikemääräkopin pinnalla i käyttäen ensimmäisen kertaluvun ylävirtamenetelmää saadaan
Fin+1 = Fin +
∂Fin
∆u = Fin +max(m
˙ i , 0)∆ui−1/2 −max(−m
˙ i , 0)∆ui+1/2 (4.28)
∂u
Vastaavasti pinnalla i + 1
n+1
n
Fi+1
= Fi+1
+
n
∂Fi+1
n
∆u = Fi+1
+max(m
˙ i+1 , 0)∆ui+1/2 −max(−m
˙ i+1 , 0)∆ui+3/2
∂u
(4.29)
Yllä linearisointi u:n suhteen tarkoittaa periaatteessa linearisointia kaikkien esiintyvien nopeuksien suhteen. Ylävirtapainotus on hoidettu käyttämällä max-funktiota,
jolloin sulkulauseke on aina positiivinen. Tapa on sama kuin Patankarin kirjassa ja
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
78
siinä on se hyvä puoli, että muistisäännöllä ’lävistäjä positiivinen, muualla miinusmerkki’ tehdään todennäköisesti vähemmän virheitä. F-P puolestaan käyttää minimeitä, mikä periaatteessa johtaa samaan lopputulokseen. Käytännössä pyrimme
tridiagonaaliseen yhtälöön, jolloin riippuvuus vain laskentakopin seinämän molemmin puolin vallitsevista arvoista otetaan huomioon. Yhtälöissä n viittaa iteraatiokierrokseen. On huomattava, että vasta liikemääräyhtälön ratkaisun jälkeen meillä
on käytössämme nopeus u∗ . Paine käsitellään lähdeterminä kierrokselta n. Diskretoiduksi yhtälöksi tulee
V ρi+1/2
+ max(m
˙ i+1 , 0) + max(−m
˙ i , 0)]∆ui+1/2
∆t
− max(−m
˙ i+1 , 0)∆ui+3/2 − max(m
˙ i , 0)∆ui−1/2 =
[
−mu
˙ i+1 + mu
˙ i − (Sp)i+1 + (Sp)i + pi+1/2 (Si+1 − Si ) + (qρ uqx + qm )i+1/2(4.30)
|
{z
u
= Ri+1/2
}
u
Yhtälön oikealle puolelle saadaan liikemääräyhtälön residuaali Ri+1/2
. Kuten pe-
ruskurssillakin residuaali saadaan kätevimmin laskettua vuoarvojen erotuksena. Tässä tapauksessa on vielä lisättävä kiinteällä pinnalla oleva paineesta aiheutuva vuo
u
pi+1/2 (Si+1 − Si ) ja mahdollinen lähdetermi. Ilman lähdetermiä saadaan Ri+1/2
=
n
−Fi+1
+ Fin + pi+1/2 (Si+1 − Si ). Muuttuvapoikkipintainen seinä siis synnyttää pai-
neesta riippuvan vuotermin residuaaliin. Residuaali vastaa painekorjauksen yhteydessä usein käytetyn standardiyhtälön
AW φW + AP φP + AE φE = QP
(4.31)
’lähdetermiä’ QP . Lisäksi nähdään yhtälöstä (4.30)
AW = − max(m
˙ i , 0)
AE = − max(−m
˙ i+1 , 0)
V ρi+1/2
AP =
+ max(m
˙ i+1 , 0) + max(−m
˙ i , 0)
∆t
(4.32)
Jatkuvuusehdosta: sisäänvirtaus noodiin P = ulosvirtaus noodista P seuraa, että
max(m
˙ i , 0) + max(−m
˙ i+1 , 0) = max(−m
˙ i , 0) + max(m
˙ i+1 , 0). Tällöin kerroin
AP riippuu myös suoraan kertoimista AE ja AW
AP =
V ρi+1/2
− AW − AE
∆t
(4.33)
Kuten aiemmin energiayhtälön yhteydessä mainittiin, tämä muoto on turvallisempi, koska se takaa lävistäjävaltaisuuden silloinkin, kun jatkuvuusyhtälö syystä tai
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
79
toisesta ei toteudu. Lähes vastaava yhtälö saataisiin, vaikka tiheyttä ei olisi oletettu
vakioksi.
Yhtälön (4.30) mukaista linearisointia kutsutaan Picardin iteraatioksi. Linearisoimalla konvektiovuo nopeuden suhteen saataisiin itse asiassa
(Sρu2 )n+1 = (mu)
˙ n + 2(Sρu)n ∆u = (Sρu2 )n + 2m∆u
˙
(4.34)
Kerroin 2 yleensä unohdetaan ja näin tehtiin yksinkertaisuuden vuoksi myös yhtälön (4.30) yhteydessä. Myöhemmin havaitaan, että käyräviivaisella hilalla kertoimen mukanaolo johtaisi erittäin monimutkaiseen järjestelmään. Lisäksi jättämällä
kakkonen pois kaikkien yhtälöiden kertoimista, siis myös skalaariyhtälöiden, tulee samoja. Tämän hetkinen vaikutelma on, että liikemääräyhtälössä kerroin ’2’ eli
tarkka linearisointi kannattaisi tehdä lävistäjäalkion i ≡ P suhteen, mutta jättää tekemättä naapurinopeuksien suhteen. Onneksi linearisointiongelma ei ole suuri, kun
muistetaan yhtälön (1.2) periaate.
Yksidimensioisessa tapauksessa saatiin siis tuttu tridiagonaalinen yhtälö (4.31)
nopeuksille. Mitään linearisointia ei paineen suhteen tehdä tässä vaiheessa. Kun
nopeuksien muutokset on ratkaistu, ne päivitetään
u∗i+1/2 = uni+1/2 + ∆ui+1/2
(4.35)
Tässä uni+1/2 on edellisen kierroksen nopeus ja u∗i+1/2 liikemääräyhtälöstä saatava
nopeus, joka ei ole vielä kierroksen n + 1 lopullinen tulos. Se saadaan vasta, kun
sekä paineita että nopeuksia on korjattu jatkuvuusyhtälön avulla. Sijoitetaan nyt
liikemääräyhtälöön
un+1 = u∗ + u′
pn+1 = p∗ + p′
(4.36)
Tässä pilkulliset suureet ovat korjauksia, joiden jälkeen uuden kierroksen lopulliset
arvot toteuttavat jatkuvuusyhtälön, mutta eivät enää liikemääräyhtälöä ellei massataseen virhe ole nolla. Vastaava menettely tehtiin putkiverkkoesimerkissä yhtälöillä
(4.6)-(4.8). Kun otetaan huomioon, että ’*’-suureet toteuttavat liikemääräyhtälön ja
paine on edelliseltä kierrokselta p∗ = pn , saadaan
AW,i+1/2 u′i−1/2 +AP,i+1/2 u′i+1/2 +AE,i+1/2 u′i+3/2 = −(Sp′ )i+1 +(Sp′ )i +p′i+1/2 (Si+1 −Si )
(4.37)
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
80
Tässä indeksointi on kirjoitettu selvyyden vuoksi osittain ilmansuuntien avulla AP,i+1/2 ≡
ai+1/2,i+1/2 . Jos painetta ja putken poikkipinta-alaa approksimoidaan yhteyksillä
pi+1/2 = 1/2 (pi+1 + pi ) ja Si+1/2 = 1/2 (Si+1 + Si ) saadaan
AW,i+1/2 u′i−1/2 + AP,i+1/2 u′i+1/2 + AE,i+1/2 u′i+3/2 = −Si+1/2 (p′i+1 − p′i ) (4.38)
Yhtälön oikean puolen yksinkertaisempaa esitystä olisi tietysti voitu käyttää hyväksi jo liikemääräyhtälön eksplisiittisessä vaiheessa residuaalia laskettaessa, mutta yhtälö (4.30) jätettiin tarkoituksellisesti kontrollitilavuusmuotoon, jossa painekin siis
esiintyy vuon lausekkeessa. Voidaan havaita, että painegradientti yksidimensioisessa tapauksessa tulee kerrotuksi liikemääränoodin puolivälissä olevalla pinta-alalla,
joka on sama kuin skalaarikopin seinämän pinta-ala (kuva 4.5).
Seuraavassa vaiheessa eri painekorjausmenetelmät eroavat toisistaan ehkä eniten. Yhtälöä (4.38) on tarkoitus käyttää jatkuvuusyhtälön kanssa. Aiemmassa putkiverkkoesimerkissämme tämä oli suoraviivainen sijoitustoimenpide. Nyt nopeuskorjaukset riippuvat naapurikoppien nopeuskorjauksista. Yksinkertaisin tapa on tehdä
väkivaltaa näille ja kirjoittaa approksimatiivisesti
AP,i+1/2 u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i )
(4.39)
Tämä on SIMPLE-menetelmän yhteydessä tehty approksimaatio. Yhtälö vastaa putkiverkkoyhtälöä (4.8). SIMPLE on olevinaan lyhenne sanoista Semi-Implicit Method for Pressure-Linked Equations. Nimitys on harhaanjohtava, koska kyseessä ei
ole puoli-implisiittinen menetelmä vaan implisiittinen. Puoli-implisiittisellä tarkoitetaan menetelmää, jossa osa yhtälöiden (4.23)-(4.25) termeistä lausutaan edelliseltä ajanhetkeltä. Nyt kyseessä on vain iteraation eräässä vaiheessa muutaman termin
huomiotta jättäminen. Kun vielä otetaan huomioon, ettei tämän tasoinen numeerinen algoritmi käytäntöön sovellettaessa ole mitenkään yksinkertainen, on ehkä ymmärrettävää, ettei F-P halua edes selvittää nimityksen perusteita.
Nopeuskorjaus voitiin johtaa varsin yksinkertaisesti, mutta massataseeseen tarvitaan massavirtakorjaus. Tällöin jos tiheys ei olisi vakio, olisi tehtävä linearisointi
(Sρu)′i+1/2 = (Sρ)i+1/2 u′i+1/2 + (Su)i+1/2 ρ′i+1/2
(4.40)
Tiheyden muutokselle riittää tässä yhteydessä linearisointi paineen suhteen
ρ′ ≈
∂ρ ′
p
∂p
(4.41)
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
81
Käytännössä tämä usein jätetään tekemättä. Linearisointi tulee tärkeäksi, kun Machin luku on lähellä ykköstä tai suurempi. Kun Machin luku on suurempi kuin yksi, painekorjausyhtälö muuttuu näiden linearisointien vuoksi hyperboliseksi. Jotta
laskenta onnistuisi, on myös vuon laskentaa muutettava. F-P:ssä on esitetty miten tämä voidaan tehdä (luku 10). Tässä yhteydessä voidaan todeta, että järjellisempi tapa on käyttää kyseiseen tarkoitukseen paremmin soveltuvaa algoritmia, kuten esim. Roen menetelmää (kts. Hirsch). Yleisempää on alhaisella nopeusalueella käyttää yhtälöä (4.41) vain jatkuvuusyhtälön (4.23) aikaderivaatan linearisointiin ja jättää vuot linearisoimatta. On helppo nähdä, että tämä kasvattaa suoraan
painekorjausyhtälön lävistäjää. Joskus kannattaa käyttää jonkinlaista pseudolinearisointia, vaikka tilayhtälöä ei olisi käytössä. Derivaatta riippuu äänennopeudesta c
yhteyden ∂ρ/∂p ≈ 1/c2 kautta. Vaikka tilanne olisi kokoonpuristumaton, voidaan
äänennopeus korvata nopeudella Cu u∞ , missä u∞ on jonkinlainen vapaan virtauksen nopeus ja Cu sopiva kerroin. Lävistäjän kasvattamiseksi painekorjausyhtälössä
on muitakin keinoja. Lävistäjän kasvatus on keino alirelaksoida (stabiloida, mutta toisaalta hidastaa) iteraatiota, mutta sillä on myös edullinen vaikutus lineaarisen
painekorjausyhtälön iteratiiviseen ratkaisuun.
Toistaiseksi tässä yhteydessä ei tiheyden linearisointia vuon tai aikaderivaa-
tan osalta tarvitse ottaa huomioon. Sijoittamalla nopeuskorjaukset (4.39) yhtälöön
(4.36) ja nämä nopeudet jatkuvuusyhtälöön saadaan
(Sρ)i+1/2
"
#
"
#
Si−1/2 ′
Si+1/2 ′
(pi+1 − p′i ) − (Sρ)i−1/2 −
(p − p′i−1 ) = −∆m
˙ ∗i
−
AP,i+1/2
AP,i−1/2 i
(4.42)
Tämä voidaan sieventää muotoon
(S 2 ρ)i+1/2 ′
(S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′
−
pi+1 +
+
pi −
pi−1 = −∆m
˙ ∗i
AP,i+1/2
AP,i+1/2
AP,i−1/2
AP,i−1/2
(4.43)
Painekorjausyhtälö vastaa putkiverkolle saatua yhtälöä (4.9) ja toteuttaa ehdot (4.10).
Lävistäjä on aina yhtä suuri kuin muiden alkioiden summa, joten yhtälö tässä muodossa soveltuu huonosti iteratiivisille ratkaisijoille. Tilanne voidaan korjata edellä
kuvatulla alirelaksoinnilla. Yksidimensioinen tilanne voidaan hoitaa tehokkaimmin
suoralla ratkaisulla Thomasin algoritmilla.
Käytännön kokemus on osittanut, että SIMPLE-algoritmi divergoi tai konvergoi
huonosti ellei paineita alirelaksoida painekorjausyhtälön ratkaisun jälkeen. Tällöin
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
82
uudet paineet saadaan yhtälöstä
pn+1 = p∗ + αp p′
(4.44)
missä alirelaksaatiokertoimelle αp on ehdotettu monenlaisia arvoja. Patankar ehdottaa αp = 0,8. Kokemus osoittaa, että alirelaksaatiokerroin on varsin tapauskohtainen. Laskenta voi divergoida, mikäli ei alirelaksoida tarpeeksi, joskus on oltava
jopa αp ≈ 0,1. Alirelaksaation määrään saattaa vaikuttaa esimerkiksi reunaehto-
jen käsittely. Tämäntyyppiset kiusalliset käytännön havainnot ovat tyypillisiä painekorjausmenetelmälle. Hyvin monessa artikkelissa on löydetty jokin ajatus, joka
osoitetaan parilla esimerkillä toimivaksi. Kun asiaa sovelletaan kolmanteen tapaukseen, se ei toimikaan ja saattaa suorastaan aiheuttaa iteraation divergoimisen. Usein
divergointi voidaan välttää pienentämällä αp :n arvoa.
On huomattava, että mikäli massataseen halutaan toteutuvan, nopeudet on korjattava painekorjausten avulla yhtälöstä (4.39). Nopeuksia on mahdollista alirelaksoida vielä tässä vaiheessa yhtälöstä
un+1 = u∗ + αu u′ = u∗ − αu
Si+1/2 ′
(p − p′i )
AP,i+1/2 i+1
(4.45)
Tämä toimenpide johtaa virheeseen massataseessa. Sen sijaan jos nopeutta alirelaksoidaan aikaderivaatan avulla, kuten yhtälössä (4.30) tehtiin, se vaikuttaa kertoimeen AP , mutta ei massataseen toteutumiseen. Yhtälön (4.45) käyttö vaikuttaa
yksidimensioisessa tapauksissa ainakin reunojen massataseeseen (kts. kuva 4.6).
Vaikka nopeuden alirelaksointi yhtälöstä (4.45) vaikuttaa selvästi epäedulliselta, sillä saattaa olla joskus (jälleen käytännön kokemuksen mukaan!) stabiloiva vaikutus. Vaikka massatase ei toteudu yhtälöiden lävistäjävaltaisuus on taattu, jos AP
lasketaan yhtälöstä (4.32) eikä suoraan yhtälöstä (4.30).
Edellä nopeutta on siis jo alirelaksoitu myös aikaderivaatan kautta yhtälössä
(4.30). Aikaintegroinnilla ja alirelaksaatiolla on samanlainen vaikutus. Sen sijaan,
että pyrittäisiin yhdellä loikalla ratkaisuun, sinne edetäänkin askeleittain. Aika-askel
∆t voidaan ymmärtää myös jonkinlaiseksi iterointiparametriksi. Eräissä ohjelmissa
siitä käytetäänkin nimitystä ’false time step’ erotuksena varsinaisiin aikaintegroinnin aika-askeliin. Tässä lähestymistavassa oikea aikaderivaatta siirretään yhtälön
oikealle puolelle lähdetermiksi. Alirelaksaation käyttöön ja aikaderivaatan approksimointiin palataan vielä seuraavissa luvuissa.
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
83
Kuva 4.6: Massavirtaprofiilit ennen ja jälkeen nopeuskorjauksen ilman nopeuskorjausten
alirelaksointia ja alirelaksoinnilla (oikealla).
Kun nopeudet on korjattu, saadaan uudet massavirrat. Tämän jälkeen skalaariyhtälöiden ratkaisu on suoraviivaista. Entalpian avulla lausuttu energiayhtälö on
diskretoituna
V ρi
+ max(m
˙ i+1/2 , 0) + max(−m
˙ i−1/2 , 0)]∆hi
∆t
− max(−m
˙ i+1/2 , 0)∆hi+1 − max(m
˙ i−1/2 , 0)∆hi−1 =
[
−(mh)
˙ i+1/2 + (mh)
˙ i−1/2 + qρ hq,1 + qm ui + qT,i = Rih
(4.46)
missä massavirrat m
˙ ovat nyt kierrokselta n + 1 olevia korjattuja arvoja. Tässäkin
on oletettu aika-askeleen olevan jonkinlainen näennäisaika-askel ja tavoitteena siis
olevan tasapainotilan virtaus. Mikäli laskettaisiin ajan suhteen tarkasti olisi lähdetermiosuuteen lisättävä yhtälön (4.25) oikealla puolella oleva paineen aikaderivaatta
ja entalpian aikaderivaatta, joissa käytetään todellista aika-askelta ja jotain tarpeeksi tarkkaa approksimaatiota aikaderivaatalle. Linearisointi on usein kätevintä tehdä
entalpian sijasta lämpötilan suhteen käyttäen yhteyttä ∆h ≈ cp ∆T .
Skalaariyhtälön kertoimien huomataan olevan samat kuin liikemääräyhtälöllä.
Eroja tulee lähdetermien linearisoinnista, mutta vuo-osuus on sama kaikille yhtälöille. Tätä voidaan käyttää joskus hyväksi. Jos liikemäärät olisi linearisoitu yhtälöstä (4.34) myös vuo-osuuden kertoimet eroaisivat toisistaan. Tämä on ehkä eräs
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
84
syy, miksi po. linearisointia vältetään. Kannattaa huomata, että massavirrat päivitetään nopeuskorjauksen jälkeen. Tällöin energiayhtälössä käytetyt kertoimet voivat toimia seuraavalla kierroksella myös liikemääräyhtälössä, mikäli lähdetermien
osuus on pidetty erillään. Tärkein kerroin on lävistäjällä oleva AP . Kun lähdetermien vaikutus on mukana saadaan jokaiselle yhtälölle oma kertoimensa AφP . Kaikkein tärkein kerroin on liikemääräyhtälöiden kerroin AuPi , koska se esiintyy painekorjausyhtälössä. Yleensä kertoimet AuPi joudutaan tallettamaan muistiin. Niitä
voidaan käyttää myös tavanomaisella hilalla koppien pintanopeuksien laskennassa,
kuten seuraavassa luvussa esitetään.
Yksidimensioinen laskenta-algoritmi voidaan nyt kirjoittaa seuraavaan muotoon:
1. Lasketaan liikemääräyhtälön residuaalit. Laskenta hoidetaan kätevimmin päivittämällä pintojen vuoarvot ja lisäämällä tulokseen muuttuvapoikkipintaisella putkella kiinteän pinnan painetermi. Kun implisiittisen vaiheen kertoimet on laskettu yhtälöstä (4.32), ratkaistaan nopeudet diskretoidusta liikemääräyhtälöstä (4.30). Yhtälö on tridiagonaalinen ja sen singulaarisuus voidaan estää aikaderivaattatermillä. Liikemääräyhtälö voidaan yksidimensioisessa tapauksessa linearisoida myös yhtälön (4.34) mukaan.
2. Ratkaistaan uusien nopeuksien avulla noodikohtaiset massatasevirheet m
˙ ∗i .
Mikäli massatasevirheen sopivasti valittu normi jää annetun virherajan alapuolelle, iterointi lopetetaan.
3. Ratkaistaan massatasevirheiden avulla painekorjaukset yhtälöstä (4.43).
4. Lasketaan nopeuskorjaukset yhtälöstä (4.39).
5. Päivitetään paine ja nopeus yhtälöistä (4.44) ja (4.45). Päivitetty nopeuskenttä toteuttaa jatkuvuusyhtälön eksaktisti, muttei liikemääräyhtälöä. Mikäli nopeutta alirelaksoidaan tässä vaiheessa, nopeudet eivät toteuta myöskään jatkuvuusyhtälöä.
6. Ratkaistaan skalaarisuureet, esimerkiksi entalpia, yhtälöä (4.46) vastaavista
yhtälöistä. Yhtälössä käytetään uusia nopeuksien arvoja. Mikäli tiheys on vakio, massavirrat voidaan tallettaa seuraavalle iteraatiokierrokselle ja käyttää
kohdassa 1.
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
85
7. Jos tiheyttä ei pidetä vakiona, se ratkaistaan tilayhtälöstä ρ = ρ(p, h) tai ρ =
ρ(p, T ). Samoin viskositeetti, lämmönjohtavuus ja muut mahdolliset suureet.
Sen jälkeen aloitetaan uusi kierros kohdasta 1.
Kuten aiemmin mainittiin painekorjausalgoritmi voidaan rakentaa monella eri
tavalla ja lähteä esimerkiksi suoraan ratkomaan skalaariyhtälöitä. Eri painekorjausmenetelmiin palataan jatkossa.
Päivitetty 28.1.2014
4.6. PAINEKORJAUS LIMITETYLLÄ HILALLA
86
• Painekorjauksen perusidea on jatkuvuusyhtälön avulla korjata paineita,
kunnes iterointi suppenee tilanteeseen, jossa sekä jatkuvuus- että liikemääräyhtälö toteutuvat.
• Yksidimensioisilla yhtälöillä voidaan esittää painekorjausalgoritmin perusteet.
• Putkiverkkoa kuvaavat painehäviö ja jatkuvuusyhtälöt johtavat seuraavaan painekorjausyhtälöön
p′i − p′j
= −∆m
˙ ∗i
∗
′
|
|
m
˙
K
ij
ij
j6=i
X
• Painekorjausalgoritmi
rakennetaan
yleensä
sarjamuotoiseksi.
Liikemäärä- ja massataseyhtälöt voidaan ratkaista myös yhdessä
(kytketty ratkaisu).
• Painekorjausyhtälö on Poisson-tyyppinen. Sen kertoimet toteuttavat ehdot
aii = −
aij ≤ 0
P
j6=i
aij ≥ 0
kun
j 6= i
• Massavirtakorjauksen jälkeen jatkuvuusyhtälö toteutuu eksaktisti riippumatta saadun painekentän mielekkyydestä
• Painekorjausyhtälö saadaan lävistäjävaltaiseksi linearisoimalla mahdollinen lähdetermi paineen suhteen tai alirelaksoimalla painetta tiheyden
linearisoinnin kautta
∂ρ ′
ρ′i+1/2 ≈
p
∂p
• Skalaarisuureiden ja liikemäärän yhtälöiden kertoimet toteuttavat vastaavat ehdot kuin painekorjausyhtälökin. Niiden yhteydessä alirelaksoinit ja lävistäjävaltaisuus voidaan hoitaa aikaderivaattatermin avulla.
• Lähdetermi linearisoidaan lävistäjää kasvattavalla tavalla. Lähdetermeissä riippuvuus rinnakkaisista kopeista siten näy linearisoinnissa.
• SIMPLEssa naapurikoppien nopeuskorjaukset jätetään huomiotta painekorjausyhtälöä johdettaessa.
• Massavirran m
˙ = Sρu sisältämän nopeuden u erottaminen konvektoituvasta nopeudesta u(!) yksinkertaistaa ratkaisua (Picardin iteraatio).
• Painetta on alirelaksoitava SIMPLE-menetelmän yhteydessä. Nopeutta
voidaan alirelaksoida sekä liikemääräyhtälöä linearisoitaessa että suoritettaessa nopeuskorjausta. Jälkimmäisessä tapauksessa massatase ei toteudu eksaktisti nopeuskorjausten jälkeen, mikä on otettava huomioon
muodostettaessa sen jälkeen yhtälöiden kertoimia aij .
87
5 Painekorjausmenetelmä
tavanomaisella hilalla
5.1 Limitetyn hilan etuja
Limitetyllä hilalla on kaksi etua kokoonpuristumattoman virtauksen tapauksessa.
Edellä oli esillä painekorjausyhtälön johto, joka on suoraviivaista limitetyn hilan
tapauksessa. Toinen seikka liittyy paineessa esiintyvään ns. shakkilautamaiseen ratkaisuun. Tätä ei pidä sotkea jo peruskurssilla esillä olleeseen laskentatilavuuden
Reynoldsin lukuun liittyvään oskillointiin.
Paineeseen syntyvä sahalautamainen ratkaisu saadaan parhaiten esille yksidimensioisella esimerkillä. Ilman liikemäärän vuotermiä ja kitkaa liikemäärä- ja jatkuvuusyhtälöt ovat
∂u
1 ∂p
= −
∂t
ρ ∂x
∂u
=
0
∂x
(5.1)
Se seikka, että jatkuvuusyhtälö ei riipu paineesta pi tiheyden kautta, aiheuttaa tavanomaisella hilalla sen, etteivät pisteen i paine ja nopeus riipu toisistaan. Kuvan 5.1
tilanteessa yksinkertaistettu liikemääräyhtälö voidaan diskretoida differenssimuodossa
∆t
(pn+1 − pn+1
(5.2)
i−1 )
2ρ∆x i+1
Tavanomaisella hilalla nopeuksia koppien rajapinnoilla ei tunneta ja suoraviivaisin
un+1
= uni −
i
lähestymistapa on käyttää keskiarvoja. Tällöin jatkuvuusyhtälöstä saadaan diskretoituna
n+1
un+1
i+1/2 − ui−1/2 =
n+1
un+1
un+1 + un+1
un+1 − un+1
i+1 + ui
i−1
i−1
− i
= i+1
=0
2
2
2
(5.3)
5.1. LIMITETYN HILAN ETUJA
88
( ui, pi )
i−2
a)
i−1
i+1
i+2
i − 3 / 2 i − 1 / 2i + 1 / 2 i + 3 / 2
u
i−2
b)
i
x
u
i−1/2 i+1/2
pi
i−1
i
i+1
x
i+2
i − 3 / 2 i − 1 / 2i + 1 / 2 i + 3 / 2
Kuva 5.1: (a) Tavanomainen hila, (b) paine- ja nopeus limitetyllä hilalla
p = 100 5 0 0 1 0 0 5 0 0 1 0 0 5 0 0
u = 100 4 0 0 1 0 0 4 0 0 1 0 0 4 0 0
x
Kuva 5.2: Sik-sak paine- ja nopeusjakautumat, jotka toteuttavat yhtälöt 5.4
Sijoittamalla tähän nopeudet yhtälöstä (5.2) saadaan seuraava yhtälö
uni+1 − uni−1
∆t
=
(pn+1 − 2pn+1
+ pn+1
i
i−2 )
2
4∆xρ i+2
(5.4)
Yhtälöstä nähdään, että nopeudet ja paineet eivät pisteessä i riipu toisistaan. Siten
nopeuskenttä ja painekenttä ovat kytkeytymättömiä toisiinsa parillisissa ja parittomissa noodeissa. Tämän tuloksena sekä nopeus- että painekenttä saattavat toteutua
siksak- tai shakkilautamaisilla ratkaisuilla kuten kuvissa 5.2 ja 5.3. Shakkilautamaisuus saattaa poistua sopivasti valituilla reunaehdoilla, jotka sitovat rinnakkaiset pisteet toisiinsa. Tämä on kuitenkin epäluotettava keino. Toisaalta joskus saattaa käydä
jopa päinvastoin ja on vaikeaa saada shakkilautakuviota syntymään!
Limitetyllä hilalla vastaaviksi yhtälöiksi tulee
n
un+1
i+1/2 = ui+1/2 −
∆t n+1
(pi+1 − pn+1
)
i
ρ∆x
5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT
100
300 100 300 100 300
5
27
100
300 100 300 100 300
5
27
100
300 100 300 100 300
5
27
5
5
5
27
27
27
5
5
5
89
27
27
27
y
x
Kuva 5.3: Shakkilautamainen paineratkaisu
uni+1/2 − uni−1/2 =
∆t n+1
(p
− 2pn+1
+ pn+1
i
i−1 )
∆xρ i+1
(5.5)
mistä nähdään rinnakkaisten painepisteiden kytkeytyvän rinnakkaisiin nopeuspisteisiin. Tällöin shakkilauta- tai siksak-ratkaisut eivät ole mahdollisia. Yhtälö (5.5)
on jälleen Poisson-tyyppinen ja käytössä SIMPLEC-menetelmässä.
Kummallakin edellä esitetyllä tavalla käytettiin symmetristä diskretointia painegradientin ja jatkuvuusyhtälön nopeusgradientin suhteen. Tavanomaisella hilalla
olisi toki mahdollista ylävirtapainottaa kaikki gradientit mukaan lukien painegradientti, vaikka paine ei ole ’konvektoituva’ suure liikemääräyhtälössä. Periaatteessa
tällöin ehkä saataisiin toimiva painekorjausmenetelmä, mutta sen tarkkuus on huono eikä sellaista ole juuri käytetty (Roache 1972). Limitetty hila jäikin pariksi kymmeneksi vuodeksi ainoaksi vaihtoehdoksi painekorjausmenetelmän yhteydessä.
5.2 Konvektionopeuden interpolointitavat
Suorakulmaisella laskentahilalla erillisestä paineen ja nopeuden diskretoinnista ei
ole juuri haittaa. Tilanne on kokonaan toinen käyräviivaisen laskentahilan tapauksessa. Kolmidimensioisessa tapauksessa tarvittaisiin kolme limitettyä liikemäärähilaa pohjalla olevan skalaarisuureiden hilan lisäksi. Edellä esitettiin, että syyt painekorjauksen hankaluuteen tavanomaisella hilalla liittyvät rinnakkaisten paineiden
kytkeytymiseen toisiinsa ja sopivan muotoiseen painekorjausyhtälöön. Paineiden
kytkeminen on tapahduttava jo eksplisiittisessä vaiheessa vuon laskennan yhteydessä.
5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT
90
Yksinkertaisin kytkemistapa on sijoittaa kunkin yhtälön vuon lausekkeeseen
vaimennustermi
d4,i+1/2 = ǫ4 (φi+2 − 3φi+1 + 3φi − φi−1 )
(5.6)
missä φ vastaa kunkin yhtälön ratkaistavaa suuretta ja ǫ4 on sopivasti valittu parametri. Jos tiheys on vakio, jatkuvuusyhtälön vaimennuskertoimessa tiheys tulee
korvata paineella. Tällä kurssilla jatkossa tehtävä tarkastelu osoittaa, että shakkilautakuvio saadaan poistetuksi lisäämällä pelkästään jatkuvuusyhtälöön paineesta
riippuva tyyppiä (5.6) oleva vaimennustermi. Muissa yhtälöissä vaimennus ei tarvita ja se lisää ratkaisuun numeerista virhettä. Vaimennustermiä (5.6) on käytetty
näennäispuristuvuuskeinon yhteydessä, mutta ei tässä muodossa painekorjausmenetelmässä. Näennäispuristuvuuskeinoa on käytetty laajennettaessa aerodynamiikkaan kehitettyjä ohjelmia alhaiselle nopeusalueelle soveltuviksi.
Vaikka eräissä varhaisissa näennäispuristuvuuskeinoon perustuvissa simuloinneissa on käytetty yhtälön (5.6) kaltaista vaimennustermiä, painekorjausmenetelmällä tavanomainen hila tuli käyttöön Rhien ja Chown 1983 esittämässä artikkelissa. Heidän ajatuksenaan oli interpoloida nopeus laskentatilavuuden pinnalle siten, että lauseke riippuu myös paineista. Menetelmä on kopioitu toimivana ’reseptinä’ lukuisiin ’uusiin’ algoritmeihin ja kaupallisiin ohjelmiin. Yleistyminen tapahtui kuitenkin todella verkkaisesti etupäässä 90-luvulla. Se seikka, että kyseessä on
loppujen lopuksi vaimennustermi eikä tarkempi tapa interpoloida nopeusarvo koppien keskipistearvoista, ei ole täysin tiedostettu vieläkään. Koska Rhie ja Chowmenetelmässä pintanopeus riippuu paineista, tapaa kutsutaan myös painepainotetuksi interpolointimenetelmäksi (pressure-weighted interpolation method, PWIM).
Toinen tapa saada aikaan pintanopeuden riippuvuus paineista, on käyttää limitettyä apuhilaa, ja diskretoida pintanopeus tässä limitetyssä laskentakopissa. Tällöin
pintanopeus riippuu laskentatilavuuksien nopeuksista ja paineista kohtalaisen monimutkaisella tavalla. Tätä tapaa nimitetään liikemääräpainotetuksi interpolointitavaksi (momentum-weighted interpolation method, MWIM). Tavallaan myös Rhie
ja Chow-menetelmäkin käyttää limitetyn hilan ideaa epäsuorasti. Seuraavassa käydään Rhie ja Chow-menetelmän johto läpi ja myöhemmin esitetään menetelmän yksinkertaistettu kontrollitilavuusmuoto. On syytä huomauttaa, että ’johto’ on eräiltä
5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT
91
osin varsin epämääräinen. Parempi keino saattaa olla yrittää ensin ymmärtää kvalitatiivisesti menetelmän perusteluja.
Jos konvektionopeus pinnalla i + 1/2 laskettaisiin keskiarvona hilapistearvoista, riippuisi se välillisesti kahden rinnakkaisen kopin painegradienttien keskiarvosta. Tällöin ei synny kytkentää rinnakkaisten paineiden välille, kuten yhtälössä (5.4).
Yksidimensioinen diskretoitu liikemääräyhtälö voidaan kirjoittaa seuraavaan muotoon
aii ui =
X
(nb)
aij uj −
∂p ∂x
i
(5.7)
Vi
Kertoimet aij poikkeavat hieman limitetyn hilan kertoimista, koska nyt nopeus on
lausuttu pisteessä i. Kertoimien lausekkeet esitetään luvussa 5.4. Painegradientti xsuunnassa on käsitelty kirjaimellisesti lähdeterminä, jolloin se tulee kerrotuksi laskentakopin tilavuudella. Tämä on yleinen painekorjausmenetelmän yhteydessä käytetty tapa, josta tällä kurssilla tullaan myöhemmin poikkeamaan, kun paine tullaan
sijoittamaan luonnolliselle paikalleen vuotermiin. Summaus (nb) (aiemmin merkittiin samaa summausta i 6= j) koskee tilavuuden i naapurikoppeja (nb), joten yh-
tälö on yksidimensioisessa tapauksessa tridiagonaalinen. Lauseke on siinä mielessä
yleinen, että monidimensioisessa tapauksessa saadaan vastaava yhtälö, jossa summa
menee kaikkien naapuritilavuuksien yli.
Laskemalla konvektionopeus keskiarvona ja sijoittamalla (5.7) noodeissa i ja
i+1
1
ui+1/2 = (ui+1 + ui ) =
2
" X
#
∂p ∂p 1 1 X
1
Vi +
Vi+1
(5.8)
aij uj −
ai+1,j uj −
2 aii (nb)
∂x i
ai+1,i+1 (nb)
∂x i+1
Koska yhtälöön haluttaisiin kytkentä rinnakkaisten paineiden pi ja pi+1 välille, voidaan menetellä seuraavasti. Selvästikin yllä painegradienttien keskiarvo approksimoi painegradienttia pinnalla i + 1/2. Poistamalla tämä keskiarvo ja korvaamalla
se suureella (∂p/∂x)i+1/2 toisen kertaluvun tarkkuus säilyy ja saadaan kytkentä aikaiseksi
ui+1/2
Vi+1/2 ∂p Vi+1 ∂p 1 Vi ∂p 1
−
+
(5.9)
= (ui+1 + ui ) +
2
2 aii ∂x i ai+1,i+1 ∂x i+1
ai+1/2,i+1/2 ∂x i+1/2
Sijoittamalla tähän liikemääräyhtälöistä (5.7) saatavat lausekkeet voidaan todeta
ui+1/2
"
#
X
Vi+1/2 ∂p 1
1 1 X
(5.10)
aij uj +
ai+1,j uj −
=
2 aii (nb)
ai+1,i+1 (nb)
ai+1/2,i+1/2 ∂x i+1/2
5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT
92
Laskemalla pintanopeus ui+1/2 lausekkeesta (5.9) havaitaan, että tämä riippuu implisiittisesti vain paineista pi ja pi+1 kopin pinnalla olevan painegradientin (∂p/∂x)i+1/2
kautta.
Yllä oleva päättely on suurin piirtein se, mikä esiintyy alkuperäisessä Rhien ja
Chown artikkelissa. Seuraavassa esitetään termille
Vi+1/2 ∂p 1 Vi ∂p Vi+1 ∂p −
+
2 aii ∂x i ai+1,i+1 ∂x i+1
ai+1/2,i+1/2 ∂x i+1/2
myöhemmin kehitelty johto ja osoitetaan, että se oikeastaan on vain nopeuksien
keskiarvoon lisätty yhtälöä (5.6) vastaava vaimennustermi. Kuten on jo käynyt ilmi
vaimennustermi on keksitty eräänlaisena ’ad hoc’-keinona ja seuraavassa oleva johto on myöhempi yritys ymmärtää sitä. Edellä jo sovellettiin yhtälöä (5.7) vastaavaa
lauseketta nopeudelle ui+1
ai+1,i+1 ui+1 =
X
(nb)
ai+1,j uj −
∂p ∂x
i+1
Vi+1
(5.11)
Rhie ja Chow-menetelmän idea myös voidaan tulkita siten, että limitetylle kopille
kirjoitetun liikemääräyhtälön avulla kirjoitetaan keskiarvoa tarkempi lauseke pintanopeudelle. Periaatteessa liikemääräpainotteisessa interpoloinnissa tehdään samoin,
mutta lausekkeessa ei tehdä tällöin samoja approksimaatioita. Menettelyssä on syytä ymmärtää, ettei limitettyä koppia varsinaisesti käytetä apuna muussa kuin pintanopeuden lausumisessa. Limitetylle aputilavuudelle saadaan vastaava yhtälö
ai+1/2,i+1/2 ui+1/2 =
X
(nb)
ai+1/2,j uj −
∂p ∂x
i+1/2
Vi+1/2
(5.12)
Pintanopeus saadaan Taylor-sarjakehitelmistä pisteissä i ja i + 1 pisteen i + 1/2
ympärillä
∆x2 ∂ 2 u ∆x ∂u ∆x3 ∂ 3 u +
ui = ui+1/2 −
−
+O(∆x4 )
2 ∂x i+1/2
8 ∂x2 i+1/2 48 ∂x3 i+1/2
ui+1 = ui+1/2 +
(5.13)
∆x2 ∂ 2 u ∆x3 ∂ 3 u ∆x ∂u +
+
+O(∆x4 ) (5.14)
2
3
2 ∂x i+1/2
8 ∂x i+1/2 48 ∂x i+1/2
joista ratkaisemalla
∆x2 ∂ 2 u 1
−O(∆x4 )
ui+1/2 = (ui+1 + ui ) −
2
8 ∂x2 i+1/2
(5.15)
5.2. KONVEKTIONOPEUDEN INTERPOLOINTITAVAT
93
Nopeuden toiselle derivaatalle voidaan tehdä seuraavassa käytettävä differenssiapproksimaatio pisteessä i + 1/2, jolloin
ui+1/2
∆x2 ui+1 + ui − 2ui+1/2
1
= (ui+1 + ui ) −
2
8
∆x2 /4
(5.16)
Sijoittamalla tähän yhtälöistä (5.7)–(5.12) saatavat nopeudet
ui+1/2
1
1 Vi+1
Vi ∂p = (ui+1 + ui ) −
+
2
2 ai+1,i+1 aii ∂x i+1/2
Vi ∂p 1 Vi+1 ∂p +
+
2 ai+1,i+1 ∂x i+1 aii ∂x i
(5.17)
missä on tehty seuraavat luonnolliset approksimaatiot
P
(nb) (ai+1/2,j uj )
ai+1/2,i+1/2
1
=
2
P
Vi+1/2
ai+1/2,i+1/2
(nb) (ai+1,j uj )
ai+1,i+1
+
P
(nb) (ai,j uj )
aii
+ O(∆x2 )
1 Vi+1
Vi
=
+
+ O(∆x2 )
2 ai+1,i+1 aii
(5.18)
(5.19)
Yhtälö (5.17) on kopin pintanopeuden lauseke, jota soveltamalla saadaan siksakpainekuvio estetyksi. Kuten huomataan, se on muodoltaan sama kuin aikaisempi heuristisen päättelyn tuloksena saatu nopeus (5.9). Lauseke voidaan yllä olevan
mukaan tulkita nopeuksien keskiarvoksi, jota tarkennetaan Taylor-sarjakehitelmän
avulla saadulla korjaustermillä. Kyseinen ’korjaus’ ei kuitenkaan paranna diskretoinnin tarkkuutta, vaan huonontaa sitä jonkin verran. Tämä johtuu siitä, että yhtälön (5.17) paineista riippuva osa muodostaa eräänlaisen vaimennustermin, joka
vastaa Jameson-tyyppistä vaimennusta (5.6). Numeerinen vaimennus aiheuttaa aina virhettä, vaikka on tarpeellista ratkaisun laadun vuoksi. Pintanopeuden lauseke
riippuu painegradienteista koppien keskellä ja pinnalla i + 1/2. Juuri viimeksi mainittu aiheuttaa oikeantyyppisen kytkennän rinnakkaisten koppien paineiden välille.
Lauseke riippuu myös liikemääräyhtälön diskretoinnissa lävistäjälle tulevista kertoimista aii . Kun kyseessä on lävistäjätermi, merkitään sitä usein aP :llä tai AP :llä
(Ferziger-Peric). Rhie ja Chow-interpoloinnissa liikemääräyhtälön kerroin AP on
tärkeässä asemassa. Kerrointa ei pidä laskea limitetylle aputilavuudelle i + 1/2,
vaan se saadaan keskiarvona hilapisteiden arvosta AP,i+1/2 = 1/2(AP,i+1 + AP,i ).
Robustimpi tapa on käyttää yhtälöä
1
ai+1/2,i+1/2
=
1
1
1
+
2 ai+1,i+1 aii
(5.20)
5.3. PINTANOPEUDEN TARKASTELUA
94
Jo tässä vaiheessa kannattaa huomata kertoimen riippuvan esimerkiksi aikaaskeleen pituudesta. Tällöin myös pintanopeus ja sitä kautta tasapainotila riippuvat
aika-askeleen pituudesta. Lax–Wendroff-menetelmällä tämä todettiin haitalliseksi
ja lukemattomia painekorjausmenetelmän parissa puuhaavia tämä ominaisuus esti
pitkään ottamasta käyttöön tavanomaista hilaa. On mahdollista johtaa lauseke, jossa
kertoimen riippuvuutta aika-askeleesta tai alirelaksaatiosta ei synny. Pintanopeuden
lauseke on tällöin varsin monimutkainen, mutta sen käyttö on kuitenkin aivan turhaa. Kuten Ferziger-Pericissä todetaan, riippuvuus aika-askeleesta on aina pienempi
kuin menetelmän katkaisuvirhe ja tällöin sitä ei kannata ottaa huomioon.
5.3 Pintanopeuden tarkastelua
Rhie ja Chow-menetelmän kehittämisen (1983) jälkeen on kopin pinnalla vallitsevan konvektionopeuden lauseke (5.17) kopioitu reseptinä lukemattomiin ohjelmiin
analysoimatta sen merkitystä tarkemmin. Selvästi on ollut riittävää, kun on löydetty
menettely, jonka avulla voidaan käyttää tavanomaista hilaa. Menetelmän perusteita
ei ole varsinkaan aluksi pohdittu juuri ollenkaan. Myöhemmin Johansson ja Davidsson ovat esittäneet pintanopeuden lausekkeelle seuraavan yksinkertaistetun muodon
ui+1/2
1
1
1
1
1
= (ui+1 + ui ) + (Vi+1 + Vi )
+
2
2
2 AP,i+1 AP,i
1 ∂p ∂p ∂p ×
−
+
2 ∂x i−1 ∂x i
∂x i+1/2
(5.21)
ottamalla käyttöön varmuuskerroin C tämä voidaan vielä kirjoittaa muotoon
ui+1/2
missä
Vi+1/2 1 ∂p ∂p ∂p 1
= (ui+1 + ui ) + C
+
−
2
AP,i+1/2 2 ∂x i+1 ∂x i
∂x i+1/2
Vi+1/2
1
1
1
1
= (Vi+1 + Vi )
+
AP,i+1/2
2
2 AP,i+1 AP,i
(5.22)
(5.23)
Yllä olevaan lausekkeeseen lisätyllä verrannollisuuskertoimella C voidaan säätää painetermin osuutta konvektionopeuden (=pintanopeuden) lausekkeessa. Lausekkeesta nähdään myös painetermin luonne kehittämällä paineen keskeisdifferenssiin
perustuvat derivaatta-approksimaatiot pisteissä i, i + 1/2 ja i + 1 Taylor-sarjaksi
∂p ∂p (∆x)2 ∂ 3 p 1 ∂p −
+
≈
2 ∂x i+1 ∂x i
∂x i+1/2
8 ∂x3 i+1/2
(5.24)
5.3. PINTANOPEUDEN TARKASTELUA
95
Termi on verrannollinen O(∆x2 ):en, joten sillä on vain katkaisuvirheen suuruusluokkaa oleva vaikutus lopputulokseen. Sen voidaan havaita olevan karteesisessa
tapauksessa myös samaa muotoa kuin yhtälön (5.6) vaimennustermi. Kerroin C
vastaa määrätyssä mielessä kerrointa ǫ4 yhtälössä (5.6). Periaatteessa käyräviivaisessa tapauksessa lausekkeen (5.22) derivaatat tulisi korvata kopin pinnan normaalin suunnassa olevilla derivaatoilla. Käytännössä rakenteellisella hilalla riittää käyttää lausekkeelle (5.24) yhtälön (5.6) kaltaista approksimaatiota. Jatkossa osoitetaan,
että lauseke voidaan saada yksinkertaisella tavalla käyttäen MUSCL-interpolointia
paineille. Kopin tilavuus Vi+1/2 = 1/2(Vi+1 + Vi ) ja liikemääräyhtälön diskretoinnista saatava AP,i+1/2 ovat myös eräänlaisia skaalaustekijöitä, joita aivan ilmeisesti voidaan yksinkertaistaa. Karteesisella hilalla ei pintanopeuksilla (5.17) ja (5.21)
ole suurtakaan eroa. Käyräviivaisella hilalla saattaa ainakin teoriassa käydä niin,
että jos pintanopeus kirjaimellisesti lasketaan yhtälöstä (5.17), painelauseke ei olekaan enää vaimentava, sen sijaan yhtälöstä (5.6) saatu on. Kirjallisuudessa esiintyy paljon artikkeleita, joissa nähdään paljon vaivaa seuratessa alkuperäistä Rhie ja
Chow-ideaa käyräviivaisilla hiloilla. Koska lopputulos saattaa olla jopa muuta kuin
toivottu, koko monimutkainen prosessi on täysin tarpeeton.
Kun painetermin luonne on osoitettu vaimentavaksi, voidaan hankalista derivaattalausekkeista luopua ja käyttää yksinkertaista muotoa (5.6). Tällöin myös yhtälön (5.22) painelausekkeen kertoimeksi tulee pinta-ala tilavuuden sijaan. Tämä
on vastoin yleistä alalla vallitsevaa käytäntöä. Yleinen tapa on myös käyttää saatua
pintanopeutta kaikissa yhtälöissä konvektiotermissä. Jatkossa tällä kurssilla paineosuus lisätään vain jatkuvuusyhtälöön, joka kuten aiemmin todettiin, ei ole samassa mielessä säilymisyhtälö kuin kokoonpuristuvassa tapauksessa, vaan eräänlainen
side-ehto. Tavanomaisen hilan käyttö siis mahdollistuu, mikäli jatkuvuusehtoon lisätään sopiva paineista riippuva vaimennustermi. Muihin yhtälöihin sitä ei välttämättä tarvitse lisätä, vaan niissä pintanopeuksina voidaan käyttää viereisten koppien nopeuksien keskiarvoa. Koska termi on vaimentava, se aiheuttaa jonkinlaista lisävirhettä ratkaisuun verrattuna limitettyyn hilaan. Käytännössä ero on todettu kuitenkin mitättömän pieneksi. Kannattaa kuitenkin huomata, että diskretoidun
yhtälön katkaisuvirhe kasvaa, vaikka edellä olleessa johdossa periaatteessa etsittiin
keskiarvoa tarkempaa lauseketta konvektionopeudelle.
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
96
5.4 Yksidimensioinen menetelmä tavallisella hilalla
Seuraavaksi esitetään toimiva paineen ja nopeuden kytkentä tavanomaisella laskentahilalla. Skalaariyhtälöiden ratkaisu tapahtuu samalla tavoin kuin limitetyn hilan
tapauksessa.
qρ
i − 1/2
q"
pi , ui
i + 1/2
pi + 1, ui + 1
}
P a i n e − j a l i i k eämnäoäord i
Kuva 5.4: Yksidimensioinen diskretointi tavanomaisella hilalla
Aloitetaan diskretointi liikemääräyhtälöstä:
Vi
d(ρu)i
+(Sρu2 )i+1/2 −(Sρu2 )i−1/2 +(Sp)i+1/2 −(Sp)i−1/2 −pi (Si+1/2 −Si−1/2 ) = (qρ uqx +qm )i
dt
(5.25)
Nyt erona limitettyyn hilaan on, että liikemäärävuo määritetään samalla pinnalla
kuin skalaarien vuot. Yksidimensioinen liikemäärävuo voidaan pinnalla i + 1/2
kirjoittaa muotoon
(mu)
˙ i+1/2 +Si+1/2 pi+1/2 = max(m
˙ i+1/2 , 0)uli+1/2 −max(−m
˙ i+1/2 , 0)uri+1/2 +Si+1/2 pi+1/2
(5.26)
missä arvot uli+1/2 ja uri+1/2 saadaan interpoloimalla hilapistearvoista i, i ± 1 ja i + 2
MUSCL-kaavalla. Pintapaine pi+1/2 lasketaan keskiarvona. Kuten limitetyllä hilallakin, implisiittistä vaihetta varten kirjoitetaan 1. kertaluvun ylävirta-approksimaatio
max(m
˙ i+1/2 , 0)ui − max(−m
˙ i+1/2 , 0)ui+1 + Si+1/2 pi+1/2
(5.27)
Linearisoimalla 1. kertaluvun vuon lausekkeen konvektiivinen osa F pinnalla i +
1/2 saadaan
n+1
n
Fi+1/2
= Fi+1/2
+
n
∂Fi+1/2
n
∆u = Fi+1/2
+max(m
˙ i+1/2 , 0)∆ui −max(−m
˙ i+1/2 , 0)∆ui+1
∂u
(5.28)
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
97
Vastaavasti pinnalla i − 1/2
n+1
n
Fi−1/2
= Fi−1/2
+
n
∂Fi−1/2
n
∆u = Fi−1/2
+max(m
˙ i−1/2 , 0)∆ui−1 −max(−m
˙ i−1/2 , 0)∆ui
∂u
(5.29)
Diskretoimalla yhtälö (5.25) implisiittisesti ilman lähdetermejä ja sijoittamalla vuon
linearisoinnit (5.28) ja (5.29) saadaan liikemääräyhtälöksi
Vi ρi
+ max(m
˙ i+1/2 , 0) + max(−m
˙ i−1/2 , 0)]∆ui
∆t
− max(−m
˙ i+1/2 , 0)∆ui+1 − max(m
˙ i−1/2 , 0)∆ui−1 =
[
−(mu)
˙ i+1/2 + (mu)
˙ i−1/2 − (Sp)i+1/2 + (Sp)i−1/2 + pi (Si+1/2 − Si−1/2 ) + (qρ uqx + qm )i
|
{z
}
= Riu
(5.30)
Kuten limitetynkin hilan yhteydessä residuaali kannattaa laskea vuoarvojen erotuksena Ru = −F n
+ Fn
+ pi (Si+1/2 − Si−1/2 ) ≈ Vi (∇ · ρV~ V~ + ∇p). Erona
i
i+1/2
i−1/2
on nyt ainoastaan se, että residuaali lasketaan pisteessä i. Yhtälö (5.30) on tridiagonaalinen ja se voidaan kirjoittaa muotoon
A∆u = Ru
(5.31)
missä matriisin A nollasta poikkeavat termit ovat
ai,i−1 ≡ AW,i = − max(m
˙ i−1/2 , 0)
ai,i+1 ≡ AE,i = − max(−m
˙ i+1/2 , 0)
Vi ρi
+ max(m
˙ i+1/2 , 0) + max(−m
˙ i−1/2 , 0)
aii ≡ AP,i =
∆t
Vi ρi
=
− AW,i − AE,i
∆t
(5.32)
Nyt liikemääräyhtälön geometriset suureet liittyvät samaan hilaan kuin skalaariyhtälöillä. Myös massavirrat m
˙ i+1/2 lausutaan aina samojen laskentatilavuuksien pinnoilla. Tämän seurauksena yllä olevat kertoimetkin ovat samoja kaikille yhtälöille,
mikä on selkeä etu. Tärkein kerroin on lävistäjällä oleva ’AP ’, joka määrittelee painegradientin ja nopeuden ui riippuvuussuhteen. Kuten edellisessä kappaleessa tuotiin esille, kerrointa voidaan käyttää myös konvektionopeuden laskennassa. Yhtälön
residuaaliosassa tulee käyttää konvektoituville suureille uri+1/2 ja uli+1/2 MUSCLdiskretointia.
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
98
Painekorjausmenetelmässä käytetään yleensä samaa massavirran m
˙ i+1/2 arvoa
kaikissa yhtälöissä, myös jatkuvuusyhtälössä. Tällöin
(5.33)
m
˙ i+1/2 = (Sρ¯
u)i+1/2
missä u¯ on pintanopeus, joka riippuu myös paineista yhtälön (5.22) kautta. Kuten
jo aiemmin todettiin, paineriippuvuus jatkuvuusehdossa jo takaa tasaisen painejakautuman. Tämän vuoksi riittää liikemäärä- ja skalaariyhtälöissä laskea massavirta
yhtälöstä
m
˙ i+1/2 = (Sρ)i+1/2
ui+1 + ui
2
(5.34)
tai yhtälöstä
m
˙ i+1/2 = Si+1/2
(ρi+1 ui+1 + ρi ui )
2
(5.35)
Pintanopeuden käsitettä u¯ ei siis välttämättä tarvitakaan. Nopeus voidaan aina ottaa
keskiarvona ja painelauseke ymmärtää vain jatkuvuusehdossa olevaksi vaimennustermiksi. Vaimennuksen vähentäminen tällä tavoin voi kuitenkin johtaa esimerkiksi
energiayhtälön ratkaisussa lämpötilavärähtelyihin.
Jatkuvuusyhtälöstä m
˙ n+1
˙ n+1
i+1/2 − m
i−1/2 = 0 saadaan linearisoimalla
m˙ ′ i+1/2 − m˙ ′ i−1/2 = −m
˙ ∗i+1/2 + m
˙ ∗i−1/2
(5.36)
ja edelleen
m˙ ′ i+1/2 −m˙ ′ i−1/2 = (Sρ)i+1/2 u′i+1/2 −(Sρ)i−1/2 u′i−1/2 = −m
˙ ∗i+1/2 +m
˙ ∗i−1/2 = −∆m
˙ ∗i
(5.37)
Tässä yhteydessä on siis oikealle puolelle massataseeseen
∆m
˙ ∗i
lisättävä vaimen-
nustermi. Tämä tarkoittaa, että tässä massataseen laskenta on perustettava yhtälöön
(5.22) tai vastaavaan. Tasavälisellä hilalla yhtälöstä (5.22)
Si+1/2
1
[pi+2 − 3pi+1 + 3pi − pi−1 ]
u∗i+1/2 = (u∗i+1 + u∗i ) + C
2
4AP,i+1/2
(5.38)
Tässä muodossa painelauseke toimii aina vaimennusterminä myös käyräviivaisessa
tapauksessa. Suuria laadullisia eroja (kuin korkeintaan parempaan suuntaan) ei alkuperäiseen Rhie ja Chow-menetelmään verrattuna ratkaisussa ole. Yhtälö voidaan
laittaa vielä kompaktimpaan muotoon käyttämällä MUSCL-interpoloinnilla saatuja
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
99
paineita pl ja pr kopin pinnan kahden puolen. Jos oletetaan käytetyn toisen kertaluvun ylävirtamenetelmää näille suureille, voidaan yhtälö (5.38) kirjoittaa muotoon
Si+1/2
1
u∗i+1/2 = (u∗i+1 + u∗i ) − C
[pr
− pli+1/2 ]
2
2AP,i+1/2 i+1/2
(5.39)
mikä lienee yksinkertaisin massataseessa sovellettava nopeuden lauseke, jolla painekorjausmenettely saadaan sovelletuksi tavanomaiselle hilalle. Koska keskeisdifferenssi ei lisää vaimennusta, on selvää, että vaimennus pienenee, jos MUSCLkaavassa siirrytään täysin ylävirtapainotteisesta paineen interpoloinnista keskeisdifferenssiä kohden. Mikäli käytetään ykkösestä poikkeavia arvoja kertoimelle C,
huomataan sillä olevan saman vaikutuksen. Järkevintä on kiinnittää paineen interpolointi tässä toisen kertaluvun ylävirtamenettelyksi ja painottaa vaimennusta kertoimella C, mikäli sellaista tarvetta on. Konvektoituvien suureiden uri+1/2 ja uli+1/2
interpolointi on tällöin hoidettava paineesta erillään. Periaatteessa voisimme saada
vielä voimakkaamman kytkennän paineiden välille käyttämällä ensimmäisen kertaluvun menetelmää paineille pr ja pl . Tällöin modifioituun yhtälöön tulisi kuitenkin
paineen diffuusiotermi, mikä saattaa pilata ratkaisun. Tämänkaltainen painetermi
modifioidussa yhtälössä ei kuitenkaan välttämättä ole vaikutukseltaan yhtä suuri
kuin konvektoituvien suureiden ensimmäisen kertaluvun diskretoinnista aiheutuvat
katkaisuvirheen termit. Asian tutkiminen on vielä näiltä osin kesken.
Edellä on todettu, että riittää, kun liikemäärä- ja skalaariyhtälöissä käytetään
noodinopeuksien keskiarvoa konvektionopeutena. Jos käytetään MUSCL-interpolointia voitaisiin periaatteessa kuvitella käytettävän nopeuksia uri+1/2 ja uli+1/2 nopeuksien ui+1 ja ui sijaan konvektionopeuksien lausekkeessa (5.38). Tähän ei ole
periaatteellista estettä, mutta kokemuksen mukaan (jälleen!) parempilaatuinen ratkaisu saadaan, kun käytetään nopeuksina yksinkertaista keskiarvoa.
Massataseyhtälöstä (5.37) saadaan painekorjausyhtälö sijoittamalla siihen pintanopeuden muutoksen u′i+1/2 ja paineiden muutoksen välinen lauseke. Jos pintanopeuden muutos u′i+1/2 lasketaan yhtälöstä (5.38) tai (5.39) saataisiin pentadiagonaalinen yhtälö painekorjauksille. Jos yhtälö (5.38) linearisoitaisiin vain pinnan
kahden puolen olevien paineiden suhteen, saataisiin painetermin eteen ylimääräinen tekijä 3/4. Yleinen tulkinta on se, että linearisoitaessa yhtälöä (5.22) jätetään
kaksi ensimmäistä painederivaattaa pois pohtimatta niiden riippuvuutta noodipisteiden paineista. Tällöin pintanopeuden muutokselle saadaan yhtälöä (4.39) vastaa-
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
100
va lauseke. Parempi tulkinta asialle on, että painekorjausyhtälön kertoimien on oltava sellaisia, että ne noudattavat liikemääräyhtälön linearisointia ja ajavat siten
ratkaisua myös liikemääräyhtälön ratkaisua kohden. Diskretoimalla liikemääräyhtälö limitetyssä apuhilassa saadaan yhtälö (4.39) ja SIMPLE-menetelmällä tehdään
yksinkertaistus
AP,i+1/2 u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i )
(5.40)
Sijoittamalla tämä yhtälöön (5.37)
−
(S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′
(S 2 ρ)i+1/2 ′
pi+1 +
+
pi −
p = −∆m
˙ ∗i
AP,i+1/2
AP,i+1/2
AP,i−1/2
AP,i−1/2 i−1
(5.41)
Painekorjausyhtälöstä tuli tavanomaisella hilalla muodollisesti täsmälleen sama kuin
limitetyllä hilalla. Ainoa ero on, että massataseen virheeseen on otettava mukaan
paineista saatava vaimennustermi, joka on määritelty yhtälöllä (5.38). Kyseinen
muoto voidaan suoraan ottaa käyttöön myös käyräviivaisella hilalla monidimensioisessa tapauksessa. Yhtälössä (5.38) on pyritty eroon lähdetermimuodossa olevista
kryptisistä painegradienteista, joiden avulla vaimennustermi yleensä kirjallisuudessa esitetään. Kyseisten painegradienttien efektiivinen vaikutus on juuri sama kuin
yhtälön (5.38) vaimennustermin.
Painekorjausalgoritmi tavanomaisella hilalla voidaan tämän jälkeen pukea seuraavaan muotoon:
1. Ratkaistaan nopeudet diskretoidusta liikemääräyhtälöstä
A∆u = Ru
Koppien rajapinnoilla lasketaan massavirrat yhtälöstä
1
m
˙ i+1/2 = Si+1/2 [(ρu)i+1 + (ρu)i ]
2
(5.42)
tai yhtälöstä (5.34). Mikäli tiheys on vakio lausekkeet ovat identtisiä. Noodisuureiden ja pinta-arvojen, kuten massavirta, indeksointi on esitetty kuvassa
5.5. Tässä vaiheessa on siis myös mahdollista käyttää samaa vaimennustermiä (5.39) kuin jatkuvuusehdossa, mutta se ei ole välttämätöntä. Vaimennustermi liikemääräyhtälöön saadaan korvaamalla keskiarvolausekkeessa (5.42)
nopeudet yhtälön (5.38) pintanopeudella. Kannattaa kuitenkin taas huomata,
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
i + 1/2
i − 1/2
i
I
I
101
i + 3/2
i + 1
I + 1
I +1
taulukointi
ohjelmassa
Kuva 5.5: Laskentatilavuuksien ja pintojen indeksointi ilman reunaehtokoppeja.
että kokonaisuudessaan liikemääräyhtälöä ei tällöin tarkenneta, vaan siihen
lisätään vaimennustermi. Tämä on kuitenkin vallitseva tapa, mutta tällä kurssilla sitä ei käytetä, koska siitä ei näyttäisi olevan selvää etua. Konvektoituvat
nopeudet ul,r
i±1/2 lasketaan MUSCL-kaavasta. Paineet pi±1/2 koppien rajapinnoilla lasketaan keskiarvona rinnakkaisista hilapistearvoista. Tämän jälkeen
vuot ja niistä saatava liikemääräyhtälön residuaali Riu on laskettu. Seuraavaksi lasketaan implisiittisen vaiheen kertoimet kullekin laskentatilavuudelle i
yhtälöstä (5.32) ellei tätä ole tehty jo edellisellä kierroksella kohdassa 7 tai
8. Yhtälö on tridiagonaalinen ja sen singulaarisuus estetään aikaderivaattatermillä.
2. Ratkaistaan tridiagonaalisesta yhtälöstä nopeuden muutokset ∆ui ja päivitetään nopeuskentäksi u∗ . Talletetaan diagonaalitermi AP,i .
3. Ratkaistaan uusien nopeuksien u∗ avulla noodikohtaiset massatasevirheet ∆m
˙ ∗i =
m
˙ ∗i+1/2 − m
˙ ∗i−1/2 . Nyt massavirrat m
˙ ∗i±1/2 on laskettava vaimennustermin kera
m
˙ ∗i+1/2
= Si+1/2
(
)
(Sρ)i+1/2 r
1
[p
− pli+1/2 ]
[(ρu∗ )i+1 + (ρu∗ )i ] − C
2
2AP,i+1/2 i+1/2
(5.43)
missä AP,i+1/2 lasketaan keskiarvona talletetuista arvoista ja suureet pri+1/2
ja pli+1/2 interpoloidaan toisen kertaluvun ylävirtamenettelyllä. Kertoimelle
voidaan antaa arvo C = 1/2. Mikäli massatasevirheen sopivasti valittu normi
jää annetun virherajan alapuolelle, iterointi lopetetaan.
4. Ratkaistaan massatasevirheiden avulla painekorjaukset yhtälöstä
−
(S 2 ρ)i+1/2 ′
(S 2 ρ)i+1/2 (S 2 ρ)i−1/2 ′ (S 2 ρ)i−1/2 ′
pi+1 +
+
pi −
p = −∆m
˙ ∗i
AP,i+1/2
AP,i+1/2
AP,i−1/2
AP,i−1/2 i−1
(5.44)
5.4. YKSIDIMENSIOINEN MENETELMÄ TAVALLISELLA HILALLA
102
5. Lasketaan nopeuskorjaukset SIMPLE-menettelyllä yhtälöstä
u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i )/AP,i+1/2
Näiden avulla päivitetty nopeuskenttä toteuttaa jatkuvuusyhtälön eksaktisti,
muttei liikemääräyhtälöä. Korjaus on suoraviivaista pintanopeuksille, joiden
avulla voidaan korjata keskipisteiden nopeuksia
1
u′i = (u′i+1/2 + u′i−1/2 )
2
Vaihtoehtoisesti voidaan laskea pintapaineet
1
p′i+1/2 = (p′i+1 + p′i )
2
ja korjata niiden avulla nopeus
u′i = −Si+1/2 (p′i+1/2 − p′i−1/2 )/AP,i
6. Päivitetään paine ja nopeus yhtälöistä
pn+1 = p∗ + αp p′
un+1 = u∗ + αu u′
Mikäli nopeutta alirelaksoidaan tässä vaiheessa, nopeudet eivät toteuta jatkuvuusyhtälöä.
7. Ratkaistaan skalaarisuureet (esimerkiksi entalpia) yhtälöä (4.46) vastaavista
yhtälöistä. Yhtälön kertoimissa ja residuaalin laskennassa käytetään nyt uusia
nopeuksien arvoja. Mikäli tiheys on vakio, massavirrat ja kertoimet (5.32)
voidaan tallettaa seuraavalle kierrokselle.
8. Jos tiheyttä ei pidetä vakiona, se ratkaistaan tilayhtälöstä ρ = ρ(p, h). Samoin
viskositeetti, lämmönjohtavuus ja muut mahdolliset suureet. Sen jälkeen edetään kohtaan 1.
Algoritmissa on vain pieniä eroja verrattuna limitetyn hilan vastaavaan algoritmiin. Laskentakoodin muuttaminen limitetystä hilasta tavanomaiseen on hyvin
yksinkertaista, koska erot ovat pieniä. Geometrian käsittely tavanomaisella hilalla
on limitettyyn verrattuna yksinkertaista. Limitetyllä hilalla ei tarvita kuitenkaan mitään ylimääräistä vaimennustermiä, mikä on jonkinasteinen etu. Todettakoon, että
suurin osa numeerisesta vaimennuksesta tulee kummallakin hilatyypillä konvektoituvien suureiden ylävirtapainotuksesta eikä lisätystä painetermistä.
5.5. REUNAEHTOJEN KÄSITTELY
103
5.5 Reunaehtojen käsittely
Reuna-arvot on käsiteltävä samalla toisen kertaluvun tarkkuudella kuin sisäpisteiden laskentakin. Tällöin reunoille on varattava kaksi koppiriviä, joissa olevia arvoja
käytetään hyväksi MUSCL-interpoloinnissa laskenta-alueen reunalle. Reunaehtojen antamiselle on olemassa muitakin keinoja, mutta ylimääräisten ’haamukoppien’
käyttö on kaikkein yksinkertaisinta.
2
2
3
3
4
I M A X +I M
2 A X + I3M A X +I 3
M A X + I4M A X + 4
{
{
1
reuna−arvot
reuna−arvot
l a s k e n t a − a l u e enna r e u
Kuva 5.6: Laskentatilavuuksien ja pintojen indeksointi reunoilla
Indeksoinnissa on syytä olla huolellinen, ensimmäinen laskenta-alueen koppi on
no. 3 ja yhdellä rivillä tilavuuksia on yhteensä IMAX + 4, jos IMAX on laskentaalueen noodimäärä. Seuraavassa reunaehdot annetaan käyttäen ohjelmoinnissa sovellettavaa indeksointia.
Suoraviivaisin ja myös stabiilein sisäänvirtausreunaehto on antaa nopeus noodeissa 1 ja 2. Joskus tämä nopeus ei sinällään anna pinnalle 3 eli sisääntuloreunalle
oikeaa massavirtaa, koska tämä on suoraviivaisinta laskea samalla tavoin kuin sisäalueessakin eli keskiarvona pisteistä 2 ja 3. Toivottu massavirta saadaan ekstrapoloimalla tilavuuteen 2 nopeus
u2 = 2uin − u3
(5.45)
missä uin on reunalle toivottu nopeus. Implisiittinen vaihe voidaan käsitellä siten,
että se ulottuu laskenta-alueen reunojen yli yhden kopin verran. Linearisoimalla
yhtälö (5.45) saataisiin yhtälön (5.31) ensimmäiselle riville a2,2 = 1 ja a2,3 = 1.
Voidaan myös asettaa
∆u2 = 0
(5.46)
eli a2,3 = 0. Tässä matriisin rivien numerointi on aloitettu kakkosesta, koska ensimmäinen ratkaistava nopeus liittyy laskentatilavuuteen 2.
5.5. REUNAEHTOJEN KÄSITTELY
104
Massavirran lisäksi on asetettava liikemäärä kopissa 1 siten, että interpoloinnista laskenta-alueen rajapinnalle saadaan toivottu arvo suureelle ul3 . Yksinkertaisella
ekstrapolaatiolla
(5.47)
u1 = 2u2 − u3
saadaan toisen kertaluvun ylävirtamenettelyllä pinnan 3 vasemmalle puolelle ekstrapoloitua uin .
Ulosvirtausnopeus voidaan yksinkertaisesti ekstrapoloida laskenta-alueesta. Implisiittisessä vaiheessa asetetaan
(5.48)
∆uIM AX+3 = ∆uIM AX+2
Reunaehdot ja sisäpisteet voidaan yhdistää yhtälöryhmäksi, joka on seuraavan
muotoinen:

1
a
 3,2

 0

 ..
 .
0
0
a3,3
a4,3
..
.
0
a3,4
a4,4
..
.
0
0
a4,5
..
.
···
···
···
0
0
0
..
.
···
···
···
..
.
0
0
0
0
· · · · · · −1

0 
0



0


0
1
∆u2
∆u3
..
.
∆uimax+3






=

0
R3
..
.













 Rimax+2 
0
Paineelle sisäänvirtauskohdassa voidaan käyttää seuraavia ekstrapolaatioita
p2 = 2p3 − p4
p1 = 2p2 − p3
(5.49)
Ulosvirtausreunalla on luontevinta kiinnittää paine, kuten aikaisemmin on todettu.
Tällöin yksinkertaisin tapa on asettaa
pIM AX+3 = pout
pIM AX+4 = pout
(5.50)
Joissakin tilanteissa saattaa laskenta-alueen sisällä ulosvirtausreunalla vallita nollasta poikkeava painegradientti, jolloin yhtälön (5.50) tasainen reunapaine aiheuttaa
värähtelyä ratkaisuun. Paras keino on viedä laskenta-alue niin kauas, ettei paineessa esiinny gradienttia. Useimmiten tähän ei pystytä. Tällöin on mahdollista asettaa ulosmenopaine laskenta-alueen reunalla ja ekstrapoloida reunakoppeihin sopivat paineet samalla tavoin kuin edellä asetettiin massavirta sisäänmenoreunalle.
5.6. YKSINKERTAISTETTU VAIMENNUSTERMI
105
5.6 Yksinkertaistettu vaimennustermi
Kuten edellä on tullut esille paineesta riippuva vaimennustermi on enemmän ’ad
hoc’-luonteinen viritys, kuin täsmällisesti perusperiaatteista johdettu korjauslauseke. Juuri tämä mahdollistaa termin yksinkertaistamisen, jota on jossain määrin viime vuosina esiintynyt. Pääosa kehitystyöstä painekorjauksen alalla on kuitenkin
uponnut alkuperäisen Rhie ja Chow menettelyn täsmälliselle kopioimiselle monimutkaisempaan tilanteeseen. Viime aikoina erityisesti kolmio- tai tetraedrihiloille.
Joitakin ehdotuksia on myös esiintynyt, joissa ehdotetaan luopumista koko vaimennustermistä (esim. Date). Tarkempi tarkastelu on kuitenkin osoittanut, että niissä tapauksissa sahalaitakuvio on pysynyt poissa joistain muista syistä, esimerkiksi
reunaehtojen sitovan vaikutuksen vuoksi. Oleellista vaimennustermissä on sitoa jatkuvuusyhtälössä rinnakkaiset paineet yhteen. Tällöin aivan ilmeisesti jatkuvuusehdossa voidaan käyttää myös seuraavaa muotoa
m
˙ ∗i+1/2
= Si+1/2
(
(Sρ)i+1/2 r
1
[(ρu∗ )i+1 + (ρu∗ )i ] − C
[pi+1/2 − pli+1/2 ]
2
2m
˙∞
)
(5.51)
missä m
˙ ∞ on jokin sopivasti valittu massavirtaskaala. Yhtälön (5.51) vaimennustermissä on se hyvä puoli, että termin kerroin pysyy vakiona. Alkuperäisessä menetelmässä AP riippuu aika-askeleesta ja virtausnopeuksista ja saattaa vaihdella huomattavastikin iteraation kuluessa tai laskenta-alueen eri osissa. Myös alkuperäisen
menetelmän vaimennustermin kokoa voidaan rajoittaa (Ari Miettinen, Lisensiaattityö), vaikka se ei ole välttämätöntä. Joissain tilanteissa hyvin alhaisella nopeudella
vaimennustermin koko saattaa olla huomattavan suuri verrattuna nopeuksien keskiarvoon. Yleensä tällä ei ole merkitystä, koska konvektionopeuden arvo jää kuitenkin olemattoman pieneksi. Juuri tässä yhteydessä on erityisesti huomattava, että
johdettaessa painekorjausyhtälöä käytetään aina pintanopeuden ja painegradientin
välistä yhteyttä (5.40), joka saadaan liikemääräyhtälöstä eikä linearisoimalla jatkuvuusehdossa esiintyvää massavirtaa (5.51). Painekorjausyhtälö (5.41) säilyy siis
samana, vaikka pintanopeuslauseke muuttuisikin.
5.6. YKSINKERTAISTETTU VAIMENNUSTERMI
106
• Ilman erikoistoimenpiteitä aiheutuu tavanomaisesta hilasta ns. shakkilautaratkaisu kokoonpuristumattoman virtauksen yhteydessä. Ilmiö ei
aina esiinny yhtä voimakkaana ja saattaa sopivalla reunojen käsittelyllä
olla jopa vaikeasti aikaansaatavissa.
• Tavanomaisella hilalla tilanne korjaantuu käyttämällä vaimennustermiä
d4,i+1/2 = ǫ4 (φi+2 − 3φi+1 + 3φi − φi−1 )
• Rhie ja Chow -menetelmän keskeinen idea on lisätä paineesta riippuva
vaimennustermi pintanopeuden interpoloinnin yhteydessä. Vaimennustermi pintanopeudessa on verrannollinen paineen kolmanteen derivaattaan. Sovellettaessa tätä kontrollitilavuuden pinnoille päädytään modifioidussa yhtälössä neljännen kertaluvun vaimennukseen, joka on verrannollinen O(∆x2 ). Vaimennustermi ei ole välttämätön muussa kuin
massataseessa.
• Pintanopeuden laskentakaavaa on syytä yksinkertaistaa, muuten se ei
olisi aina edes vaimentava. Lausekkeeseen voidaan lisätä verrannollisuuskerroin C. Lauseke riippuu myös aika-askeleen pituudesta, mutta
tästä ei yleensä ole haittaa, koska termi on verrannollinen O(∆x2 ):n.
• Paineet ja konvektionopeudet liikemääräyhtälössä voidaan ottaa keskiarvoina rinnakkaisista hilapistearvoista.
• Liikemääräyhtälön implisiittinen vaihe on tridiagonaalinen.
• Painekorjausyhtälö on muodollisesti saman näköinen kuin limitetyllä hilalla.
• Painetta on alirelaksoitava samaan tapaan kuin limitetyllä hilalla. Ratkaisut eri hilatyypeillä eivät eroa toisistaan merkittävästi.
• Implisiittiset vaiheet ja painekorjausyhtälö voidaan laajentaa yhden kopin verran laskenta-alueen ulkopuolelle, jolloin reunaehdot saadaan käsitellyiksi implisiittisesti.
• Vaimennustermi voidaan skaalata jopa jollain sopivalla referenssimassavirralla kertoimen AP,i+1/2 sijaan.
Päivitetty 4.2.2014
107
6 Monidimensioinen
painekorjausmenetelmä
6.1 Yhtälöiden diskretointi
Edellä esitetty yksidimensioinen painekorjausmenetelmä on suoraviivaisesti laajennettavissa useampaan dimensioon. Varsinainen virtausratkaisu on kaksi- tai kolmidimensioinen ja yleensä ratkaistavana on kitkallinen virtaus, jolloin diskretoitavaksi
tulee myös diffuusiotermejä. Seuraavassa tarkastellaan kaksidimensioista virtausta,
mutta laajennus kolmidimensioiseen tilanteeseen on suoraviivaista. Esimerkki täs-
N
n
W
P
w
e
E
s
S
{
Laskenta−alue
{
Haamu−
kopit
Kuva 6.1: Laskenta-alue ’haamukoppeineen’ ja laskentatilavuus P varustettuna ilmansuuntamerkinnöillä.
sä yhteydessä sovellettavasta suorakulmaisesta hilasta on kuvassa 6.1. Reunaehdot
annetaan kuten edelläkin kahden ’haamukoppi’-rivin avulla. Näiden avulla alue liitetään joko naapurilohkoihin tai niissä annetaan sisään- ja ulosvirtausreunaehdot.
6.1. YHTÄLÖIDEN DISKRETOINTI
108
Liikemääräyhtälöstä saadaan u-nopeuskomponentille
Z
Z
Z
∂
ρudV + ρuV~ · ~ndS + pnx dS =
∂tZ V
S
S Z
∂u
∂u
∂u
+ ny
+ nz )dS + bx dV
µ (nx
∂x
∂y
∂z
V
S
(6.1)
ja v-komponentille
Z
Z
Z
∂
ρvdV + ρv V~ · ~ndS + pny dS =
∂tZ V
S
S Z
∂v
∂v
∂v
+ ny
+ nz )dS + by dV
µ (nx
∂x
∂y
∂z
V
S
(6.2)
Diskretoimalla nämä saadaan kaksi liikemääräyhtälöä:
Vi
d(ρu)i
+ (Sρu2 )i+1/2 − (Sρu2 )i−1/2 + (Sρuv)j+1/2 − (Sρuv)j−1/2
dt
+(Sp)i+1/2 − (Sp)i−1/2
−(Sµux )i+1/2 + (Sµux )i−1/2 − (Sµuy )j+1/2 + (Sµuy )j−1/2 = Vi bx,i
Vi
d(ρv)i
+ (Sρuv)i+1/2 − (Sρuv)i−1/2 + (Sρv 2 )j+1/2 − (Sρv 2 )j−1/2
dt
+(Sp)j+1/2 − (Sp)j−1/2
−(Sµvx )i+1/2 + (Sµvx )i−1/2 − (Sµvy )j+1/2 + (Sµvy )j−1/2 = Vi by,i
(6.3)
Yllä on käytetty lyhennysmerkintää, jossa vain poikkeama indekseistä i ja j on mer-
i, j+1
i, j+1/2
i−1, j
i, j
i, j−1/2
i+1, j
Kuva 6.2: Indeksien lyhennysmerkinnät
kitty näkyviin. Esimerkiksi merkintä i+ 12 tarkoittaa pintaa i+ 21 , j. Diffuusiotermeissä saadaan normaali toisen kertaluvun tarkkuus keskeisdifferensseillä ux,i+1/2 =
(ui+1 − ui )/∆x ja uy,j+1/2 = (uj+1 − uj )/∆y. Vastaavat yhtälöt pätevät derivaatoille vx ja vy .
Yksidimensioisella virtauksella lähdetermeillä voitiin kuvata monia ilmiöitä,
jotka tosiasiallisesti aiheutuvat virtauksen monidimensioisuudesta, kuten kitkaa. Nyt
6.1. YHTÄLÖIDEN DISKRETOINTI
109
kitka tulee mukaan diffuusiotermin kautta. Monidimensioisella virtauksella lähdetermi kuvaa tilavuusvoimia kuten gravitaatio-, noste- tai sähkömagneettista voimaa.
Ottamalla huomioon, että i-suuntaa vasten kohtisuorilla pinnoilla
m
˙ i+1/2 = (Sρu)i+1/2
(6.4)
ja vastaavasti j-suuntaa vasten kohtisuorilla pinnoilla
m
˙ j+1/2 = (Sρv)j+1/2
(6.5)
saadaan yhtälöt muotoon
d(ρu)i
+ (mu)
˙ i+1/2 − (mu)
˙ i−1/2 + (mu)
˙ j+1/2 − (mu)
˙ j−1/2
Vi
dt
+(Sp)i+1/2 − (Sp)i−1/2
−(Sµux )i+1/2 + (Sµux )i−1/2 − (Sµuy )j+1/2 + (Sµuy )j−1/2 = Vi bx,i
Vi
d(ρv)i
+ (mv)
˙ i+1/2 − (mv)
˙ i−1/2 + (mv)
˙ j+1/2 − (mv)
˙ j−1/2
dt
+(Sp)j+1/2 − (Sp)j−1/2
−(Sµvx )i+1/2 + (Sµvx )i−1/2 − (Sµvy )j+1/2 + (Sµvy )j−1/2 = Vi by,i
(6.6)
Yhtälöt poikkeavat yksidimensioisista virtauksista oikeastaan vain siinä, että laskentatilavuudella on enemmän kuin kaksi seinää. Yksidimensioisessa tapauksessa ei myöskään yleensä ole mukana diffuusiotermiä ja lisäksi nyt ratkaistavana on
useampia liikemääräyhtälöitä. Yhtälöt voidaan käsitellä kuten skalaariyhtälöt jättämällä implisiittisessä vaiheessa u2 - ja v 2 -kaltaiset termit linearisoimatta. Tällöin
kaikkien yhtälöiden kertoimet implisiittisessä vaiheessa tulevat samoiksi, mikä on
huomattava etu. Jos kertoimet on laskettu valmiiksi edellisen iteraatiokierroksen
nopeuskorjauksien jälkeen, voidaan niitä käyttää tapauksessa ρ = vakio myös seuraavalla kierroksella liikemääräyhtälöillä. Kaikki kaksi tai kolme yhtälöä voidaan
myös ratkaista yhdellä kerralla. Vaihtoehtoisesti ne voidaan ratkaista yksi kerrallaan ja päivittää jokaisen ratkaisukerran jälkeen vastaava nopeuskomponentti. Tällöin voidaan seuraavaa liikemääräyhtälöä varten laskea uudet residuaalit ja implisiittisen vaiheen kertoimet. Tämä lähestymistapa tietenkin kasvattaa laskenta-aikaa,
mutta saattaa nopeuttaa konvergenssia.
Seuraavassa tarkastellaan x-suuntaista liikemääräyhtälöä. Yhtälön oikea puoli
eli residuaali voidaan kirjoittaa muotoon
˙ i+1/2 + (mu)
˙ i−1/2 − (mu)
˙ j+1/2 + (mu)
˙ j−1/2
Riu = −(mu)
6.1. YHTÄLÖIDEN DISKRETOINTI
110
−(Sp)i+1/2 + (Sp)i−1/2
+(Sµux )i+1/2 − (Sµux )i−1/2 + (Sµuy )j+1/2 − (Sµuy )j−1/2 + Vi bx,i
u
u
u
u
= −Fi+1/2
+ Fi−1/2
− Fj+1/2
+ Fj−1/2
+ Vi bx,i
(6.7)
Liikemäärätase saadaan siis neljän (tai kuuden kolmidimensioisessa tapauksessa)
vuoarvon taseesta, johon lisätään lähdetermi. Erillinen vuon käsite yksinkertaistaa
huomattavasti laskennan suorittamista. Vuo rajapinnalla lasketaan seuraavasti
u
Fi+1/2
= (mu)
˙ i+1/2 + Si+1/2 [−µi+1/2
ui+1 − ui
+ pi+1/2 ]
∆xi+1/2
(6.8)
missä ∆xi+1/2 on tilavuuksien i ja i + 1 keskipisteiden välinen etäisyys. Massavirta m
˙ lasketaan yhtälöistä (6.4) ja (6.5) keskiarvona kuten yksidimensioisessakin
tapauksessa. Vaihtoehtoisesti massavirta voidaan laskea samalla tavoin kuin jatkuvuusyhtälössä yhdistämällä siihen Rhie-Chow -termi. Paine pi+1/2 lasketaan keskiarvona ja konvektoituva nopeus ui+1/2 MUSCL-kaavasta. Pinnalla j +
u
Fj+1/2
= (mu)
˙ j+1/2 − (Sµ)j+1/2
uj+1 − uj
∆yj+1/2
1
2
saadaan
(6.9)
Tässä on huomattava, että y-suunnassa u-yhtälön vuossa ei ole painegradienttia.
Yleinen lauseke vuolle, joka pätee kaikissa suunnissa esitetään myöhemmin. Residuaalin laskenta voidaan hoitaa esimerkiksi siten, että lasketaan vuot i-suunnassa
ja summataan niiden erotukset residuaalivektoriin. Sen jälkeen lasketaan vuot jsuunnassa ja summataan niiden erotus samaan residuaaliin. Mikäli suoritettaisiin
ajan suhteen tarkkaa laskentaa olisi residuaaliin (6.7) lisättävä vielä aikaderivaattatermi.
Yllä konvektiovuot lasketaan ylävirtapainottamalla kuten yksidimensioisessakin tapauksessa.
(mu)
˙ i+1/2 = max(m
˙ i+1/2 , 0)uli+1/2 − max(−m
˙ i+1/2 , 0)uri+1/2
(6.10)
Implisiittistä vaihetta varten käytetään 1. kertaluvun diskretointia
(mu)
˙ i+1/2 = max(m
˙ i+1/2 , 0)ui − max(−m
˙ i+1/2 , 0)ui+1
(6.11)
Linearisoimalla yhtälön (6.8) 1. kertaluvun approksimaatio saadaan
u,n+1
Fi+1/2
=
u,n
Fi+1/2
+
u,n
∂Fi+1/2
∂u
u,n
∆u = Fi+1/2
+ [max(m
˙ i+1/2 , 0) + (Sµ/∆x)i+1/2 ]∆ui
6.1. YHTÄLÖIDEN DISKRETOINTI
111
− [max(−m
˙ i+1/2 , 0) + (Sµ/∆x)i+1/2 ]∆ui+1(6.12)
Koska vain konvektio ja diffuusio-osat linearisoidaan nopeuksien suhteen, yhtälön
(6.9) linearisointi tuottaa vastaavan tuloksen. Linearisoinneista saadaan implisiittisen vaiheen kertoimiksi
ai,i+1 ≡ AE,i =
ai,i−imax ≡ AS,i =
ai,i+imax ≡ AN,i =
aii ≡ AP,i =
=
Sµ
∆x
i−1/2
Sµ
− max(−m
˙ i+1/2 , 0) −
∆x i+1/2
Sµ
− max(m
˙ j−1/2 , 0) −
∆y j−1/2
Sµ
− max(−m
˙ j+1/2 , 0) −
∆y j+1/2
Vi ρi
+ max(m
˙ i+1/2 , 0) + max(−m
˙ i−1/2 , 0)
∆t
max(m
˙ j+1/2 , 0) + max(−m
˙ j−1/2 , 0)
Sµ
Sµ
Sµ
Sµ
+
+
+
+
∆x i−1/2
∆x i+1/2
∆y j−1/2
∆y j+1/2
Vi ρi
− AW,i − AE,i − AN,i − AS,i
(6.13)
∆t
ai,i−1 ≡ AW,i = − max(m
˙ i−1/2 , 0) −
missä lävistäjäalkio AP on jälleen syytä laskea muiden kertoimien avulla, jotta lävistäjän kertoimessa toteutuisi massatase. Implisiittiseksi vaiheeksi saadaan
ai,i−imax ∆uj−1 + ai,i+imax ∆uj+1 + ai,i−1 ∆ui−1 + ai,i+1 ∆ui+1 + aii ∆ui = Riu,n
(6.14)
Kaksidimensioisessa tapauksessa koppia i, j + 1 vastaa yksidimensioinen indeksi
1
2
3
imax
jmax
jmax−1
i+imax
i−1
i
i+1
i−imax
Kuva 6.3: Laskentatilavuuksien yksidimensioinen indeksointi. Tässä periaatekuvassa reunaehtokopit eivät ole mukana, joten alueen koko on imax × jmax.
i + imax, kuten kuvassa on esitetty. Kerroinmatriisi koostuu tridiagonaalisesta lävistäjäosasta ja kahdesta ±imax-etäisyydella olevasta nauhasta. Käytännön imple-
6.1. YHTÄLÖIDEN DISKRETOINTI
112
mentoinnissa on lisäksi otettava huomioon haamukopit, jolloin ohjelmakoodissa indeksiä i, j + 1 vastaa I+IMAX+4.
Liikemääräyhtälön residuaali v-nopeudelle on
Riv = −(mv)
˙ i+1/2 + (mv)
˙ i−1/2 − (mv)
˙ j+1/2 + (mv)
˙ j−1/2
−(Sp)j+1/2 + (Sp)j−1/2
+(Sµvx )i+1/2 − (Sµvx )i−1/2 + (Sµvy )j+1/2 − (Sµvy )j−1/2 + Vi by,i =
v
v
v
v
−Fi+1/2
+ Fi−1/2
− Fj+1/2
+ Fj−1/2
+ Vi by,i (6.15)
Vuot voidaan laskea seuraavasti
v
Fi+1/2
= (mv)
˙ i+1/2 − (Sµ)i+1/2
vi+1 − vi
∆xi+1/2
(6.16)
missä ∆x on tilavuuksien i ja i + 1 keskipisteiden välinen etäisyys. Vastaavasti
pinnalla j + 1/2
v
Fj+1/2
= (mv)
˙ j+1/2 + Sj+1/2 [−µj+1/2
vj+1 − vj
+ pj+1/2 ]
∆yj+1/2
(6.17)
Yhtälöissä (6.16) ja (6.17) on huomattava paineiden sijaitsevan päinvastoin kuin
u-nopeuksia laskettaessa.
Aiemmin todettiin, että implisiittisen vaiheen kertoimet voidaan pitää samoina
kuin x-suuntaisen liikemääräyhtälön tapauksessa. Vaihtoehtoisesti ne voidaan laskea uudestaan päivitetyillä u-nopeuksilla. Ratkaistavaksi saadaan yhtälöt
Au ∆u = Ru
(6.18)
Av ∆v = Rv
(6.19)
ja
Jossa matriisit Au ja Av voivat siis olla myös samoja Au ≡ Av , mikäli Av :ta ei ole
päivitetty. Huomautettakoon vielä tässäkin yhteydessä, että mikäli olisi linearisoitu
termit u2 ja v 2 , matriisit poikkeaisivat tällöin aina näiltä osin toisistaan.
Ratkaistavaksi saadaan yhtälöryhmät (6.18) ja (6.19). Ratkaisussa voidaan käyttää peruskurssilla esillä ollutta approksimatiivista faktorointia (Ari Miettisen lisensiaattityö). Tästä menettelystä käytetään usein myös nimitystä ADI (esim. FerzigerPeric), vaikka kyseessä ei olisikaan alkuperäinen ADI-menetelmä. Yleensä painekorjausmenetelmissä käytetään toisen tyyppisiä iteratiivisia ratkaisuja, mikä ei tarkoita, että faktorointi olisi niitä tehottomampi. Faktorointi sopii hyvin myös monihilaalgoritmin yhteyteen. Koska muut kuin faktorointityyppiset iteratiiviset ratkaisut
6.1. YHTÄLÖIDEN DISKRETOINTI
113
ovat perinteen vuoksi keskeisellä sijalla painekorjausmenetelmässä, käytetään tällä
kurssilla niitä ’pedagogisista syistä’. Liikemääräyhtälöt ratkeavat helposti GaussSeidel (GS) tai line-Gauss-Seidel-menetelmillä (LGS). Ratkaisu konvergoi yleensä
hyvin nopeasti, koska liikemääräyhtälöitä on alirelaksoitu aikaderivaattatermillä ja
ne ovat siten lävistäjävaltaisia. Painekorjausyhtälöllä tilanne on hankalampi.
Liikemääräyhtälöiden ratkaisun jälkeen uudet nopeuskomponentit päivitetään
yhtälöistä
u∗i = uni + ∆ui
vi∗ = vin + ∆vi
(6.20)
On huomattava, että nopeudet on päivitettävä myös ainakin ensimmäisessä haamukoppirivissä, siis laskenta-alueen reunoilla. Tämä johtuu siitä, että massatasetta
laskettaessa tarvitaan uudet nopeudet myös reunoilla ja ne lasketaan keskiarvosta.
Kätevimmin nopeudet päivittyvät, jos yhtälöiden (6.18) ja (6.19) ratkaisun annetaan
mennä yhdellä rivillä yli laskenta-alueen, kuten yksidimensioisessa tapauksessakin
tehtiin. Uudet ’täpy’-nopeudet eivät toteuta jatkuvuusyhtälöä. Sijoittamalla massataseeseen un+1 = u∗ + u′, missä uusi nopeus un+1 toteuttaa sen, saadaan
(Sρu′ )i+1/2 − (Sρu′ )i−1/2 + (Sρv ′ )j+1/2 − (Sρv ′ )j−1/2 =
−(Sρu∗ )i+1/2 + (Sρu∗ )i−1/2 − (Sρv ∗ )j+1/2 + (Sρv ∗ )j−1/2 = −∆m
˙ ∗i(6.21)
Liikemääräyhtälöistä on jälleen talletettava diagonaalikertoimet aii ≡ Ap,i . SIMPLEmenetelmässä pintanopeuksien korjausten u′ riippuvuus paineista saadaan liike-
määräyhtälöstä limitetylle aputilavuudelle. Jättämällä pois riippuvuus rinnakkaisten nopeuskorjausten välillä tehdään sama approksimaatio kuin yksidimensioisessa
tapauksessa
u′i+1/2 ≈ −
Si+1/2 ′
(p − p′i )
AuP,i+1/2 i+1
(6.22)
Vastaava yhtälö saadaan v ′ -korjaukselle
′
vj+1/2
≈−
Sj+1/2 ′
(p − p′j )
AvP,j+1/2 j+1
(6.23)
Kertoimet AuP ja AvP on tässä erotettu toisistaan, kuten Ferziger-Pericissä. Kuten
edellä on monesti todettu, kertoimet periaatteessa voivat olla myös samoja, mikäli päivitystä u-nopeuksien ratkaisun jälkeen tai neliöllisten termien linearisointia
6.1. YHTÄLÖIDEN DISKRETOINTI
114
ei ole tehty. Kertoimet pinnoilla lasketaan keskiarvoina talletetuista noodipisteiden
kertoimista (6.13). Sijoittamalla nopeuskorjaukset yhtälöön (6.21)
−
−
(S 2 ρ)i+1/2 ′
(S 2 ρ)i−1/2 ′
′
(p
−
p
)
+
(p − p′i−1 )
i
AuP,i+1/2 i+1
AuP,i−1/2 i
(S 2 ρ)j+1/2 ′
(S 2 ρ)j−1/2 ′
′
(p
−
p
)
+
(p − p′j−1 ) = −∆m
˙ ∗i
j
AvP,j+1/2 j+1
AvP,j−1/2 j
(6.24)
mistä saadaan sievennetyksi Poisson-yhtälö painekorjauksille (pi = pj ≡ pi,j )
−
(S 2 ρ)i−1/2 ′
(S 2 ρ)j+1/2 ′
(S 2 ρ)j−1/2 ′
(S 2 ρ)i+1/2 ′
p
−
p
−
p
−
p
AuP,i+1/2 i+1
AuP,i−1/2 i−1
AvP,j+1/2 j+1
AvP,j−1/2 j−1
(S 2 ρ)i−1/2 (S 2 ρ)i+1/2 (S 2 ρ)j+1/2 (S 2 ρ)j−1/2 ′
pi = −∆m
˙ ∗i (6.25)
+
+
+
+
AuP,i−1/2
AuP,i+1/2
AvP,j+1/2
AvP,j−1/2
Kuten yksidimensioisessakin tapauksessa, on nyt massataseen laskentaan ∆m
˙ ∗i yhdistettävä vaimennustermi sekä i- että j-suunnassa.
m
˙ ∗i+1/2
(
(Sρ)i+1/2 r
1
[pi+1/2 − pli+1/2 ]
[(ρu∗ )i+1 + (ρu∗ )i ] − C u
2
2AP,i+1/2
(
(Sρ)j+1/2 r
1
[(ρv ∗ )j+1 + (ρv ∗ )j ] − C v
[p
− plj+1/2 ]
2
2AP,j+1/2 j+1/2
= Si+1/2
m
˙ ∗j+1/2 = Sj+1/2
)
)
(6.26)
(6.27)
Vaimennustermeistä voidaan havaita, että mikäli laskennassa on käytetty eri arvoja
kertoimille AuP ja AvP , vaimennus tulee eri tavoin skaalatuksi x-ja y-suunnissa (i- ja
j-suunnissa). Tällä on lähinnä periaatteellinen merkitys, koska vaimennustermi on
verrannollinen O(∆x2 ):en.
Poisson-yhtälö (6.25) on samaa tyyppiä kuin yksidimensioisessa tapauksessa
yhtälö (5.44) ja lävistäjäalkio on täsmälleen sama kuin muiden alkioiden summa.
Tämä aiheuttaa hankaluuksia iteratiivisessa ratkaisussa. Painekorjausyhtälöä ei voida suoraan ratkaista approksimatiivisella faktoroinnilla. Jotta yhtälö saataisiin konvergoitumaan, voidaan painekorjausta tässä vaiheessa alirelaksoida jatkuvuusehdon
pseudolinearisoinnilla (4.41). Tällöin diagonaalille lisätään termi
Vi
(Cu u∞ )2 ∆t
(6.28)
missä u∞ on tehtävään sopiva nopeusskaala ja sopiva arvo kertoimelle Cu löytyy
kokeilemalla väliltä [10,100]. Termi voidaan tulkita tiheyden pseudolinearisoinniksi. Mikäli tiheys ei ole vakio, lävistäjälle tulee lisätä todellinen linearisointi
Vi
2
c ∆t
(6.29)
6.1. YHTÄLÖIDEN DISKRETOINTI
115
missä c on äänen nopeus. Alirelaksoinnin jälkeen painekorjausyhtälö saadaan konvergoimaan, mutta konvergenssi voi olla hidasta. GS-menetelmä on yleensä aivan liian hidas, parempi tulos saadaan LGS:llä. Luultavasti paras menettelytapa on
soveltaa monihila-algoritmia painekorjauksen yhteydessä. Ferziger-Peric suosittelee käytettäväksi Stonen SIP-menetelmää (strongly implicit procedure). Painekorjausyhtälön ratkaisuun kuluva aika on suuri, joten on ratkaisevan tärkeää käyttää
niin tehokasta menetelmää kuin mahdollista.
Kaksidimensioisen karteesisessa hilassa toimivan painekorjausmenetelmän osat
ovat nyt kasassa. Edellä on jo tullut esille eräitä vaihtoehtomahdollisuuksia. Käytännön algoritmissa on lukemattomia variaatiomahdollisuuksia. Seuraavassa esitetään
eräs toimiva vaihtoehto:
1. Interpoloidaan MUSCL-kaavasta suureet uri+1/2 , uli+1/2 ja pri+1/2 , pli+1/2 . Paineissa käytetään toisen kertaluvun ylävirtamenetelmää. Näitä paineita käytetään vain massatasevirheen ∆m
˙ ∗i laskennassa. Kopin pinnalla oleva paine
pi+1/2 lasketaan keskiarvona. Lasketaan u-liikemäärän vuot yhtälöistä (6.8)
ja (6.9). Konvektiovuo ylävirtapainotetaan seuraavasti
(mu)
˙ i+1/2 = max[(Sρu)i+1/2 , 0]uri+1/2 −max[−(Sρu)i+1/2 , 0]uli+1/2 (6.30)
missä ρui+1/2 lasketaan sopivana keskiarvona hilapistearvoista.
2. Lasketaan x-suuntaisen liikemäärän residuaali vuoarvojen ja lähdetermin avulla yhtälöstä (6.7). Lasketaan implisiittisen vaiheen kertoimet yhtälöstä (6.13).
3. Ratkaistaan iteratiivisella menetelmällä yhtälö (6.18) ja päivitetään u-nopeudet
yhtälöstä (6.20).
r
l
4. Interpoloidaan MUSCL-kaavasta suureet vj+1/2
, vj+1/2
ja prj+1/2 , plj+1/2 . Las-
ketaan v-liikemäärän vuot yhtälöistä (6.16) ja (6.17).
5. Lasketaan y-suuntaisen liikemäärän residuaali vuoarvojen ja lähdetermin avulla yhtälöstä (6.15). Lasketaan implisiittisen vaiheen kertoimet yhtälöstä (6.13).
Tässä vaihtoehdossa implisiittisen vaiheen kertoimet tulevat päivitetyiksi unopeuden osalta.
6.1. YHTÄLÖIDEN DISKRETOINTI
116
6. Ratkaistaan iteratiivisella menetelmällä yhtälö (6.19) ja päivitetään v-nopeudet
yhtälöstä (6.20).
7. Lasketaan uusien nopeuksien avulla massataseen virheet ∆m
˙ ∗i = m
˙ ∗i+1/2 −
m
˙ ∗i−1/2 + m
˙ ∗j+1/2 − m
˙ ∗j−1/2 . Nyt massavirrat lasketaan yhtälöistä (6.26) ja
(6.27)
8. Lasketaan painekorjausyhtälön (6.25) kertoimet. Lisätään lävistäjälle alirelaksaatiota. Ratkaistaan painekorjausyhtälö sopivalla menetelmällä.
9. Päivitetään nopeudet hilapistearvoissaan. Vaihtoehtoinen menettely olisi korjata pintanopeuksia yhtälöistä (6.22) ja (6.23). Hilapisteissä nopeuskorjaukset
ovat
u′i = −
Si+1/2 ′
Si−1/2
pi+1/2 + u p′i−1/2
u
AP,i
AP,i
(6.31)
vastaava yhtälö saadaan v ′ -korjaukselle
vi′ = −
Sj+1/2 ′
Sj−1/2 ′
pj+1/2 +
p
v
AP,i
AvP,i j−1/2
(6.32)
Kertoimet AuP,i ja AvP,i on siis pidettävä tallessa tänne asti. Painekorjaukset
p′i+1/2 koppien pinnoilla saadaan keskiarvoina hilapistearvoista. Tämän vuoksi on myös painekorjausyhtälön laskenta hyvä ulottaa yhden koppirivin verran ulos laskenta-alueesta. Myös kertoimet AuP,i ja AvP,i on talletettava yhdessä
haamukoppirivissä, jotta ensimmäisellä rajapinnalla varsinaisessa laskentaalueessa kertoimilla AuP,i+1/2 ja AvP,i+1/2 olisi mielekäs arvo. Kuten yksidimensioisessa tapauksessa on tässäkin mahdollista alirelaksoida nopeuksia,
mutta yleensä näin ei tehdä enää tässä vaiheessa.
10. Päivitetään uudet paineet. Paineita joudutaan alirelaksoimaan tapauksesta riippuen huomattavastikin. Sopiva lähtökohta on αp ≈ 0, 3.
11. Ratkaistaan mahdolliset skalaariyhtälöt ja uudet tiheydet sekä viskositeetit
samaan tapaan kuin tehtiin yksidimensioisen algoritmin yhteydessä.
Algoritmia voidaan helposti muunnella siirtämällä esimerkiksi skalaariyhtälöiden ratkaisu ensimmäiseksi. Yllä laskettiin kertoimille AvP uusi arvo, kun u-nopeudet
oli päivitetty. Vaihtoehtoisesti olisi voitu käyttää samoja kertoimia.
6.2. FYSIKAALISET REUNAEHDOT
117
6.2 Fysikaaliset reunaehdot
Virtausyhtälöiden ratkaisua säätelevät reunaehdot. Ratkaisualueen reunan muoto ja
sillä olevat fysikaaliset ehdot ovat ne, jotka ajavat ratkaisun aina kulloinkin vallitsevaan muotoon. Varsinaisessa ratkaisualueessa on aina voimassa samat yhtälöt,
jotka saattavat tuottaa hyvinkin erilaisia tuloksia pienillä reunaehtojen muutoksilla.
Fysikaalisten reunaehtojen lisäksi ratkaisussa tarvitaan ns. numeerisia reunaehtoja,
joista oli jo puhetta kappaleessa 2.6.
a)
b)
Vt
Uo o
ulosvirtaus
555555555
555555555
vanavesi
555555555
Vn
sisäänvirtaus
ulosvirtaus
sisäänvirtaus
n
laskenta−alue
laskenta−alueen
reuna
mahdollinen
sisäänvirtaus
Kuva 6.4: (a) Ulkopuolinen virtaustilanne ja (b) sisäpuolinen virtaus.
Virtaustapaukset voidaan jakaa sisäpuolisiin ja ulkopuolisiin virtauksiin, joilla
on reunaehtojen suhteen selvä ero. Ulkopuolisissa virtauksissa on määriteltävissä
häiriötön reuna, ainakin jos laskenta-aluetta laajennetaan tarpeeksi (kts. kuva 6.4).
Tällaisella reunalla on suhteellisen helppoa antaa kiinteät ns. vapaan virtauksen ehdot. Reunaehtoja voidaan yrittää tarkentaa erityisesti jos laskenta-aluetta ei ole varaa tehdä riittävän laajaksi. Tällöin reunaehtojen antamiseen vaikuttaa virtauksen
suunta ja Machin luku karakteristikoiden muodossa. Edellä esitetyissä karakterististen suureiden ja nopeuksien yhtälöissä on käytettävä alueen reunaa vastaan kohtisuoraa nopeuskomponenttia vn . Sisäpuolisella virtauksella on ongelmana saada
laskenta-alue laajennetuksi reunojen osalta riittävän häiriöttömälle alueelle. Reunaehdot on pakko tällöin jakaa ’sisään-’ ja ’ulosvirtaus’ ehtoihin. Varsin usein ei
kuitenkaan etukäteen täsmällisesti tiedetä virtaussuuntaa. Varsinkin ulosvirtauskohdassa saattaa helposti syntyä pienellä alueella kuvassa 6.4 esitetty ’akanvirtaus’. Tämän reuna-arvoja ei yleensä tunneta ja vaikka ne tunnettaisiinkin, niiden käyttö on
hankalaa. Iteraatiohistoriaan syntyy tällöin jonkinlainen nykäys, kun ekstrapoloinnin sijaan annetaan etukäteen määritelty reuna-arvo.
6.2. FYSIKAALISET REUNAEHDOT
118
Kitkallisella virtauksella voi esiintyä seuraavanlaisia fysikaalisia reunaehtoja:
• Sisään- ja ulosvirtaus. Näiden käsittely kuvattiin lähemmin karakteristikakäsitteen yhteydessä. Todetaan vielä, että jos lasketaan myös lämpötiloja, sen
yhtälö on kokoonpuristumattomassa tapauksessa samanlainen skalaariyhtälö
kuin liikemääräyhtälökin kullekin nopeuskomponentille. Lämpötila tai joku
muu ratkaistava termodynaaminen suure on annettava sisäänvirtaukselle.
• Vapaa virtaus. Tällöin laskenta-alueen reuna on viety niin kauas, että reu-
naehdot eivät tarvitse mitään erikoiskäsittelyä laskennan aikana. Tarkemmassa analyysissä usein havaitaan jonkin verran reunojen vaikutusta. Reunat pitäisi viedä suuruusluokkaa 100× kappaleen koko pituisen matkan päähän,
mikä yleensä vaatii varsin suuren laskentatilavuusmäärän.
• Symmetriareuna on tavallaan triviaalein reunaehto ja usein sitä ei tule pitä-
neeksi edes fysikaalisena reunaehtona. Se on kuitenkin ehto, johon liittyy
kaikkein vähiten ongelmia ja sitä pitäisi käyttää aina kuin suinkin mahdollista. Symmetria voidaan käsitellä usealla tavalla, joista suoraviivaisimmassa tavassa ratkaistavat suureet peilataan sopivasti symmetriakohdan toisella
puolella sijaitseviin ns. haamukoppeihin (ghost cells). Tämän jälkeen ratkaisu etenee samalla tavoin kuin sisäalueen laskenta. Haamukoppien käyttöön
palataan myöhemmin.
• Kiinteällä seinällä asetetaan nopeus nollaksi u = v = w = 0. Joskus sei-
nä voi liikkua, kuten turbokoneilla. Tällöin asetetaan nopeudeksi seinän nopeus. Tämän tyyppistä reunaehtoa nimitetään englannin kielessä usein ’noslip’-ehdoksi. Jos energiayhtälö on laskennassa mukana, myös sille tarvitaan
vastaava reunaehto. Suoraviivaisinta on asettaa lämpötila seinämän arvoon.
Usein seinämälämpötilaa ei kuitenkaan tunneta. Kaasuvirtauksilla voidaan
joskus hyvänä approksimaationa käyttää tulovirtauksen kokonaislämpötilaa
γ −1
Ma2∞ )T∞
(6.33)
2
on vapaan virtauksen lämpötila. Lämpötilan vaihtoehtona saattaa
Tw = (1 +
missä T∞
tulla kyseeseen lämpövuo qw′′ . Tällöin Fourierin lain mukaan
−(k
∂T
) = qw′′
∂n
(6.34)
6.3. REUNAEHTOJEN KÄSITTELY
119
missä k on lämmönjohtavuus ja ∂T /∂n pinnan normaalin suuntainen derivaatta. Derivaatan approksimointi karteesisessa tapauksessa oli esillä jo peruskurssilla, yleisempään palataan jatkossa. Hyvin usein voidaan riittävällä
tarkkuudella olettaa seinät adiabaattisiksi, jolloin reunaehdoksi tulee ∂T /∂n =
0.
Kiinteällä pinnalla tarvitaan myös paine, joka voidaan antaa joko numeerisella tai fysikaalisella reunaehdolla. Rajakerroksessa paineen normaalin suuntainen derivaatta on nolla, jolloin fysikaalinen reunaehto olisi ∂p/∂n = 0.
Jos pinta on kaareva, reunapaine-ehtoa voidaan yrittää korjata jonkinlaisella ’keskipakotermillä’, joka myös on fysikaalinen reuna-ehto. Käytäntö on
osoittanut, ettei näin tarvitse tehdä. Pintapaine voidaan yksinkertaisesti ekstrapoloida ratkaisualueesta MUSCL-kaavalla. Tällöin kyseessä on numeerinen reunaehto.
Eulerin yhtälöillä muut fysikaaliset reunaehtotyypit säilyvät likimain samoina,
mutta kiinteillä pinnoilla on vain yksi niin sanottu ’slip’-ehto
V~ · ~n = 0
(6.35)
jonka mukaan kiinteän pinnan läpi ei tapahdu virtausta.
6.3 Reunaehtojen käsittely
Reunaehtoja tarkastellaan lähemmin käyräviivaisen laskentahilan yhteydessä. Tässä yhteydessä tarkastellaan vain sisään- ja ulosvirtausta sekä kiinteää pintaa. Sisään ja ulosvirtausreunat voidaan laskea yhtälöistä (5.45)-(5.50) olettamalla kunkin
koppirivin muodostavan ikään kuin yksidimensioisen virtausputken. Reunaehdot on
laskettava sekä eksplisiittisen että implisiittisen vaiheen yhteydessä. Eksplisiittisen
vaiheen lopullinen reunaehto on aina vuo laskenta-alueen rajapinnalla. Vuon laskentaan voi liittyä fysikaalisia ja matemaattisia reunaehtoja.
Implisiittisessä vaiheessa reunaehdot on yksinkertaista ottaa huomioon laajentamalla ratkaisualue yhdellä rivillä varsinaisen laskenta-alueen yli, kuten yksidimensioisessakin tapauksessa tehtiin. Toinen mahdollisuus on eliminoida ensimmäisen
haamukopin vaikutus varsinaisen laskenta-alueen ensimmäisen kopin yhtälöstä.
6.3. REUNAEHTOJEN KÄSITTELY
120
Kiinteät tai liukuvat pinnat on mahdollista käsitellä usealla eri tekniikalla. Fysikaalinen reunaehto nopeuksille on
V~ = V~surf
(6.36)
missä V~surf on pinnan nopeus. Reunaehto (6.36) toteutetaan komponenteittain. Tässä reunaehto toteutetaan haamukoppi-käsitteen avulla. Tällöin erillistä reunavuoohjelmaa ei tarvita, vaan reunat voidaan laskea samalla tavoin kuin sisäalueen pisteet. Kuvassa 6.5 on esitetty indeksointi reunalla käyttäen ilmansuuntamerkintöjä
seinää lähinnä olevalle kopille. On huomattava, että reuna voi olla periaatteessa
joko ’ylä’- tai ’alareuna’. Kiinteällä pinnalla on konvektionopeus aina = 0. Kar-
y
N
v
u
P
11111111111
1111111111
s
111111111111111111111
111111111111111111111
S
SS
Kuva 6.5: Nopeusprofiilit ja reunan käsittely haamukoppien avulla.
teesisessa koordinaatistossa esimerkiksi kuvan tapauksessa tämä saadaan aikaiseksi
asettamalla
vS = −vP
(6.37)
Tässä on oletettu ettei pinta liiku y-suunnassa, ts. vsurf = 0. Kun konvektionopeus
lasketaan keskiarvona, saadaan pinnalla vs = 1/2(vS + vP ) = 0. Implisiittisessä
vaiheessa saadaan noodille S yhtälö
∆vS + ∆vP = 0
(6.38)
jolloin lävistäjän ulkopuolelle tulee positiivinen termi. Yhtälöryhmä ei toteuta Scarboroughin kriteeriä, mutta ratkaisu näyttäisi kuitenkin onnistuvan. Kuten yksidi-
6.3. REUNAEHTOJEN KÄSITTELY
121
mensioisen tapauksen yhteydessä todettiin, varmempi keino saattaa olla jättää implisiittinen vaihe muotoon
∆vS = 0
(6.39)
ja päivittää tämän jälkeen vS :n arvo yhtälöstä (6.37). Kuvan tapauksessa u-nopeus
ei vaikuta konvektionopeuteen, vaan x-suuntaisen nopeuden vaikutus tulee tässä
esiin kitkatermin kautta. Haamutilavuuteen voidaan asettaa sellainen nopeus, että
pinnalle s saadaan oikea arvo derivaatalle ∂u/∂y. Ensimmäisenä approksimaationa
voidaan käyttää
us = −uP + 2usurf
(6.40)
Tällöin pinnalla saadaan us = 1/2(uS + uP ) = usurf . Koska konvektio kiinteällä
pinnalla on nolla, u-nopeus vaikuttaa vain kitkatermiin. Se saadaan näennäisesti
toisen kertaluvun tarkasta yhtälöstä
∂u uP + uP − 2usurf
uP − usurf
uP − uS
=
=
=
∂y s
∆ys
∆ys
∆ys /2
(6.41)
Huomataan, että ekstrapoloinnilla (6.40) itse asiassa saadaan ensimmäisen kertaluvun approksimaatio derivaatalle ∂u/∂y. Sama tarkkuus saadaan laskettaessa vnopeuden derivaattaa. Kyseistä approksimaatiota kuitenkin käytetään yksinkertaisuuden vuoksi tällä kurssilla.
Käytännön virtaustehtäviin, ainakin sellaisiin, joissa kiinteällä seinällä on huomattava merkitys ratkaisuun, voisi olettaa tarvittavan toisen kertaluvun tarkkuutta
myös kiinteillä pinnoilla. Tällöin derivaatta pinnalla on laskettava laskenta-alueiden
pisteiden avulla. Kuvan tapauksessa voidaan käyttää seuraavaa toisen kertaluvun
tarkkaa approksimaatiota
∂u −8usurf + 9uP − uN
=
∂y s
3∆yP
(6.42)
Yhtälö voidaan helposti osoittaa toisen kertaluvun tarkaksi kehittämällä termit sarjaksi pisteen s ympärillä. Vastaava yhtälö pätee nopeudelle v. Periaatteessa voitaisiin latoa pinnan alla olevaan haamukoppiin sellainen arvo, että yhtälö (6.42) toteutuisi. Oikeaa konvektionopeutta ei kuitenkaan saataisi yhtä aikaa lasketuksi keskiarvona. Sen vuoksi on helpoin tapa laskea kiinteiden pintojen reunavuot erillään
muista vuoarvoista omassa aliohjelmassaan. Tällöin yhtälöä (6.42) käytetään vuon
kitkallisen osuuden laskennassa ja konvektiovuo asetetaan aina nollaksi. On tärkeää
havaita, että konvektiovuo on aina nolla kiinteällä pinnalla vaikka pinta liikkuisikin.
6.3. REUNAEHTOJEN KÄSITTELY
122
Edellä esitettyä menettelyä ja yhtälöä (6.42) käytettiin vuosia TKK:lla kehitetyssä FINFLO-ohjelmassa. Rajakerroksessa asia ei kuitenkaan ole näin yksinkertainen, vaan tarkkuus riippuu myös nopeusprofiilin muodosta. Ainakin niissä tapauksissa, joissa diskretointi viedään kiinteälle pinnalle asti (laminaari virtaus tai ns.
pienen Reynoldsin luvun mallinnus turbulentille virtaukselle) nopeusprofiilin muodon vuoksi yhtälön (6.41) mukainen - siis ensimmäisen kertaluvun diskretointi antaakin tarkemman approksimaation derivaatalle ∂u/∂y (Patrik Rautaheimon väitöskirja)! Molemmat kaavat antavat saman tuloksen, kun ∆y → 0, mutta yleensä
ensimmäisen kertaluvun menetelmällä tulos on tarkempi. Vastaavanlaisin numeerisin kokein osoitettiin peruskurssilla, että korkeamman kertaluvun menetelmät eivät
aina tuota tarkempaa approksimaatiota derivaatalle tai toiselle derivaatalle, jos derivaatan arvo on suuri. Approksimaation (6.41) käyttö on siis järkevää myös tarkkuuden vuoksi. Tässä yhteydessä on kuitenkin huomautettava, että vastaavia numeerisia
kokeita ei ole tehty ns. seinämäfunktion yhteydessä (ison Reynoldsin luvun turbulenssimalli).
Pinnan vuohon tarvitaan myös paine ps . Paineelle voidaan käyttää kiinteällä
pinnalla von Neumannin ehtoa ∂p/∂n = 0. Ehto on fysikaalinen siinä mielessä,
että se toteutuu rajakerroksessa hyvällä tarkkuudella. Tällöin asetetaan
pS = pP
(6.43)
jolloin keskiarvoksi saadaan ps = 1/2(pS + pP ) = pP . Painekorjausyhtälössä asetetaan noodille S
p′S − p′P = 0
(6.44)
mikä toteuttaa myös Scarboroughin kriteerin.
Limitetyllä hilalla on sellainen ominaisuus, ettei painereunaehtoa pinnoilla tarvita ollenkaan. Itse asiassa tämä on yleinen virtausratkaisun ominaisuus. Tavanomaisella hilalla paine voidaan ekstrapoloida pinnalle s käyttäen toisen kertaluvun
ylävirtamenetelmää
3
1
ps = pP − pN
2
2
(6.45)
Tämä on yksinkertaista kytkeä edellä kuvattuun tapaan laskea vuot pinnoilla erillisessä aliohjelmassa. Koska konvektiovuo on pinnalla nolla, saadaan seuraavat vuon
6.4. ALIRELAKSOINTITAVAT
123
laskentakaavat
Fsu
Fsv
∂u = Ss −µs ∂y s
∂v = Ss −µs +ps
∂y s
(6.46)
Tällä kurssilla vuot lasketaan kiinteillä pinnoilla samalla tavoin kuin muuallakin.
Yhtälö (6.45) voidaan toteuttaa asettamalla koppiin S
pS = 2pP − pN
(6.47)
Tässäkin tapauksessa kannattaa painekorjauksessa käyttää yhtälöä (6.44). Nopeuskorjauksen kannalta yhtälö (6.44) merkitsee, että nopeuskorjaus pintaa vasten kohtisuorassa suunnassa on nolla. Tämä ehto on hyödyllinen esimerkiksi monilohkoisessa tapauksessa, jossa painekorjausta ei voida ulottaa lohkorajan yli. Ehtohan sanoo
myös, että lohkojen rajalla oleva nopeus pidetään vakiona, mikä stabiloi muutoin
eksplisiittistä reunaehtoa.
Koska kiinteän pinnan läpi ei tapahdu konvektiota, laskentatilavuuteen SS ei
tarvita mitään arvoja. Mikäli käytettäisiin jotain monimutkaista, esimerkiksi vuon
rajoitinta hyödyntävää, tapaa pinnan s vuon laskennassa, tarvittaisiin järkevät arvot
myös koppiin SS. Nekin voidaan saada sopivalla ekstrapoloinnilla.
6.4 Alirelaksointitavat
Aiemmin on jo tullut esille useita tapoja alirelaksoida ratkaisua. Alirelaksaatio yleensä aina hidastaa konvergenssia. Parhaiten tämä näkyy käytettäessä pseudoaikaintegrointia, kuten edellä on liikemääräyhtälöissä tehty. Aikaintegroinnin vuoksi ei
yritetä yhdellä loikalla edetä pitkälle ratkaisussa, vaan sitä hidastetaan sen verran,
että konvergenssi on paras mahdollinen ja epästabiilisuus vältetään.
Seuraavassa kerrataan alirelaksointitavat:
• Yksinkertaisin tapa alirelaksoida on pienentää laskettua suuren muutosta
φn+1 = φn + αφ ∆φ
(6.48)
Tätä tapaa käytetään yleensä aina painekorjauksille p′ ja sitä voidaan käyttää
myös nopeuskorjauksille painekorjauksen yhteydessä, mutta kuten on todettu
silloin uudet nopeudet eivät toteuta jatkuvuusyhtälöä.
6.4. ALIRELAKSOINTITAVAT
124
• Alirelaksointi aikaderivaattatermin kautta lisää lävistäjävaltaisuutta. Tämä ta-
pa on edellä ollut liikemääräyhtälöissä oletusarvona. Aika-askel vaikuttaa
myös termin AP kautta ratkaisuun, jos käytetään Rhie ja Chow -skaalausta (5.22).
Järjellisillä aika-askeleen arvoilla tämä vaikutus on mitätön ja pieni osa koko
katkaisuvirheestä. Erittäin pienillä aika-askelilla AP kasvaa suureksi ja saattaa pienentää vaimennustermiä liiaksi, mikä näkyy ratkaisussa. Aika-askeleen
pituus vaikuttaa myös konvergenssiin. Periaatteessa pitkillä aika-askelilla konvergenssi on parempi, mutta epästabiilisuuden vaara on olemassa. Optimiaikaaskel on kokoonpuristumattomalla virtauksella suuruusluokkaa
(6.49)
∆t = C∆x/|Vmax |
missä Courantin luku C = O(1) ja |Vmax | on laskenta-alueessa olevan mak-
siminopeuden itseisarvo. Toinen tässä yhteydessä kokeilematon, mutta paljon
käytetty tapa kokoonpuristuvan virtauksen yhteydessä, on käyttää paikallista aika-askelta, jolloin ∆ti lasketaan kullekin laskentatilavuudelle kaavasta
(6.49) käyttäen koppikohtaista nopeutta.
Aikaderivaattatermi on myös luonnollinen tapa kasvattaa painekorjausyhtälön lävistäjää yhtälöistä (6.28) tai (6.29). Se ei kuitenkaan poista tarvetta relaksoida painetta yhtälöstä (6.48).
• Relaksointi voidaan hoitaa myös vakiohitaustermillä lisäämällä jokaisen yh-
tälön diagonaalille vakiotermi Ii , jonka on oltava samaa suuruusluokkaa kuin
lävistäjällä olevan kertoimen AP . Vaikutus on jossain määrin sama kuin aikaderivaattatermillä käytettäessä paikallista aika-askelta.
• Yhtälön (6.48) sijaan voidaan relaksointi suorittaa yhtälöryhmää ratkottaessa.
Yhtälöryhmästä voidaan ratkaista preliminääri arvo ∆φ∗i
∆φ∗i
=
Qi −
P
(nb)
aij ∆φj
aii
(6.50)
Jos φ:tä halutaan alirelaksoida, uusi arvo lasketaan yhtälöstä
φn+1
= φni + αφ ∆φ∗i
i
(6.51)
Sijoittamalla tähän ∆φ∗i yhtälöstä (6.50).
φn+1
i
=
φni
+ αφ
Qi −
P
(nb)
aii
aij ∆φj
(6.52)
6.4. ALIRELAKSOINTITAVAT
125
Ottamalla vielä huomioon, että ∆φi = φn+1
− φni saadaan
i
X
aii
∆φi = Qi −
aij ∆φj
αφ
(nb)
(6.53)
Tuloksena on alkuperäinen yhtälö, jossa lävistäjäalkio on jaettu alirelaksaatiotekijällä. Koska 0 < αφ ≤ 1 tämä alirelaksointitapa kasvattaa lävistäjäalkiota, mikä on edullista iteratiivisen ratkaisun kannalta. Alunperin tämä tapa
on Patankarin esittämä muodossa
X
1 − αφ
aii n+1
φi = Qi −
aii φni
aij φj +
αφ
α
φ
(nb)
(6.54)
suureen φ ratkaisulle (F-P yhtälö 5.70). Kuten huomataan delta-muodossa
(6.53) relaksointi on vielä yksinkertaisempaa. Tämä relaksointitapa ei ole
ekvivalentti yhtälön (6.48) kanssa.
Painekorjausmenetelmän yhteydessä alirelaksoinnit muodossa tai toisessa ovat
välttämättömiä menetelmän toimivuuden kannalta. Mitään yhtä toimivaa keinoa ei
ole olemassa. Koodeihin kehittyy ajan myötä erilaisten virtaustehtävien, reunaehtojen, lähdetermien jne. perusteella järjestelmät, joiden avulla tottunut virtauslaskija
saa toisinaan jopa konvergoituneita tuloksia.
6.4. ALIRELAKSOINTITAVAT
126
• Massavirtakäsitteen avulla eri liikemääräyhtälöt (6.6) saadaan skalaariyhtälöitä muistuttavaan muotoon, mikäli paineet ymmärretään lähdetermiksi. Tällä kurssilla paineet kuitenkin yhdistetään vuoarvoihin, mikä
on fysikaalisesti mielekkäämpi tapa.
• Karteesisessa tapauksessa vuot eroavat paineen osalta toisistaan eri
suunnissa.
• Liikemääräyhtälöille saadaan implisiittiset vaiheet
Au ∆u = Ru
Av ∆v = Rv
joissa kerroinmatriisit voivat olla samoja. Voidaan tehdä myös sellainen
ratkaisu, että matriisit lasketaan uudelleen jokaisen liikemääräyhtälön
ratkaisun jälkeen. Kerroinmatriisien eroon saattavat vaikuttaa erilaiset
tekijät mm. lähdetermien linearisointi.
• Painekorjauksille saadaan Poisson-yhtälö, jonka lävistäjää voidaan kasvattaa.
• Massataseen laskennassa on käytettävä vaimennustermiä, joka riippuu
pinnan kahden puolen olevista paineista. Termi voidaan skaalata suureella AP tai sopivalla massavirtaskaalauksella kuten yksidimensioisessa tapauksessa.
• Lävistäjäalkiot on laskettava tai ekstrapoloitava myös ensimmäiseen
haamukoppiriviin, jotta laskenta-aluetta rajaavalle pinnalle saadaan keskiarvona AP,i+1/2 . Myös painekorjaukset tarvitaan laskenta-alueen ulkopuolella, jotta reunapaineet saadaan lasketuksi.
• Sisään- ja ulosvirtausreunat voidaan käsitellä periaatteessa samoin kuin
yksidimensioisessa tapauksessa.
• Kiinteällä pinnalla on myös mahdollista hyödyntää haamukoppeja reunaehtoja laskettaessa ja erityisesti implisiittisessä vaiheessa. Kiinteiden
pintojen reunavuot voidaan myös laskea erillään muusta vuolaskennasta, mikä on kaikkein varmin tapa.
• Alirelaksointi on välttämätöntä ja tapoja on useita.
Päivitetty 12.2.2014
127
7 Lineaaristen yhtälöiden
ratkaisumenetelmät
7.1 Yhtälöiden ratkaisutarve
Edellä on johdettu painekorjausmenetelmän yhteydessä kahden tyyppisiä lineaarisia
yhtälöryhmiä, jotka voidaan kirjoittaa muotoon
Aφ = Q
(7.1)
Tärkein on itse painekorjausyhtälö, joka on symmetrinen Poisson-tyyppinen yhtälö,
jonka kertoimille pätee ilman alirelaksointia ehto
ApP =
X
Apn
(7.2)
nb
mikäli alirelaksointi suoritetaan yhtälön (6.53) avulla, saadaan lävistäjää kasvatetuksi. (Yhtälössä (7.2) oletetaan lävistäjän ulkopuoliset termit siirretyiksi yhtälön
oikealle puolelle. Tarkasti ottaen matriisin kertoimet toteuttavat yhtälön (4.10)). Toinen yhtälötyyppi saatiin liikemääräyhtälöiden diskretoinnissa ja se on konvektiotermin vuoksi yleensä epäsymmetrinen. Mikäli konvektiotermille käytettäisiin keskeisdifferenssiä, saataisiin symmetrinen yhtälö, mutta lävistäjävaltaisuuden toteutuminen tuottaisi ongelmia. Keskeisdifferenssinkin yhteydessä kannattaa implisiittisessä vaiheessa yleensä käyttää ensimmäisen kertaluvun ylävirtapainotusta täsmällisen linearisoinnin sijaan, koska menettely on numeerisesti stabiili eikä approksimaatio vaikuta lopputulokseen. Mahdollisilla skalaariyhtälöillä saadaan samanlainen yhtälöryhmä kuin liikemääräyhtälöilläkin. Edellä olemme lisäksi omaksuneet periaatteen, että liikemääräyhtälöitä alirelaksoidaan inertiatermin avulla. Tällöin lävistäjäalkio on huomattavasti suurempi kuin lävistäjän ulkopuolisten alkioiden summa. Tämä ero painekorjausyhtälön kertoimiin (7.2) on merkittävä yhtälöryhmän ratkaisemisessa. Yleensä voidaan katsoa suurimman hankaluuden paine-
7.2. FYSIKAALISEN PROBLEEMAN RATKAISU
128
korjausmenetelmän yhteydessä liittyvän painekorjausyhtälön ratkaisemiseen. Muiden yhtälöiden ratkaisu sujuu paljon nopeammin lävistäjävaltaisuuden vuoksi eikä
ratkaisutavan valinnalla ole suurta merkitystä.
Kaksidimensioisilla rakenteellisilla hiloilla matriisi A on muotoa

∗
∗


0

0


∗
.
 ..


0
0
∗
∗
∗
0
0
..
.
0
0
0
∗
∗
∗
0
..
.
0
0
0
0
∗
∗
∗
..
.
0
0
0
0
0
∗
∗
..
.
0
0
0
∗
0
0
∗
..
.
0
0
0
0
∗
0
0
..
.
0
0
0
0
0
∗
0
..
.
0
0
···
···
···
···
···
..
.
···
···
0 0
0 0
0 0
0 0
0 0
.. ..
. .
∗ ∗
0 ∗

0
0


0

0


0
.. 
.


∗
∗
Yksidimensioinen matriisi on tridiagonaalinen. Kahdessa dimensiossa saadaan
lävistäjän kahden puolen etäisyyden imax päähän nauhat ja kolmidimensioisessa tilanteessa nauhat tämän lisäksi etäisyydelle imax × jmax . Tällöin laskenta-alueen
koko ja matriisin dimensio on imax × jmax × kmax . Esimerkkinä voimme ajatella
tapausta 1003, jolloin koppien lukumäärä on miljoona ja matriisissa A on 1012 alkiota. Nollasta poikkeavia elementtejä on kuitenkin vain seitsemän nauhan verran
eli yhteensä 7 × 106 . Voidaan todeta, että virtaussimuloinnissa syntyvät matriisit
ovat hyvin harvoja.
Seuraavassa käydään läpi yleisimpiä yhtälöryhmien ratkaisukeinoja. Läheskään
kaikkia niistä ei kannata käyttää virtauslaskuissa, mutta ne tuodaan tässä yhteydessä esille kertauksen vuoksi. Eräitä menetelmiä esitellään tarkasti Ferziger-Pericin
seitsemännessä luvussa.
7.2 Fysikaalisen probleeman ratkaisu
Edellisissä luvuissa kuvattu painekorjausmenetelmä ei poikkea yleisestä fysikaalisen probleeman ratkaisemisesta, joka voidaan kirjoittaa seuraavaan algoritmimuotoon:
1. Tilannetta kuvaavat luonnonlait, joita yleisesti ottaen voidaan pitää tarkkoina,
mutta jotka tietenkin filosofisessa mielessä ovat vain kuvaus todellisuudesta.
Virtauksen yhteydessä meillä on taustalla massan, liikemäärän ja energian
häviämättömyys, joiden avulla johdetaan ratkaisua varten taseyhtälöt.
7.2. FYSIKAALISEN PROBLEEMAN RATKAISU
129
2. Yleensä aivan yksinkertaisia tilanteita lukuunottamatta joudutaan kirjoittamaan luonnonlakien perusteella approksimatiivinen yhtälö tai yhtälöryhmä,
joka yleensä on epälineaarinen.
3. Epälineaarisen yhtälöryhmän ratkaisua varten tarvitaan yleensä täydentävää
tietoa (constitutive equations), joka on tyypillisesti mitattua, korrelaatiopohjaista ja approksimatiivista. Esimerkkinä tästä on tiheyden ja viskositeetin laskenta.
4. Tulokseksi saadaan yhtälöjärjestelmä, joka ratkeaa vain iteroiden. Iteraation
kuluessa syntyy lineaarisia yhtälöryhmiä, jotka on ratkaistava. Koska perusyhtälöt on epälineaarisuuden vuoksi ratkaistava iteroiden, lineaaristen yhtälöryhmien ratkaisun tarkkuudesta voidaan usein tinkiä ilman, että lopputuloksen tarkkuus kärsii.
Epälineaaristen yhtälöiden ratkaisu perustuu Newtonin menetelmään, jossa lähtökohtana on seuraava approksimaatio
f (x) ≈ f (x0 ) + f ′ (x0 )(x − x0 )
(7.3)
Ratkaistaessa yhtälöä f (x) = 0 saadaan kierroksella k approksimaatio
xk = xk−1 −
f (xk−1 )
f ′ (xk−1 )
(7.4)
Yhtälöryhmille
fi (x1 , x2 , ..., xn ) = 0,
i = 1, 2, ..., n
(7.5)
saadaan vastaava lineaarinen ryhmä
n
X
j=1
aij (xkj − xjk−1 ) = −fi (xk1 , xk2 , ..., xkn ),
i = 1, 2, ..., n
(7.6)
j = 1, 2, ..., n
(7.7)
missä aij muodostaa yhtälöryhmän Jacobin matriisin
aij =
∂fi (xk1 , xk2 , ..., xkn )
,
∂xj
i = 1, 2, ..., n,
Periaatteessa Newtonin menetelmä konvergoi nopeasti. Konvergenssi on kvadraattista, mikä tarkoittaa, että kierroksella k + 1 suhteellinen virhe on verrannollinen
7.2. FYSIKAALISEN PROBLEEMAN RATKAISU
130
kierroksen k virheen neliöön. Siten menetelmä konvergoi hyvin nopeasti. Virtausprobleemoille Newtonin menetelmää ei sinällään juuri käytetä. Viime kädessä syynä on se, että Jacobin matriisia aij ei pystytä evaluoimaan eksplisiittisessä muodossa. Jacobin matriisin evaluointi edellyttäisi vuotermien linearisoinnin kaikkien
laskenta-alueen muuttujien suhteen ja suurimpana hankaluutena tässä ovat viskositeetin ja erityisesti turbulenssimallin linearisointi. Vaikka matriisi voitaisiin yksinkertaistavin oletuksin saada aikaan, niin sen laskenta on aikaa vievää ja tuloksena
saatava yhtälöryhmä ei ole yhtä harva kuin toimivissa laskenta-algoritmeissa. Tällöin yhtälöryhmän ratkaisuunkin kuluu myös paljon aikaa.
Virtausyhtälöiden ratkaisussa kehitys on johtanut kompromissiin linearisoinnin
tarkkuuden ja laskennan nopeuden suhteen. On kannattavampaa tehdä useita nopeita iteraatiokierroksia kuin yksi hidas. Pohjalla oleva periaate (1.2) on syytä palauttaa
mieliin tässäkin yhteydessä. Rakenteellisilla hiloilla linearisointi suoritetaan siten,
että kokoonpuristuvassa tapauksessa kaikki yhtälöt ratkaistaan kerralla hyödyntäen
toisessa luvussa esitettyjä vuovektorin Jacobin matriisiin liittyviä diagonalisointikeinoja. Tuloksena on blokkitridiagonaalinen yhtälö yksidimensioisessa tapauksessa ja dimensioiden lisäys tuottaa matriisiin lohkoista koostuvia nauhoja. Painekorjauksen yhteydessä taas pyritään tridiagonaalisten (yhdessä dimensiossa) yhtälöiden ryhmiin, jotka ratkaistaan toisistaan erillään. On myös mahdollista konstruoida
ratkaisumenetelmä, jossa liikemääräyhtälöt ja painekorjausyhtälö on linkitetty toisiinsa (Galpin ja Raithby, 1986), mutta tapa ei ole osoittautunut yhtälöiden erillistä
ratkaisemista selvästi tehokkaammaksi, vaikka sitä nykyisin sovelletaan kaupallisissa ohjelmissa.
Linearisoinnin periaatteet ovat jo tulleet esille edellisissä luvuissa. Eräänä kompromissina on mainittu epälineaaristen vuotermien osittainen linearisoimatta jättäminen. Tällöin linearisoitaessa nopeuden ui liikemääräyhtälöä
(ρui uj )k+1 ≈ (ρuj )k ∆ui + (ρui uj )k
(7.8)
ja vastaavasti yhtälöä nopeudelle uj
(ρui uj )k+1 ≈ (ρui )k ∆uj + (ρui uj )k
(7.9)
menettelyä kutsutaan Picardin iteraatioksi. On myös osoittautunut käteväksi ja toimivaksi ratkaisutavaksi approksimoida myös termiä (ρui ui )k+1 ≈ (ρui )k ∆ui +
7.3. SUORAT RATKAISUTAVAT
131
(ρui ui )k eikä (ρui ui )k+1 ≈ 2(ρui )k ∆ui + (ρui ui )k . Mikäli liikemääräyhtälöissä
suoritettaisiin linearisointi kaikkien nopeuskomponenttien suhteen, tuloksena saataisiin yhteen kytketyt yhtälöt.
Painekorjausmenetelmä saattaa joskus tuntua mystiseltä reseptiltä. Sen pohjalla
on kuitenkin tavanomainen epälineaarisen probleeman ratkaisu. Aikojen kuluessa
on kokeilemalla löydetty erilaisia toimivia menettelytapoja, kuten eri termien linearisointitavat. Näille menettelyille ei ole olemassa täsmällistä teoreettista perustelua.
7.3 Suorat ratkaisutavat
7.3.1 Gaussin eliminaatio
Gaussin eliminaatio on yleisin suora yhtälöryhmien ratkaisutapa. Periaatteessa yhtälöryhmän kerroinmatriisin muodolla ei ole merkitystä itse algoritmin kannalta,
mutta kylläkin ratkaisun tarkkuuden kannalta. Perusmatriisi on muotoa

a11
a
 21

A=
 a31
 ..
 .
an1
a12
a22
a32
..
.
an2
a13
a23
a33
..
.
···
a14
a24
a34
···
···

· · · a1n
· · · a2n 


· · · a3n 


..
. ··· 
· · · ann
(7.10)
Gaussin eliminaatiossa muutetaan matriisi A yläkolmiomatriisiksi U. Tämä tapahtuu esimerkiksi toisen rivin osalta siten, että ensimmäinen rivi kerrotaan tekijällä
a21 /a11 ja vähennetään toisesta yhtälöstä, jolloin termin a21 tilalle jää nolla. Vastaava tehdään kaikille riveille, joista siis vähennetään ensimmäinen rivi kerrottuna
tekijällä ai1 /a11 . Tämän jälkeen ensimmäisellä pystyrivillä on a11 :n lisäksi vain nollia. Seuraavaksi eliminoidaan toisen vaakarivin alapuolelta yhtälöiden toinen vaakarivin termi. Jatkamalla näin viimeiselle riville asti, saadaan yläkolmiomatriisi

a′11
 0


0
U =

 ..
 .
0
a′12
a′22
0
..
.
a′13
a′23
a′33
..
.
0
···
a′14
a′24
a′34
···
···
···
···
···
..
.

a′1n
a′2n 


a′3n 

···
· · · a′nn
(7.11)


Seuraavassa vaiheessa suoritetaan eliminointi taaksepäin lähtien viimeiseltä vaakariviltä
φn =
qn′
a′nn
(7.12)
7.3. SUORAT RATKAISUTAVAT
132
ja jatkaen rekursiivisesti
φi =
qn′ −
n
X
a′ik φk
k=i+1
a′ii
(7.13)
summalausekkeessa esiintyvät ratkaistavien suureiden arvot ovat tunnetut edellisiltä
i:n arvoilta.
Gaussin eliminaatiota joudutaan jonkin verran modifioimaan prosessissa lävistäjällä esiintyvien nollien tai suurilla yhtälöryhmillä tapahtuvan virheen kasaantumisen vuoksi. Apukeinona on rivien vaihto (pivoting). Rivien vaihdolla voidaan
saada lävistäjäalkio mahdollisimman suureksi, mikä estää virheen kasaantumisen.
Gaussin eliminaatioon liittyvä laskentaoperaatioiden määrä on verrannollinen
tuntemattomien lukumäärän kuutioon n3 /3. Tämä tekee algoritmista virtauslaskentaan sopimattoman aivan pieniä tehtäviä lukuunottamatta. Gaussin eliminaatiota ei
kannata käyttää harvoille matriiseille, mutta täysille matriiseille se on yhtä hyvä
kuin mikä tahansa muu (iteratiivinen ) menetelmä. Koska algoritmi on rekursiivinen se ei vektoroidu eikä rinnakkaistu kunnolla.
7.3.2 LU-hajotelma
Gaussin eliminaatiolle on esitetty erilaisia muunnoksia, joista tässä esitetään vain
LU hajotelma (LU decomposition). Tässä muunnoksessa kerroinmatriisi A hajotetaan ylä- ja alakolmiomatriisien tuloksi
A = LU
(7.14)
Jotta hajotelma olisi yksikäsitteinen vaaditaan, että joko Lii = 1 tai Uii = 1. Yläkolmiomatriisi (7.11) syntyy Gaussin eliminaation yhteydessä. Alakolmiomatriisin
alkiot ovat eliminaatioprosessissa käytetyt kertoimet
lij = aji /aii
(7.15)
LU-hajotelma voidaan siis tehdä pienin muunnoksin Gaussin eliminaation suorittavasta ohjelmasta. Kun matriisit L ja U ovat olemassa, saadaan määrittelemällä
Uφ = Y
(7.16)
LY = Q
(7.17)
yhtälöstä (7.1)
7.3. SUORAT RATKAISUTAVAT
133
Ratkaisu aloitetaan siis ensin yhtälöstä (7.17) samaan tapaan kuin Gaussin eliminaatiossakin, mutta aloittamalla ensimmäiseltä riviltä. Tämän jälkeen jatketaan kuten
Gaussin eliminaatiossa yhtälöstä (7.16).
LU-hajotelman etu on siinä, ettei yhtälöryhmän oikean puolen vektoria Q tarvitse tuntea LU-hajotelmaa tehtäessä. Jos ratkottavana on useita yhtälöitä, joilla on
sama kerroinmatriisi, voidaan hajotelma tehdä vain kerran ja soveltaa sitä eri yhtälöille, joilla Q on erilainen. LU-hajotelmaa ei sinällään juuri käytetä virtausratkaisuissa, mutta se muodostaa perustan usealle iteratiiviselle menetelmälle.
7.3.3 Tridiagonaaliset yhtälöt
Laskennallisen virtausmekaniikan kursseilla on jo tullut hyvin tutuksi työkaluksi
tridiagonaalisten yhtälöiden ratkaisu Thomasin algoritmin avulla. Kirjoitetaan yhtälö esiin ilmansuuntamerkintöjen avulla
AW,i φi−1 + AP,i φi + AE,i φi+1 = Qi
(7.18)
Thomasin algoritmi perustuu Gaussin eliminaatioon, mutta nyt tarvitsee eliminoida
vain yksi termi
A′P,i = AP,i −
AW,i AE,i−1
A′P,i−1
(7.19)
Vastaava oikean puolen termi on myös modifioitava
Q′i = Qi −
AW,i Q′i−1
A′P,i−1
(7.20)
Algoritmin toinen vaihe on myös yksinkertainen
φi =
Q′i − A′E,i φi+1
A′P,i
(7.21)
Thomasin algoritmin laskenta-aika on verrannollinen yhtälöiden lukumäärään n,
mitä parempaa tulosta ei yleensä voi saada millään menetelmällä. Tämän vuoksi
algoritmia kannattaa hyödyntää aina silloin, kun se on mahdollista. Monet iteratiiviset menetelmät, kuten approksimatiivinen faktorointi (kts. peruskurssi, sivu 118),
hyödyntävät Thomasin algoritmia.
Myös blokkitridiagonaalisille yhtälöille on olemassa ratkaisualgoritmi (esim.
Anderson-Tannehill-Pletcher). Kuten luvussa kaksi tuotiin esille, voidaan kokoonpuristuvien yhtälöiden ratkaisussa muodostuva matriisi diagonalisoida, jolloin tehtävä on myös mahdollista muuttaa tridiagonaalisten yhtälöiden ratkaisuksi.
7.4. ITERATIIVISET MENETELMÄT
134
7.4 Iteratiiviset menetelmät
7.4.1 Peruskäsitteitä
Koska virtauslaskennassa syntyvien yhtälöryhmien kerroinmatriisit ovat harvoja,
käytetään niiden ratkaisussa iteratiivisia menetelmiä. Kokemus on osittanut, että
melko suppealla menetelmien perusarsenaalilla tulee hyvin toimeen. Klassiset ratkaisutavat on aikoinaan kehitetty differenssimenetelmän yhteydessä ja perustuvat
usein siten rakenteelliseen hilaan. Joitakin menetelmiä voidaan pienin modifikaatioin käyttää rakenteettomille, mutta rakenteellisen hilan ratkaisumenetelmät ovat
tehokkaampia kuin rakenteettomien. Tärkeäksi työkaluksi virtauslaskennassa muodostui 1980-luvun lopulta lähtien monihila-algoritmi, jota voidaan hyödyntää monella eri tavalla ja joka soveltuu myös rakenteettomille hiloille. Tarkastellaan seuraavaksi eräitä iteratiivisten menetelmien peruskäsitteitä.
Kaikkien iteratiivisten menetelmien yhteydessä residuaalin käsite on hyödyllinen. Kun edellisissä luvuissa laadittiin epälineaaristen yhtälöiden ratkaisualgoritmia, käytettiin delta-muotoa, jolloin oikealle puolelle jäi residuaali. Residuaalia
käytetään myös lineaaristen yhtälöryhmien ratkaisussa. Merkitsemällä residuaalia
kierrokselta n ρn :llä, voidaan kirjoittaa
Aφn = Q − ρn
(7.22)
Vähentämällä tämä yhtälöstä (7.1) saadaan konvergenssivirheelle ǫn = φ − φn yhteys
Aǫn = ρn
(7.23)
Iteraatioprosessin tarkoituksena on jauhaa residuaali nollaksi, jolloin myös virhe
menee nollaksi (tietokoneen laskentatarkkuudella). Iteratiivinen menetelmä voidaan
kirjoittaa muotoon
Mφn+1 = Nφn + B
(7.24)
Kun menetelmä on konvergoinut φn+1 = φn = φ, jolloin yhtälön (7.1) perusteella
saadaan
A = M − N ja B = Q
(7.25)
P A = M − N ja B = P Q
(7.26)
tai yleisemmin
7.4. ITERATIIVISET MENETELMÄT
135
missä P on ns. pohjustusmatriisi (pre-conditioning matrix). Iteratiivisen menetelmän konstruointi tarkoittaa siis matriisien M, N ja P muodostamista. Toiseen muotoon päädytään vähentämällä yhtälöstä (7.24) molemmilta puolilta termi Mφn , jolloin saadaan
M(φn+1 − φn ) = B − (M − N)φn = B − Aφn
(7.27)
Tämä voidaan kirjoittaa muotoon
Mδ n = ρn
(7.28)
missä δ n = φn+1 − φn on iteraatiokierrosten välinen korjaus. Yhtälö (7.28) vastaa
aiemmin epälineaarisille yhtälöille johdettua delta-muotoa.
Iteratiivisessa menetelmässä saatetaan käyttää approksimatiivisen faktoroinnin
kaltaista menettelyä, jossa M hajotetaan osamatriiseiksi (suoritetaan esimerkiksi
linja-Gauss-Seidel -iterointi jokaisessa indeksisuunnassa). Menetelmissä pyritään
siihen, että M olisi mahdollisimman yksinkertainen tai hajotettavissa yksinkertaisten operaatioiden tuloksi. Lisäksi M:n tulisi approksimoida mahdollisimman hyvin
matriisia A.
7.4.2 Konvergenssi ja spektraalisäde
Määritellään seuraavaksi käsite spektraalisäde, joka on hyödyllinen konvergenssin
arvioinnissa. Tarkka ratkaisu toteuttaa yhtälön
Mφ = Nφ + B
(7.29)
Vähentämällä tämä yhtälöstä (7.24) saadaan tarkan ratkaisun ja olemassa olevan
ratkaisun väliselle virheelle yhtälö
ǫn+1 = M −1 Nǫn
(7.30)
Menetelmä konvergoi, jos lim ǫn = 0. Konvergenssia voidaan tutkia matriisin
n→∞
M −1 N ominaisarvojen λk ja ominaisvektorien ψ k avulla, jotka määritellään seuraavasti
M −1 Nψ k = λk ψ k ,
k = 1, ..., K
(7.31)
7.4. ITERATIIVISET MENETELMÄT
136
missä K on yhtälöiden (hilapisteiden) lukumäärä. Olettamalla, että ominaisvektorit muodostavat K-ulotteisen vektoriavaruuden kannan, voidaan alkuperäinen virhe
lausua kyseisen kannan avulla
ǫ0 =
K
X
ak ψ k
(7.32)
k=1
missä ak on vakio. Ensimmäisen iteraatiokierroksen jälkeen virhe on
ǫ1 = M −1 Nǫ0 = M −1 N
K
X
ak ψ k =
k=1
mistä induktiolla saadaan
ǫn =
K
X
K
X
ak λk ψ k
(7.33)
k=1
ak (λk )n ψ k
(7.34)
k=1
Kuten nähdään, on matriisin M −1 N ominaisarvojen oltava pienempiä kuin yksi, jotta menetelmä konvergoisi. Kun n on suuri, sarjassa dominoi lähinnä ykköstä oleva
suurin ominaisarvo. Tätä ominaisarvoa λ1 kutsutaan matriisin M −1 N spektraalisäteeksi ja virheen pienenemiselle saadaan sen avulla approksimaatio
ǫn = a1 (λ1 )n ψ 1
(7.35)
menetelmä konvergoi siis sitä nopeammin, mitä pienempi on sen spektraalisäde.
Käytännössä useiden menetelmien spektraalisäteet isoilla matriiseilla ovat hyvin
lähellä ykköstä. Triviaali esimerkki saadaan käyttäen yhtä malliyhtälöä ax = b.
Iteratiivinen menetelmä on muotoa
mxp+1 = nxp + b
(7.36)
missä m = a + n ja p on iteraatiokierros. Virheelle saadaan yhtälö
ǫp+1 =
n p
ǫ
m
(7.37)
Tästä nähdään menetelmän konvergoivan sitä nopeammin, mitä pienempi suhde
on eli mitä lähempänä m on a:ta.
n
m
Spektraalisäde voidaan määrittää konvergenssihistoriasta ja sen avulla voidaan
tehdä arvio virheen pienenemiselle iteraatiota jatkettaessa. Kahden iteraatiokierroksen väliselle korjaukselle voidaan kirjoittaa yhtälön (7.35) avulla
δ n = φn+1 − φn = (φn+1 − φ) − (φn − φ) ≈ (λ1 − 1)(λ1 )n a1 ψ1
(7.38)
7.4. ITERATIIVISET MENETELMÄT
137
Tästä voidaan määrittää spektraalisäde approksimatiivisesti kahden peräkkäisen korjauksen avulla
k δn k
(7.39)
k δ n−1 k
missä k δ n k on korjauksen L2 -normi. Konvergenssivirheelle saadaan seuraava apλ1 ≈
proksimaatio käyttäen yhtälöitä (7.38) ja (7.35)
ǫn = φ − φn ≈
δn
1 − λ1
(7.40)
Hyvä estimaatti käyttäen kakkosnormia on siten
k ǫn k≈
k δn k
1 − λ1
(7.41)
Edellä esitetty tarkastelu pätee, jos ominaisarvot ovat reaaliset. Kompleksisille ominaisarvoille tarkastelu on monimutkaisempi (Ferziger-Peric). Käytännössä spektraalisädettä ei kannata arvioida kahden peräkkäisen kierroksen avulla, vaan ottaen
riittävän iso lukemaväli. Esimerkiksi kuvasta 7.2 nähdään toiseksi harvimmalla tasolla residuaalin putoavan lähes kuusi dekadia noin sadassa kierroksessa. Tästä saadaan arvio λ1 ≈ 0,87. Jos spektraalisädettä käytetään konvergenssiarvioissa ennen
kuin iteraatio on supennut, on tietenkin käytettävä lyhyempää iteraatiokierrosten
väliä sen arvioinnissa.
7.4.3 Perusmenetelmiä
Ihmisille kirjoitettuna yksinkertaisin iteraatiomenetelmä on Jacobin iteraatio, joka
on muotoa
qP − AS φnS − AW φnW − AN φnN − AE φnE
(7.42)
AP
Tämän menetelmän konvergenssi on hidas eikä sitä juuri käytetä. Tietokoneen ymφn+1
=
P
märtämällä kielellä vielä yksinkertaisempi menetelmä on Gauss-Seidel, jossa yhtälössä (7.42) jo lasketut φ:n arvot käytetään hyväksi. Jacobin menetelmä vaatii
ohjelmallisesti joitain temppuja, joten kun Gauss-Seidelin konvergenssi on kaksinkertainen Jacobiin verrattuna, käytetään yleensä sitä, jos näin yksinkertaista tapaa
halutaan käyttää. Jacobi on kuitenkin nopeampi vektoritietokoneella, koska se ei
sisällä rekursiota ja vektoroituu.
Gauss-Seidel näyttäisi soveltuvan sinällään liikemääräyhtälöiden ratkaisuun, koska niiden konvergenssi yhdellä ulkoisella iteraatiokierroksella ei ole kovin kriittinen. Gauss-Seidelia kannattaa tehostaa aloittamalla pyyhkäisyt alueen yli vuoron
7.4. ITERATIIVISET MENETELMÄT
138
perään eri nurkista. Menetelmästä on myös monimutkaisempia versioita. Ns. redblack -menettelyssä pisteet väritetään kuten shakkilaudassa ja ensin loikitaan toisella ja sen jälkeen toisella värillä. Linjoittaisessa Gauss-Seidelissa (line-GaussSeidel, LGS) käytetään hyväksi Thomasin algoritmia ja ratkotaan linjoittain tridiagonaalinen yhtälö. Tällöin kaksidimensioisessa tapauksessa yhtälössä (7.42) vain
yksi termi oikealla puolella otetaan edelliseltä iteraatiokierrokselta. LGS on huomattavasti parempi kuin perus-Gauss-Seidel ja sitä käytetäänkin tällä kurssilla painekorjausyhtälön ratkaisussa. LGS tulee implementoida siten, että ’sweepit’ otetaan
kaikissa indeksisuunnissa. Siten yksi iteraatiokierros kolmidimensioisessa tapauksessa koostuu kolmeen eri suuntaan tehtävistä tridiagonaalisista ratkaisuista ja on
eräänlainen ADI- tai likimääräinen ositus -menetelmä.
Gauss-Seidelia kehittyneempi menetelmä on ylirelaksaatiomenetelmä SOR (successive over-relaxation)
φn+1
P
n
n
qP − AS φn+1
− AW φn+1
S
W − AN φN − AE φE
=ω
+ (1 − ω)φnP
AP
(7.43)
Menetelmä redusoituu Gauss-Seideliksi, kun ylirelaksaatiokerroin ω = 1. Kun kerroin on suurempi kuin yksi iteraatio tehostuu, mutta liian suurilla kertoimien arvoilla iterointi divergoi. Sopivan kertoimen valinta on tapauskohtaista. Koska kerroin on
herkkä yhtälön muodolle, SORia käytetään ehkä enemmän tilanteissa, joissa matriisin A kertoimet muuttuvat laskenta-alueessa vähän tai ei ollenkaan, siis esimerkiksi
differenssimenetelmän yhteydessä, kun ∆xi = vakio. Menetelmä ei ole riittävän
robusti painekorjausyhtälön ratkaisuun.
7.4.4 Epätäydellinen LU-hajotelma: Stonen menetelmä
Epätäydellinen LU-hajotelma (incomplete LU factorization, ILU) on menetelmäryhmä, joka on yleistynyt viime vuosina. Menetelmässä ei hajotetakaan matriisia
A tekijöihinsä, vaan
M = LU = A + N
(7.44)
Koska sovelletut matriisit A ovat harvoja, myös L ja U ovat harvoja ja N pieni.
Jos matriisi A on symmetrinen, puhutaan epätäydellisestä Choleskyn faktoroinnista. Choleskyn faktorointia käytetään usein myös konjugaattigradienttimenetelmien
yhteydessä. Epäsymmetrisille matriiseille, kuten konvektio-diffuusio -yhtälön tuottamille, käytettyä menettelyä nimitetään ILUksi. Tällöin ainoastaan ne matriisien L
7.4. ITERATIIVISET MENETELMÄT
139
ja U diagonaalit, jotka ovat nollasta poikkeavia alkuperäisessä matriisissa A, saavat
olla nollasta poikkeavia. Tässä muodossa LU approksimoi huonosti matriisia A.
Stonen menetelmässä, jota myös kutsutaan vahvasti implisiittiseksi proseduuriksi (strongly implicit procedure, SIP), käytetään hyväksi konvektio-diffuusio yhtälöiden ominaisuuksia laadittaessa mahdollisimman hyvää approksimaatiota A:lle.
Menetelmä ei siten edes toimi yleisille matriiseille. Matriisien L, U ja M rakenne
on seuraava:
LW LS LP
.
1 UN UE = MWMN WMSMPMN MS EME
Kuva 7.1: Matriisien L, U ja M rakenne
Matriisiin M = LU syntyy siis kaksi nauhaa, joita ei ole alkuperäisessä matriisissa. Nämä nauhat vastaavat kaksidimensioisessa tapauksessa ’väli-ilmansuuntia’
luode ja kaakko. Stonen menetelmässä näissä ilmansuunnissa olevien ratkaistavien
suureiden arvoja φN W ja φSE approksimoidaan interpoloimalla ne muiden hilapisteiden uusista arvoista sen sijaan, että käytettäisiin vanhoja edellisen kierroksen arvoja. Tästä nimitys ’vahvasti implisiittinen’.
SIP on ilmeisen hyvä ja tehokas menetelmä, jota voidaan käyttää myös tasoittajana monihila-algoritmin yhteydessä. Ferziger-Peric käyttävät SIPiä. Koska monihilamenetelmään voidaan yhdistää muitakin yksinkertaisempia menetelmiä, ei tässä
yhteydessä perehdytä Stonen menetelmään tarkemmin.
7.4.5 ADI ja muut ositusmenetelmät
Peruskurssilla käytettiin monidimensioisten ongelmien ratkaisussa likimääräistä ositusta (approximative factorization). Todettiin myös, että ensimmäinen vastaava menetelmä oli ADI (alternating direction implicit), joka kehitettiin 1950-luvun puolivälissä. Ositusmenetelmissä lävistäjällä on oltava enemmän painoa kuin muiden
7.4. ITERATIIVISET MENETELMÄT
140
termien summa. Yleensä diskretointi perustuu aikaintegrointiin, esimerkiksi tyyppiä
∂2T
∂T
∂2T
=α
+
∂t
∂x2
∂y 2
!
(7.45)
oleviin yhtälöihin, jotka diskretoidaan ajan suhteen implisiittisesti. Tuloksena oleva
Jacobin matriisi jaetaan kahdeksi (kolmessa dimensiossa kolmeksi) yhtälöryhmäksi, joiden ratkaisussa voidaan hyödyntää Thomasin algoritmia. Jos ositus tehdään
’nurkasta nurkkaan’ -periaatteella eikä indeksien ijk-mukaan, puhutaan tässäkin
menetelmäryhmässä LU-faktoroinnista. Peruskurssilta muistamme jaon tuottavan
alkuperäiseen matriisiin lisänauhoja, mutta nyt ne ovat pieniä, koska ne ovat verrannollisia tekijään ∆t2 . Koska aika-askel on samassa asemassa kuin alirelaksaatio, havaitaan, että approksimatiivista faktorointia soveltavissa menetelmissä matriisi M saadaan hyväksi approksimaatioksi matriisille A lisäämällä alirelaksaatiota,
mikä puolestaan tietenkin lisää tarvittavien iteraatiokierrosten lukumäärää. ADImenetelmillä on siten jokin optimiaika-askel, joka löytyy kokemuksen myötä ja on
onneksi melko ’samalla pelikentällä’ samantyyppisissä tilanteissa.
ADI-menetelmistä on lisäksi hyvä muistaa, ettei alkuperäistä ADI-menetelmää
juuri käytetä ja alkuperäisellä menetelmällä kolmidimensioisessa tapauksessa on
jopa aika-askeleen pituudelle rajoitus. Menetelmistä on olemassa versioita, joissa matriiseja yksinkertaistetaan, mikä on mahdollista virtausyhtälöiden luonteen
perusteella. Esimerkkinä tästä on Jamesonin LU-SGS -menetelmä (lower-upper–
simplified-Gauss-Seidel). Lävistäjävaltaisuus parantaa aina iteroinnin robustisuutta, erästä tällaista kutsutaan termillä ’diagonally dominant ADI’ (DDADI).
ADI-menetelmät ovat virtauslaskentaan sopivia ja ne soveltuvat myös monihilaalgoritmien osaksi. Menetelmiä ei kuitenkaan käytetä tällä kurssilla.
7.4.6 Konjugaattigradienttimenetelmät
Konjugaattigradienttimenetelmät on kehitetty epälineaaristen yhtälöryhmien ratkaisuun. Epälineaaristen yhtälöiden ratkaisumenetelmät voidaan jakaa kahteen luokkaan: Newton-tyyppisiin ja globaaleihin. Newton-tyyppiset menetelmät ovat tehokkaita, mutta tarvitsevat hyvän alkuarvauksen. Globaalit menetelmät ovat varmempia, mutta tehottomia. Konjugaattigradienttimentelmät ovat globaaleja menetelmiä,
joissa alkuperäinen ongelma muunnetaan optimointiprobleemaksi. Esimerkiksi po-
7.4. ITERATIIVISET MENETELMÄT
141
sitiivisesti definiitille matriisille A yhtälön Aφ = Q ratkaisu voidaan muuttaa funktion
1
F = φT Aφ − φT Q
(7.46)
2
minimoinniksi. (Positiivisesti definiitti matriisi on symmetrinen ja sillä on positiiviset ominaisarvot). Funktio F voidaan ikään kuin ajatella olevan pinta n-ulotteisessa
avaruudessa. Kaksiulotteinen vastine on kartta ja minimoinnissa haetaan kartan matalinta kohtaa. Konjugaattigradienttimenetelmä eroaa gradienttimenetelmästä siten,
että siinä edetään vuoronperään ns. konjugaattisuuntiin. Suunnat p~1 ja p~2 ovat toistensa konjugaatteja jos
(7.47)
p~1 · A~p2 = 0
Menetelmässä jokainen uusi suunta on kaikkien edellisten suuntien konjugaatti. Esimerkiksi kaksiulotteisessa tapauksessa (jota ei tietenkään kannata iteratiivisella menetelmällä ratkaista), minimi saavutetaan minimoimalla suuntiin p~1 ja p~2 erikseen.
Menetelmä sisältää yksiulotteisen minimointirutiinin, jolla minimi yhdessä suunnassa kerrallaan haetaan.
Perusmuodossaan konjugaattigradienttimenetelmä saattaa konvergoida hyvin hitaasti. Konvergenssi on riippuvainen matriisin A suurimman ja pienimmän ominaisarvon suhteestasta. Mitä suurempi tämä suhde on, sitä hitaampi konvergenssi. Ominaisarvojen suhdetta voidaan pienentää käyttämällä matriisin pohjustusta (preconditioning). Pohjustus tehdään muodossa
C −1 AC −1 Cφ = C −1 Q
(7.48)
Konjugaattigradienttimenetelmää sovelletaan siten matriisille C −1 AC −1 . Menetelmään sisältyy matriisin A epätäydellinen Choleskyn faktorointi. Virtausyhtälöitä
ratkottaessa tämä voidaan korvata Stonen menetelmässä sovellettavilla matriiseilla
L ja U. Algoritmi on esitetty Ferziger-Pericissä.
Konjugaattigradienttimenetelmät soveltuvat vain symmetrisille matriiseille, joten ne eivät sinällään sovellut konvektio-diffuusio -yhtälön ratkaisuun. Bikonjugaattimenetelmissä matriisi tehdään symmetriseksi lisäämällä probleeman kokoa
0
AT
A
0
·
ψ
φ
=
Q
0
(7.49)
Bikonjugaattigradienttimenetelmien versioita, joita näkyy käytettävän virtauslaskennassa, ovat mm. CGS (conjugate gradient squared), CGSTAB (CGS stabilized)
7.5. MONIHILA-ALGORITMI
142
ja GMRES. Kaikkia näitä voidaan käyttää epäsymmetrisille matriiseille ja sekä rakenteellisille että rakenteettomille hiloille.
7.5 Monihila-algoritmi
7.5.1 Peruskäsitteitä
Kaikilla perusmenetelmillä on se ominaisuus, että kun laskenta-alueen kokoa (muuttujien lukumäärää) kasvatetaan, niin iteraatiokierrosten määrä kasvaa. Esimerkkinä voidaan tarkastella LGS-menetelmän suppenemista diffuusioyhtälön tapauksessa Dirichlet-reunaehdoin (kuva 7.2). Hilatiheyden kaksinkertaistaminen kummassakin suunnassa likimain kolminkertaistaa iteraatiokierrosten määrän. Siirryttäessä
tiheimmälle 64 × 64 -hilalle kierrosmäärä lähes nelinkertaistuu. Suurilla laskentahiloilla ollaankin jo tilanteessa, jossa LGS-menetelmää ei sinällään kannata käyttää.
Tilanteeseen on olemassa hyvä ratkaisu, ns. monihilan (multigrid) käyttö.
Kuva 7.2: LGS-menetelmän suppeneminen erikokoisilla laskentahiloilla
Monihila-algoritmeissa perusideana on käyttää harvempia hilatasoja hyödyksi.
Yksinkertainen tapa saada hyvä alkuarvaus esimerkiksi virtausprobleemassa, on interpoloida ratkaisu harvemmalta tasolta. Rakenteellisella hilalla harvempi taso saa-
7.5. MONIHILA-ALGORITMI
143
daan poistamalla joka toinen hilaviiva kaikissa suunnissa. Rakenteettomalla harvempi taso saadaan yhdistelemällä tiheämmän tason koppeja sopivasti. Alkuarvauksen käyttöä lähtien harvimmalta tasolta ja päätyen kaikkein tiheimmälle, nimitetään
täydeksi monihilaksi (full multigrid, FMG). Tapaa voidaan nimittää myös geometriseksi monihilamenetelmäksi silloin, kun se kohdistuu alkuperäisiin epälineaarisiin
(virtaus)yhtälöihin, koska ratkaisua haetaan alkuperäiselle probleemalle kyseisellä hilatasolla. Vastakohtana on algebrallinen monihila (AMG), jossa monihilaratkaisija periaatteessa ei tarvitse muuta tietoa kuin yhtälöryhmän. Algebralliset monihilaratkaisijat ovat yleistyneet viime vuosina kaupallisissa virtausratkaisijoissa.
Ne sopivat yhtä hyvin sekä rakenteellisille ja rakenteettomille hiloille. Rakenteettomien hilojen yhteydessä menetelmän implementointi ei ole yhtä suoraviivaista, koska koodiin on laadittava jokin strategia muuttujien yhdistämiselle. Tässä yhteydessä
kannattaa huomata, että vaikkei algebrallisessa monihilamenetelmässä käytetäkään
eksplisiittistä geometriatietoa, on taustalla kuitenkin ajattelu siitä, että tuntemattomat suureet muodostavat jonkinlaisen verkon avaruudessa. Tätä tietoa hyödynnetään esimerkiksi interpoloinnissa, joka on menetelmän oleellinen osa.
Esimerkki geometrisen monihilan käytöstä annetaan luvussa kahdeksan. Menetelmää kutsutaan myös joskus termillä ’FAS’ (full approximation scheme, myös storage). Tässä luvussa tarkastellaan lähinnä algebrallisen monihilan perusteita. Menetelmä ei kuitenkaan eroa oleellisilta osiltaan geometrisesta monihilamenettelystä
ja tässä esitetty algoritmi voidaan pukea määrittelemällä residuaali yhtälön (7.22)
avulla samaan muotoon kuin seuraavassa luvussa esitetty algoritmi.
Monihila-algoritmeissa ratkaisu haetaan tiheimmällä tasolla ja ratkaisua harvemmilla tasoilla ajaa tiheimmällä tasolla laskettu residuaali. Tasoja voidaan käyttää niin paljon, että harvimmalla tasolla jäljellä on vain yksi yhtälö (tai geometrisessa monihilassa yksi laskentatilavuus). Tästä ei ole enää juuri hyötyä, vaan käytännössä lopetetaan, kun harvin taso sisältää muutaman laskentatilavuuden kaikissa
hilan indeksisuunnissa. Algoritmi säästää laskenta-aikaa kahdella tavalla: Ensinnäkin on edullista viedä laskennasta alemmille tasoille niin paljon kuin mahdollista.
Kolmidimensioisessa tilanteessa harvempi taso sisältää vain 1/8-osan edellisen tason yhtälömäärästä ja laskentatyöstä. Vielä tärkeämpi on se ominaisuus, että ratkaisu löytyy harvemmilla tasoilla pienemmässä iteraatiokierrosmäärässä, kuten kuvasta 7.2 nähdään. Monihila-algoritmit toimivat periaatteessa niin tehokkaasti, että
7.5. MONIHILA-ALGORITMI
144
iteraatiokierrosten määrä säilyy ennallaan, vaikka muuttujien määrää kasvatetaan.
Kun vielä monihilan aiheuttama laskenta-ajan kasvu on pientä perusmenetelmän
vaatimaan laskenta-aikaan verrattuna harvoilla tasoilla tapahtuvan laskenta-ajan lisäyksen ollessa vähäistä, menetelmä on todella houkutteleva isojen laskentatehtävien yhteydessä.
Jotta menetelmä toimisi, on eron tarkan ratkaisun ja vallitsevan approksimaation
välillä oltava tasainen. Tällöin laskentaa voidaan tehdä harvemmalla tasolla ja tuoda
sieltä tuleva korjaus interpoloimalla tiheämmälle tasolle. Esimerkiksi Gauss-Seidel
-menetelmä ja SIP tuottavat muutaman iteraatiokierroksen jälkeen tuloksen, jossa
virhe muuttuu tasaisesti kaikissa koordinaattisuunnissa. Näitä menetelmiä voidaan
käyttää monihila-algoritmissa tasoittajina (smoother). Jacobin iteraatio tai SOR eivät ole hyviä tasoittajia, koska niiden tuottama iterointivirhe voi olla oskilloiva. Iterointivirheen käyttäytymistä voidaan tutkia iterointimatriisin ominaisarvojen avulla
ja käytännössä vielä helpommin seuraamalla konvergenssihistoriaa. Hyvillä tasoittajilla konvergenssi on tasaista, huonoilla oskilloivaa. Oskilloiva konvergenssi ei
kuitenkaan merkitse, että perusmenetelmä, esim. SOR olisi huono. Monihilaa käytettäessä tiheämmän tason residuaali siirretään harvemmalle tasolle. Operaatiota nimitetään rajoittamiseksi (restriction). Kun korjaus tuodaan takaisin tiheämmälle
tasolle, kyseessä on takaisin interpolointi, josta englannin kielessä käytetään termiä
’prolongation’.
7.5.2 Yksinkertainen esimerkki
∆x
i−3
i−2
I −1
i−1
i
I
Tiheä hila
i +1
i+2
i +3
I+1
∆X
H a r v hila
a
Kuva 7.3: Yksidimensioisessa tilanteessa käytettävät kaksi hilatasoa pidettäessä harvan ja
tiheän tason noodit samassa pisteessä.
Tarkastellaan seuraavaksi diskretoidun Poisson-yhtälön ratkaisemista yksidimen-
7.5. MONIHILA-ALGORITMI
145
sioisessa tapauksessa. Esimerkillä ei ole käytännön merkitystä, koska yhdessä dimensiossa monihilaa ei kannata käyttää, kun Thomasin algoritmi hoitaa saman
asian tehokkaammin. Differenssimenetelmällä päädytään seuraavaan diskreettiin
yhtälöön
1
(φi+1 − 2φi + φi−1 ) = fi
(7.50)
∆x2
Iteraatiokierroksella n approksimatiivinen ratkaisu on φn ja yhtälö toteutuu siten,
että jäljellä on residuaali ρn
1
(φn − 2φni + φni−1 ) = fi − ρni
∆x2 i+1
(7.51)
vähentämällä yhtälöt toisistaan toisistaan saadaan
1
(ǫni+1 − 2ǫni + ǫni−1 ) = ρni
2
∆x
(7.52)
jota voidaan käyttää monihila-algoritmissa. Tarkoituksena on hakea approksimaatio
korjaukselle ǫn käyttäen harvempaa hilaa. Esimerkin kannalta yksinkertaisin tapa
harventaa hilaa on jättää pois joka toinen noodi, kuten kuvassa 7.3 on esitetty. Koska
harvan hilan noodi peittää yhden tiheän hilan laskenta-alueen kokonaan ja kaksi
rinnakkaista puoliksi, voidaan ajatella seuraavaa diskretointia
1
1
(ǫni+2 − 2ǫni + ǫni−2 ) = (ρni+1 + 2ρni + ρni−1 )
2
4∆x
4
(7.53)
Käyttäen harvan hilan merkintöjä, tämä voidaan kirjoittaa muotoon
1
(ǫnI+1 − 2ǫnI + ǫnI−1 ) = ρ¯nI
2
∆X
(7.54)
Residuaalin siirto (restriction) tiheältä tasolta harvemmalle tapahtuu siis tässä tapauksessa seuraavasti
1
ρ¯nI = (ρni+1 + 2ρni + ρni−1 )
4
(7.55)
Tämän jälkeen voidaan esittää kahden tason monihila-algoritmi:
• Suoritetaan tiheimmällä hilatasoilla iterointeja käyttäen jotain menetelmää,
jolla on hyvät tasoitusominaisuudet, esim. LGS. (Yksidimensioisessa tapauksessa LGS tuottaisi yhdellä kierroksella tarkan ratkaisun). Yleensä tiheällä
tasolla kannattaa tehdä vain yksi iteraatiokierros, jotta aikaa säästyisi.
• Lasketaan tiheän tason residuaalit ρi .
7.5. MONIHILA-ALGORITMI
146
• Siirretään residuaalit harvalle tasolle käyttäen yhtälöä (7.55) (rajoittaminen).
• Suoritetaan iterointeja harvalla tasolla, tyypillinen määrä on esimerkiksi viisi
iteraatiota (tasoittaminen).
• Interpoloidaan korjaus ǫI tiheälle tasolle (prolongaatio).
• Toistetaan prosessi, kunnes tiheän tason residuaali on riittävän pieni
Joka toinen piste voidaan tässä esimerkissä siirtää sinällään, joka toinen ottaa keskiarvona kahdesta harvan tason rinnakkaisesta arvosta. Interpoloinnissa kannattaa
huomata, että siirretään korjausta, ei itse ratkaistua arvoa. Sen vuoksi on mahdollista käyttää epätarkkaakin interpolaatiota, joka korjaa tiheän tason tulosta kuitenkin
oikeaan suuntaan.
Kontrollitilavuusmenetelmän yhteydessä kannattaa harvempi taso muodostaa siten, että yhdistetään rinnakkaisia laskentatilavuuksia. Mikäli käytännössä meneteltäisiin kuten tässä esimerkissä, ongelmia tulisi laskenta-alueen reunoilla, koska
niiden käsittely poikkeaisi alueen keskellä olevien koppien käsittelystä. Tässä esimerkissä käytettiin tavallaan tietoa geometriasta ja hilaväli ∆x esiintyy kaavoissa eksplisiittisesti. Menetelmä olisi voitu konstruoida myös algebrallisesti käyttäen
vain annettua yhtälöryhmää, mutta tällöinkin interpoloinnissa ja residuaalin rajoittamisessa käytettäisiin implisiittisesti tietoa yhtälöryhmän taustalla olevasta probleemasta.
7.5.3 Algebrallinen monihila-algoritmi yhtälöryhmille
Monihila-algoritmi voidaan laajentaa useammalle tasolle. Helpoin laajentamistapa
on ajatella kakkostason ratkaisua uutena probleemana, joka on ratkaistava. Sen sijaan, että kakkostasolla iteroitaisiin ratkaisu tarkaksi ja interpoloitaisiin ykköstasolle, voimme soveltaa edellä esitettyä algoritmia tasojen kaksi ja kolme välille jne.
Algebrallinen monihila on yksinkertainen, koska residuaalien lisäksi vain matriisi
A on muodostettava eri hilatasoilla. Tämä tarvitsee tehdä iteraation kuluessa vain
kerran. Seuraavassa luvussa esitettävässä geometrisessa monihilassa geometria ja
myös ratkaisuvektori on siirrettävä tasolta toiselle.
Merkitään seuraavassa hilatasoa alaindeksillä m ja tasojen kokonaismäärää M:llä.
7.5. MONIHILA-ALGORITMI
147
Residuaalimuodossa tehtävänä on siis ratkaista ykköstason yhtälö
A1 δ1 = ρ1
(7.56)
Tämä vastaa yhtälöä (7.1). Harvemmilla tasoilla ratkaistaan yhtälöä Am δm = ρm ,
m = 2...M. Tehtävänä on muodostaa matriisit Am . Algebrallisessa monihilassa käytetään ns. Galerkinin approksimaatiota (Galerkin Coarse Grid Approximation, GCA). Kohdistetaan ensin ratkaistavaan yhtälöön rajoitusoperaattori (kerrotaan matriisilla R)
RAm δm = Rρm
(7.57)
ja lausutaan korjausvektori harvemman tason korjausvektorin avulla. Tässä käytetään interpolointioperaattoria P
RAm P δm+1 = Rρm
(7.58)
Merkitsemällä Am+1 = RAm P ja ρm+1 = Rρm , saadaan harvemman tason probleema muodostetuksi
Am+1 δm+1 = ρm+1
(7.59)
Monihila-algoritmi alustetaan muodostamalla matriisit Am . Algoritmissa suoritetaan kullakin hilatasolla tasoituksia ja lasketaan lopuksi residuaali ρm , joka siirretään seuraavalle tasolle. Kontrollitilavuusmenetelmässä residuaali saadaan yhdistämällä rinnakkaisten koppien residuaalit. Operaattori R on siten hyvin yksinkertainen. Interpolointi voidaan sen sijaan tehdä usealla tavalla.
Matriisin Am+1 GCA muodostetaan käytännössä seuraavasti: Lasketaan yhteen
harvemman tason kopin sisältämien tiheämmän tason koppien yhtälöt Am δm = ρm .
Yhtälöissä esiintyvät tiheämmän hilan suureet lausutaan harvemman hilan suureiden avulla interpoloimalla ne. Yksinkertaisin interpolointioperaattori saadaan siirtämällä harvan tason ratkaisu muuntumattomina niihin muuttujiin, jotka sisältyvät harvan tason laskentatilavuuteen, esimerkiksi kaksidimensioisessa tilanteessa
korjaus δm+1 siirretään sinällään niitä neljää laskentatilavuutta vastaaviin muuttujiin, jotka ovat harvemman tason kopin sisällä. Tämä yksinkertainen prolongaatiooperaattori on itse asiassa transpoosi rajoitusoperaattorista P = RT ja matriisin
Am+1 kertoimet saadaan yksinkertaisesti summaamalla yhteen ne tiheämmän tason kertoimet, jotka ovat tason m + 1 koppien sisällä. Tämä vastaa laskentakaavaa Am+1 = RAm RT . Tässä siis käytetään geometrista tietoa implisiittisesti, kuten
7.5. MONIHILA-ALGORITMI
148
myös tarkemmissa interpolaatiokaavoissa, vaikka periaatteessa operoidaankin pelkällä ratkaistavalla algebrallisella yhtälöllä.
Edellä kuvattu yksinkertainen interpolointi säilyttää alkuperäisen yhtälöryhmän
muodon. Mikäli käytetään monimutkaisempaa interpolointia, P 6= RT ja harvem-
man tason yhtälössä myös ’väli-ilmansuunnille’ tulee nollasta poikkeavat termit.
Kaksidimensioisessa tilanteessa harvojen tasojen yhtälöihin tulee yhdeksän nollasta poikkeavaa nauhaa, kun niitä ykköstasolla on viisi ja kolmidimensioisessa tapauksessa peräti 27 nauhaa, kun niitä ykköstasolla on vain seitsemän. Tämä lisää
laskenta-ajan tarvetta huomattavasti ja pienentää tarkemman interpolaation tehokkuutta. (Muistitilan tarve ei lisäänny yhtä dramaattisesti. Miksi?). Kolmidimensioisessa tapauksessa tarkempi trilineaarinen interpolaatiokaava on (Tuomas Pensala,
muistio CFD/TERMO-27-98)
δi,j,k =
27
9
δI,J,K + δI+1,J,K +
64
64
9
3
9
+ δI,J+1,K + δI,J,K+1 + δI+1,J+1,K +
64
64
64
3
3
+ δI+1,J,K+1 + ¸δI,J+1,K+1 +
64
64
1
+ δI+1,J+1,K+1
64
(7.60)
missä isot alaindeksit viittaavat harvemman tason muuttujiin. Kaikkiaan suoritetaan
kahdeksan yhtälön (7.60) mukaista interpolointia, muita laskentakoppeja vastaavat
kaavat saadaan manipuloimalla yhtälön alaindeksejä symmetrian perusteella. Käyttäen yhtälöä (7.60) interpoloinnissa ja normaalia yksinkertaista rajoitusoperaattoria,
saadaan matriisin Am+1 kertoimet. Kertoimien lausekkeet ovat kymmeniä ohjelmarivejä pitkät, minkä vuoksi on houkuttelevaa yrittää käyttää myös yksinkertaista
interpolointioperaattoria (eli jättää interpolointi kokonaan tekemättä). Esimerkiksi
FLUENT-ohjelmassa sovelletaan algebrallista monihilaa tällä tavoin.
Tämän jälkeen voidaan esittää yleinen algebrallinen monihila-algorimi: GCA
muodostaa harvemman tason kerroinmatriisin tiheämmän tason matriisin perusteella, GS suorittaa yhtälölle tietyn määrän Gauss-Seidel- tai LGS-iteraatioita eli tasoittaa sitä.
MG-algoritmi
hilatasojen maksimimäärä: M
7.5. MONIHILA-ALGORITMI
149
V-syklien maksimimäärä: N
Yläraja residuaalin normille: tol
do m = 2 to M
GCA(Am−1 → Am )
enddo
do n = 1 to N
δ1 = 0
GS(A1 δ1 = ρ1 )
do m = 2 to M
R : ρm−1 → ρm
δm = 0
GS(Am δm = ρm )
enddo
do m = M − 1 to 1
P : δm+1 → cm
δm = δm + cm
GS(Am δm = ρm )
enddo
if kr1 k ≤ tol exit
enddo
Ylemmässä m:n yli juoksevassa silmukassa suoritettavaa tasoitusta (GS) kutsutaan esitasoitukseksi ja alemmassa suoritettavaa jälkitasoitukseksi (pre- ja postsmoothing). Karkeasti voidaan sanoa, että esitasoitus poistaa lyhyen aallonpituuden virhekomponentteja ja jälkitasoitus parantaa alkuarvausta ylemmän tason tuntemattomalle. On tärkeää huomata, että esitasoituksessa korjauksen alkuarvaus tulee nollata. Mikäli käytettäisiin edellisen kierroksen arvoja, konvergenssi huononisi.
Jälkitasoitusta ei yleensä kannata käyttää, koska laskentakierrosten lukumäärän pieneneminen kompensoituu laskenta-ajan kasvulla. Jälkitasoituksessa kannattaa huomata, että residuaalia ei lasketa uudestaan, vaan käytetään alaspäin tullessa rajoitet-
7.6. LASKENTAESIMERKKEJÄ
150
tua residuaalia. Interpoloinnissa korjaus alemmalta tasolta lisätään ylemmällä tasolla esitasoituksen jäljiltä jo olemassa olevaan korjaukseen. Ylivoimaisesti suurin osa
laskenta-ajasta kuluu tasoittamiseen. Tämän vuoksi yleensä kannattaa tehdä tiheimmällä tasolla tasoituksia mahdollisimman vähän. Tässä algoritmissa sovelletaan ns.
V-sykliä eli tullaan hilataso kerrallaan alaspäin ja sen jälkeen vastaavasti ylöspäin.
Monihila-algoritmia voidaan soveltaa myös muunlaisille sykleille (esim. W). Menetelmä voidaan konstruoida hyvin monella tavalla. Monihilaan liittyvä teoria on
monimutkaista ja siitä on kirjoitettu paljon kirjoja (esim. P. Wesseling, An Introduction to Multigrid Methods, Trottenberg, Oosterlee, Schüller, Multigrid).
7.6 Laskentaesimerkkejä
Tarkastellaan seuraavaksi monihila-algoritmin toimivuutta kaksidimensioisen diffuusioyhtälön ratkaisussa. Tasoittajana on käytetty LGS-menetelmää, joka on osoittautunut huomattavasti perus Gauss-Seidel -menetelmää paremmaksi. LGS-kierroksia tehtiin tiheimmällä tasolla yksi ja muilla viisi. Samoja kierrosmääriä käytettiin sekä esi- että jälkitasoituksessa, mikäli se oli käytössä. Esimerkissä käytetään
Dirichlet-reunaehtoja ja ∆x ja ∆y ovat vakioita. Menetelmän konvergenssi nähdään
kuvasta 7.4 sekä jälkitasoituksella että ilman sitä. Kuten nähdään, iteraatiokierrosten määrä ei juuri muutu, vaikka probleeman kokoa kasvatetaan. Jälkitasoitus pudottaa hieman tarvittavien iteraatiokierrosten määrää, mutta kuluttaa myös enemmän laskenta-aikaa.
Vastaava tulos siirrettäessä virhe suoraan tiheämmän tason koppeihin ilman interpolointia, on kuvassa 7.5. Nyt huomataan iteraatiokierrosten määrän hieman kasvavan, kun probleeman kokoa kasvatetaan. Konvergenssi hidastuu noin viiden kierroksen jälkeen, kun residuaali on pudonnut pari dekadia. Jälkitasoituksella tilanne
korjaantuu jossain määrin, mutta taas laskenta-ajan kustannuksella. Menetelmä vaatii vähemmän laskenta-aikaa kuin trilineaarinen interpolaatio, mutta se ei kompensoi iteraatiokierrosten määrän kasvua. Konvergenssikäyriä kannattaa verrata kuvan
7.3 vastaaviin käyriin ilman monihila-algoritmia. Tiheimmällä hilalla yksitasoisella
menetelmällä tarvittiin yli 1100 iteraatiokierrosta (kuvan skaala loppuu kesken).
Kolmidimensioisessa tapauksessa tilanne säilyy kvalitatiivisesti ennallaan, mutta nyt trilineaarisella interpolaatiolla laskenta-aika / iteraatiokierros on paljon pi-
7.6. LASKENTAESIMERKKEJÄ
151
Kuva 7.4: Diffuusioyhtälön konvergenssi eri hilatiheyksillä käytettäessä trilineaarista interpolointia. Vasemmalla jälkitasoituksella, oikealla ilman jälkitasoitusta.
Kuva 7.5: Diffuusioyhtälön konvergenssi eri hilatiheyksillä ilman virheen interpolointia.
Vasemmalla jälkitasoituksella, oikealla ilman jälkitasoitusta.
dempi. Tästä aiheutuu se, että menetelmä on vielä 643 -hilalla hitaampi kuin sama
monihilamenetelmä ilman interpolaatiota. Vasta erittäin tiheillä hiloilla yksinkertaisemman menetelmän iteraatiokierrosten kasvu tekee siitä hitaamman. Johtopäätösten tekoa vaikeuttaa tässä vielä se seikka, että käytetty esimerkki on mahdollisimman yksinkertainen. Painekorjausyhtälöä iteroitaessa kerroinmatriisin alkiot voivat
olla hyvin eri kokoisia, mikä heijastelee lähinnä hilatiheyden muutoksia. Algebral-
7.6. LASKENTAESIMERKKEJÄ
152
lisessa monihilassa käytetty interpolointi ei ota huomioon hilatiheyden muutoksia,
koska mitään geometrista tietoa ei ole käytettävissä.
Monihila-algoritmia on verrattu vastaavaa esimerkkiä käyttäen perusmenetelmiin (Ferziger-Peric). Monihila-algoritmin tasoittajina on tällöin käytetty sekä GaussSeidelia että Stonen SIP-menetelmää. Tulokset on esitetty kuvassa 7.6. Konvergenssi on esitetty sekä residuaalin että tarkan ratkaisun ja lasketun tuloksen erojen avulla. Kuten nähdään, konjugaattigradienttimenetelmä ja SIP ovat selvästi tehokkaampia kuin perinteiset iterointimenetelmät, mutta eivät pärjää vertailussa monihila-
1
1
,1
,1
,01
,01
Virhe
Virhe
algoritmin kanssa.
ICCG
SIP
M G − S I P ,001
M G − G S
ADI
G S
,001
,0001
, 0 00 0 1
0
ICCG
SIP
MG−SIP
M G − G S
ADI
G S
,0001
50
100
150
Iteraatiot
,00001
200
0
50
100
150
Iteraatiot
200
Kuva 7.6: Diffuusioyhtälön konvergenssi hilatiheydellä 64 × 64 käyttäen eri menetelmiä.
Vasemmalla residuaalin konvergenssi, oikealla ero tarkkaan ratkaisuun.
Eräät menetelmät ovat herkkiä niiden sisältämille parametreille. Tarkastellaan
ylirelaksaatiomenetelmän (SOR) parametria ω. Kuvan 7.7 iteraatiohistorioista nähdään useita seikkoja. Ensinnäkin iteraatiokierrosten määrä luonnollisesti kasvaa,
kun hilatiheys kasvaa. Toiseksi nähdään parametrin ω vaikutus. Jos parametrin arvo on alle optimin, konvergenssi on tasainen. Tällöin menetelmän kerroinmatriisin ominaisarvot ovat reaaliset. Kun ω:n arvoa kasvatetaan, ominaisarvot muuttuvat
kompleksiluvuiksi ja konvergenssihistoriasta tulee oskilloiva. Konvergenssia on kuvassa monitoroitu eri tavoin, mm. arvioimalla yhtälöstä (7.41) käyttäen siinä kahden
ensimmäisen iteraatiokierroksen arvoja.
7.6. LASKENTAESIMERKKEJÄ
10
153
Virhe, tarkka
Virhe, arvio
Erotus
Residuaali
1
Virhe, tarkka
Virhe, arvio
Erotus
Residuaali
10
,1
1
Virhe
Virhe
,01
,001
,1
,01
,0001
,00001
,001
,000001
,0001
0
50
100
Iteraatiot
150
0
Virhe, tarkka
Virhe, arvio
Erotus
Residuaali
10
100
Iteraatiot
150
Virhe, tarkka
Virhe, arvio
Erotus
Residuaali
10
1
1
,1
Virhe
Virhe
50
,1
,01
,01
,001
,001
,0001
,0001
0
200
400
600 800
Iteraatiot
1000
0
50
100 150 200 250 300
Iteraatiot
Kuva 7.7: Diffuusioyhtälön konvergenssi SOR-menetelmällä. Yläkuvissa hilatiheys on 20×
20, alakuvissa 80 × 80. Vasemmalla parametrin ω arvo on alle optimin, oikealla yli optimin.
Toisena esimerkkinä tarkastellaan SIP-menetelmää. Edellä mainittiin menetelmään sisältyvän interpolaatiokaavan, jolla puuttuvia väli-ilmansuunta-arvoja estimoidaan uudella iteraatiokierroksella. Tätä yhtälöä on alirelaksoitava tekijällä α,
joka vaikuttaa huomattavasti konvergenssiin. Edellä kuvatussa diffuusioyhtälön tapauksessa parametrin vaikutus nähdään kuvasta 7.8. Erityisesti tiheämmällä hilalla
7.7. LOPPUPÄÄTELMIÄ
154
parametrin pieni muutos vaikuttaa oleellisesti konvergenssiin ja menetelmän divergointi on myös erittäin herkkä parametrin kasvulle.
1500
64 x 64
32 x 32
KT
KT
Iter.
1000
500
0
0
,2
,4
α
,6
,8
1,0
Kuva 7.8: Parametrin α vaikutus SIP-menetelmän konvergenssiin.
7.7 Loppupäätelmiä
Suurilla yhtälöryhmillä algebrallinen monihila-algoritmi on ylivoimaisen tehokas
ratkaisutapa. Menetelmä on yleistynyt myös kaupallisissa virtausratkaisijoissa. Painekorjausyhtälön ratkaisussa menetelmä on tämänhetkisen käsityksen mukaan suositeltava. Painekorjausyhtälön ratkaisun tarkkuusvaatimuksesta ei ole täysin selvää käsitystä, mutta vaikka yhtälön ratkaisemisessa riittäisi melko vähäinen tarkkuus, monihila-algoritmi vaikuttaa robustilta valinnalta. Monihilaa sovellettaessa
saadaan jo muutamalla iteraatiokierroksella ratkaisulle likimain oikea muoto. Isoilla probleemoilla tavanomaiset iteratiiviset menetelmät saattavat tuottaa oskilloivia
ratkaisuja vielä usean sadan iteraatiokierroksen jälkeen. Historia saattaa olla sellainen, että vaikka välillä jostain sopivasta kohdasta otettu tulos näyttäisi olevan kunnossa, niin sadan lisäkierroksen jälkeen se onkin muuttunut virheelliseksi ja kunnon
ratkaisua on odotettava vielä satoja kierroksia. Esimerkkinä konvergenssihistoriasta
on edellä mainittu diffuusio (lämmönjohtavuus) -yhtälön ratkaisu. Reunaehdot ovat
sellaiset, että kolmella seinällä lämpötila on 100 astetta ja yhdellä T = 0. Laskentahila on 64 × 64 ja ∆x = ∆y = 1. Kuvassa 7.9 on lämpötilajakaumat eri iteraa-
7.7. LOPPUPÄÄTELMIÄ
155
tiokierroksilta kohdassa y = 51. Tässä esimerkissä jakauma konvergoi monotonisesti tarkkaa ratkaisua kohden, mutta ero vielä satojen kierrosten jälkeen tarkkaan
ratkaisuun on huomattava. Monihila-algoritmilla käyttäen samaa LGS-menetelmää
tasoittajana ratkaisu olisi viivanpaksuuden tarkkuudella tarkka kymmenellä tai viidellätoista iteraatiokierroksella riippuen siitä käytetäänkö trilineaarista interpolointia vai yksinkertaista siirtomenettelyä.
Kuva 7.9: Lämpötilajakauma kohdassa y = 51 eri iteraatiokierroksilla.
Edellä jo todettiin, ettei liikemäärä- tai skalaariyhtälöiden ratkaisutarkkuuden
tarvitse olla painekorjausyhtälön luokkaa. Lisäksi yhtälöryhmien ratkaisu on ongelmallista vasta isoilla laskentahiloilla. Tällä kurssilla on pienissä laskentaesimerkeissä sovellettu LGS-menetelmää painekorjausyhtälölle. Muille yhtälöille GaussSeidelkin konvergoi riittävän nopeasti.
7.7. LOPPUPÄÄTELMIÄ
156
• Painekorjausmenetelmässä syntyy symmetrinen Poisson-tyyppinen yhtälö painekorjauksille ja epäsymmetriset konvektio-diffuusio -yhtälön
diskretoinnit muille ratkaistaville suureille
• Käytettäessä alirelaksaatiota konvektio-diffuusio -yhtälöt ovat lävistäjävaltaisia ja niiden ratkaisu konvergoi nopeasti
• Epälineaaristen yhtälöiden ratkaisu perustuu aina sopivasti tehtyihin linearisointeihin. Painekorjausmenetelmässä ei sovelleta sinänsä mitään
normaalista epälineaaristen yhtälöiden ratkaisusta poikkeavaa, mutta
yhtälöiden peräkkäinen ratkaiseminen ja erillinen Poisson-yhtälö ovat
tietenkin ratkaisun kannalta tärkeitä ’kikkoja’.
• Yhtälöryhmien ratkaisumenetelmät voidaan jakaa suoriin ja iteratiivisiin.
• Gaussin eliminaatio muunnoksineen on suora ratkaisumenetelmä. Täysille matriiseille se on myös nopein menetelmä.
• Iteratiiviset menetelmät voidaan lausua muodossa Mδ n = ρn , missä ρn
on yhtälöryhmään liittyvä residuaali ja matriisi M approksimoi mahdollisimman tarkasti alkuperäisen yhtälöryhmän kerroinmatriisia.
• Konvergenssinopeutta voidaan arvioida spektraalisäteen avulla. Spektraalisäde on matriisin M suurin ominaisarvo.
• Oskilloivaan iteraatiohistoriaan liittyy kompleksinen spektraalisäde.
• Thomasin algoritmin laskenta-aika on verrannollinen muuttujien lukumäärään. Tämän vuoksi algoritmia kannattaa soveltaa aina kun se on
mahdollista ja monet iteratiiviset menetelmät hyödyntävätkin sitä.
• Klassisia yhtälöryhmien ratkaisutapoja ovat Gauss-Seidel, Jacobi, LGS,
SOR ja approksimatiivinen faktorointi. Kaksidimensioisissa pienissä
tehtävissä esimerkiksi LGS:n tai faktorointimenetelmien teho on riittävä.
• Monimutkaisempia menetelmiä ovat konjugaattigradienttimenetelmät ja
Stonen vahvasti implisiittinen proseduuri (SIP). Näiden käyttö painekorjausmenetelmässä ei ole välttämätöntä.
• Eräät menetelmät sisältävät parametreja, jotka ovat tapauskohtaisia.
7.7. LOPPUPÄÄTELMIÄ
157
• Monihila-algoritmin osat ovat tasoitus, rajoitus ja takaisin interpolointi.
• Monihila-algoritmia voidaan soveltaa monin eri tavoin. Yksinkertaisinta
on käyttää V-sykliä.
• Monihila-algoritmilla on mahdollista pitää laskenta-aika verrannollisena muuttujien lukumäärään eli iteraatiokierrosten määrä ei kasva, vaikka
probleeman koko kasvaakin.
• Yhtälöryhmille sovelletaan algebrallista monihilaa. Geometrisessa monihilassa muodostetaan itse ratkaisu harvemmilla hilatasoilla. Algebrallinen monihila sopii lineaarisille tehtäville.
• Algebrallisessa monihilassa kerroinmatriisi siirretään seuraavalle (harvemmalle) tasolle käyttäen rajoitus- ja interpolointioperaattoreita R ja
P
Am+1 = RAm P
• Jos käytetään interpoloinnin sijasta yksinkertaista korjauksen injektointia seuraavalle hilatasolle niin P = RT . Tämä yksinkertaistaa matriisin
Am+1 konstruointia, mutta huonontaa konvergenssia.
• Monihila-algoritmille sopivia tasoittajia ovat mm. LGS ja SIP.
Monihila-algoritmia suositellaan käytettäväksi isoissa tehtävissä.
Päivitetty 26.2.2014
158
8 Virtausratkaisun tehostaminen
8.1 Rinnakkaistaminen
8.1.1 Rinnakkaistamistavat rakenteellisella ja rakenteettomalla
hilalla
Rakenteellista hilaa käytettäessä monimutkainen geometria on jaettava osa-alueisiin,
joille kullekin generoidaan oma laskentaverkkonsa. Rakenteettomalla hilalla koko
alue voidaan käsitellä yhtenäisenä alueena. Rakenteettoman hilan etuna on myös hilangeneroinnin automatisointi ja koppijaon muuttaminen ratkaisun mukana eli ns.
adaptiivisuus. Toisaalta, jos ratkaisua halutaan tehostaa rinnakkaistamisella, tarjoaa monilohkoinen rakenne siihen valmiin perustan. Rakenteeton hila on puolestaan
jaettava osa-alueisiin rinnakkaistusta varten. Näiden alueiden valinta ei ole yksikäsitteistä, joten tarkoitusta varten on kehitetty algoritmeja. Koska rakenteelliseen
hilaan liittyvät laskennan tehostamiskeinot, kuten rinnakkaislaskenta tai monihila,
ovat suhteellisen yksinkertaisia, käsitellään jatkossakin etupäässä vain rakenteellista hilaa.
Ferziger-Pericissä rinnakkaistaminen perustuu paljolti yhden yhtenäisen laskentaalueen jakamiseen osa-alueisiin. Kyseessä on ns. hienon tason rinnakkaistaminen
(fine-grain parallelization). Rinnakkaistus voidaan sen jälkeen tehdä joko niin, että
ratkaisu etenee rinnan siten, että yksi osa-alue sijaitsee yhdessä tietokoneen laskentanoodissa, joka vaihtaa tietoa (reunaehdot) naapuriensa kanssa. Toinen tapa on rinnakkaistaa jokin aikaa vievä osa ratkaisusta. Tyypillisesti tämä on painekorjausyhtälön ratkaisu. Kokonaan erilainen strategia on ajatella rinnakkaistamista jo alunperin monilohkoisen topologian pohjalta. Tällöin ei yritetäkään ratkaista koko aluetta kerralla, vaan yhdelläkin laskentaytimellä kukin iteraatiokierros tehdään täysin
riippumatta naapurilohkojen ratkaisusta. Vasta iteraatiokierroksen suorittamisen jälkeen päivitetään reuna-arvot naapurilohkoista. Tällöin puhutaan karkean tason rin-
8.1. RINNAKKAISTAMINEN
159
TWO LAYERS OF GHOST CELLS
Kuva 8.1: Laskentalohkoa reunustaa kaksi riviä ’haamukoppeja’, joihin sijoitetaan naapurilohkojen reunoilla olevat arvot.
nakkaistamisesta (coarse-grain parallelization). Ainoastaan tällä tavoin päästään ns.
täydelliseen skaalautuvuuteen (scaling), jolloin laskentateho kasvaa suoraan verrannollisena laskentaprosessorien lukumäärään. Seuraavassa tarkastellaan lähinnä
tätä tapaa. Ferziger-Pericissä tarkastellaan puolestaan ensiksi mainittuja tapoja.
8.1.2 Lohkorakenne
Kuten aikaisemmin on todettu yksinkertaisin tapa soveltaa lohkorakennetta on jättää
kunkin lohkon reunoille kaksi riviä laskentatilavuuksia, joihin liitetään naapurilohkoissa olevien reunimmaisten koppien arvot (kuva 8.1). Linkitys tehdään yleensä aina ennen iteraatiokierroksen alkua, mutta on mahdollista päivittää reuna-arvot myös
iteraatiosyklin sisällä. Esimerkiksi painekorjaukset voidaan päivittää myös painekorjausyhtälön ratkaisun jälkeen. Ja kuten aikaisemmin on mainittu, reunatilavuuksia tarvitaan kaksi riviä, jotta toisen kertaluvun tarkkuus saavutettaisiin. Keskeisdifferenssillä periaatteessa selvitään yhdellä rivillä, mutta paineesta riippuva vaimennustermi vaatii silloinkin kahden koppirivin arvot. Joissakin ohjelmissa ei lohkorajalla voida käyttää korkeamman kertaluvun ylävirtamenetelmiä, mikä osoittaa, ettei
ohjelmissa ole käytetty tässä kuvattua kahden koppirivin menettelyä.
Oikeassa lohkorakenteessa lohkojen ’liimaustapa’ toisiin lohkoihin on mielivaltainen. Joissakin vanhemmissa ohjelmissa harrastettiin myös näennäistä lohkorakennetta, jolloin rakenne näkyi lähinnä käyttäjälle, mutta ohjelman sisällä olikin
vain yksi lohko, josta rajoitettiin alueita pois. Tällainen tapa oli tietenkin muistika-
a
8.1. RINNAKKAISTAMINEN
160
a
BC PATCHES
Kuva 8.2: Lohkon reunalla voidaan soveltaa erilaisia reunaehtoja kullakin ’tilkulla’. Kuvaan
on piirretty myös haamukoppirivit.
pasiteetin tuhlausta eikä anna kunnollista joustavuutta geometrian kuvauksen suhteen. Varsinaisessa lohkorakenteessa mielivaltaisista liitospinnoista seuraa, että ku-
kin lohko voi kultakin seinältään liittyä useisiin naapurilohkoihin ja seinällä saattaa
olla sisään- tai ulosvirtausta. Seinä tulee tällöin jaetuksi erillisiin tilkkuihin, joilla
kullakin on erilaiset reunaehdot tai jotka liittyvät eri naapurilohkoihin kuten kuvassa 8.2 on esitetty.
Rinnakkaislaskentaa voidaan suorittaa joko ns. jaetun muistin tai hajautetun
muistin koneilla. Jaetun muistin koneella reunakoppien päivittäminen eri lohkoista on yksinkertaista. Hajautetun muistin koneella reunalohkojen päivitys tapahtuu
viestinvälityksellä eri laskentanoodien välillä. Kaikki reunaehdot eivät tarvitse viestinvälitystä. Esimerkkejä reunaehdoista on taulukossa 8.1.
Yksinkertaisin lohkoliimaus on sellainen, jossa hilaviivat ovat jatkuvia lohkos-
ta toiseen. Jos hilaviivat ovat epäjatkuvia, tarvitaan interpolointi lohkojen välillä.
Rakenteellisella hilalla tämä on mahdollista kuvan 8.3 tapauksessa tehdä siten, että
lohkoreunalla on säilymisominaisuus. Ratkaisukin on periaatteessa myös ’jatkuva’,
mikäli diskreetillä esityksellä tällaisesta voidaan puhua. Kuvassa 8.3 on tiheyden
tasa-arvokäyriä yksinkertaisessa virtaustapauksessa. Hilan harvetessa kanavan kes-
kellä tasoarvokäyrissä näkyy pieni ryppy, mutta kyse on enemmän interpolointirutiinin epätarkkuudesta kuin itse ratkaisun. Jos lohkoissa on eri määrä laskentatilavuuksia, tarvitaan haamukoppien lisäksi aputaulukoita, koska suureita ei voida suoraan liittää naapurilohkon haamutilavuuksiin. Aputaulukosta voidaan tehdä globaa-
8.1. RINNAKKAISTAMINEN
161
Taulukko 8.1: Boundary condition types.
Boundary condition
Exchange of data
Connectivity (continuous)
External
Inlet
Mirror
Outlet
Cyclic
Singularity
Solid
Rotating solid
Moving solid
Sliding mesh
Chimera
Connectivity (discontinuous)
yes
no
no
no
no
yes
no
no
no
no
yes
yes
yes
lin säilymisperiaatteen toteuttavalla tavalla interpolointi haamukoppiriveihin, jonka
jälkeen laskenta sujuu samalla tavoin kuin siinä tapauksessa, että hilaviivat olisivat
jatkuvia.
Syklisessä reunaehdossa lohko liittyy itseensä. Reunaehtoa käytetään erityisesti pyörivien koneiden laskennassa, jolloin riittää simuloida yhden virtauskanavan
osuus. Liukuvan hilan (sliding mesh) reunaehto liittyy myös pyöriviin koneisiin
(kuva 8.4). Reunalla voidaan liittää pyörivä roottori ja kiinteä staattori tai pumpun
pesä toisiinsa ajan suhteen tarkassa laskennassa. Pinta voidaan hoitaa samaan tapaan kuin edellä esitettiin epäjatkuvalle lohkoliimaukselle. Sekä liukuvan hilan että
epäjatkuvan lohkoliimauksen yhteydessä epätarkkuutta säilymisominaisuuteen syntyy siitä, että pinnat eivät ole jatkuvia, vaan koostuvat paloittain lineaarisista osista. Tällöin pintojen laskennalliset pinta-alat, so. laskentatilavuuksien pinta-alojen
summa ei ole täsmälleen sama tällaisen reunaehdon kahden puolen olevissa lohkoissa. Tilannetta voidaan korjata ottamalla huomioon kokonaispinta-aloissa oleva
ero. Reunaehtojen määrittelyyn palataan luvussa 9.
8.1.3 Laskennan tehostaminen rinnakkaistamalla
Virtaussimulointi on eräs maailman laskentaintensiivisimmistä tutkimusalueista. Jotta ratkaisuista saataisiin kaikki mahdollinen irti, on laskenta-algoritmin oltava tehokas sekä iteraatiokierrosten määrän suhteen että laskenta-ajassa mitattuna iteraa-
8.1. RINNAKKAISTAMINEN
162
Kuva 8.3: Lohkorajalla hilaviivat voivat olla epäjatkuvia (vasemmalla). Ratkaisu saadaan
silti lohkorajalla globaalisessa mielessä konservatiiviseksi ja tasa-arvokäyrätkin likimain
jatkuviksi.
tiokierrosta ja laskentatilavuutta kohden. Tällöin tehtävien liukulukuoperaatioiden
määrä on saatava mahdollisimman pieneksi ilman, että iteraatiokierrosten määrä
kasvaa vastaavasti. Menetelmän yksinkertaisuudella ja vaaditulla iteraatiokierrosmäärällä on jokin suhde, jonka kanssa algoritmin kehittäjän on tasapainoiltava.
Edellisen lisäksi laskentanopeuteen vaikuttaa tietokoneen nopeus ja erityisesti
se minkä verran koneen tehosta saadaan irti. Tämä riippuu nykyisin monista tekijöistä, tässä yhteydessä kiinnitetään huomiota vain prosessoritehoon. Perinteinen
tapa tehostaa laskentaa on algoritmin vektorointi, johon kiinnitettiin huomiota jo
peruskurssin ohjelmia tehtäessä. Noudattamalla tiettyjä yksinkertaisia periaatteita, joista tärkein on rekursioiden välttäminen, ohjelman DO-silmukat vektoroituvat. Rekursiolla tarkoitetaan tuloksen riippuvuutta saman silmukan sisällä aiemmin
lasketusta tuloksesta. Vektoroinnilla on voitu nopeuttaa laskentaa noin kymmenkertaiseksi Cray-tietokoneella ja jopa 40-kertaiseksi japanilaisilla supertietokoneilla.
Ohjelman näin tehokas vektorointi edellyttää kaikkien sisimpien DO-silmukoiden
8.1. RINNAKKAISTAMINEN
163
Kuva 8.4: Liukuvan hilan reunaehtoa sovelletaan pyörivissä virtauslaitteissa. Reunaehto on
ominaisuuksiltaan samantapainen kuin kuvan 8.3 reunaehto. Kehän suunnassa käytetään
syklistä reunaehtoa.
vektoroituvuutta. Parhaimmillaan vektorikoneista saatiin lähes puolet niiden teoreettisesta huipputehosta. FINFLO-ohjelmalla saatiin C94-koneen yhdestä prosessorista 0,4-0,5 Gflops, mikä oli tällä koneella lähellä käytännön maksimia eli noin
kymmenkertaista nopeutta skalaarilaskentaan verrattuna. Vektorikoneita valmistetaan edelleen Japanissa, mutta ne ovat kalliita. Vektorointi on kuitenkin tullut myös
osaksi arkipäivää, koska tavallisten pöytäkoneiden prosessorit vektoroivat lyhyehköt DO-silmukat. Vektoroidun silmukan laskenta on Intelin prosessoreilla noin kaksinkertainen vektoroimattomaan verrattuna.
Vektoriprosessorien laskentanopeus on kasvanut hitaasti ja niihin liittyvä tekniikka on kallista. Laskentanopeutta saadaan oleellisesti nykyisin kasvatettua vain
rinnakkaistamalla. Huomattavasti halvempaa on kytkeä vektoriprosessoreiden ase-
8.1. RINNAKKAISTAMINEN
164
mesta tavallisia prosessoreita yhteen. 1990-luvulla esimerkiksi Cray T3E-koneessa,
jolla jatkossa esitettävät esimerkit aikoinaan laskettiin, käytettiin RISC-prosessoreita
(Reduced Instruction Set Computer). RISC-prosessorista ei yleensä saada irti kuin
10-20% niiden nimellisestä huipputehosta. RISC-prosessoreidenkin käyttö on harvinaistunut ja tilalle ovat tulleet Intelin ja AMD:n ns. CISC-prosessorit (Complex
Instruction Set Computer). Osa uusimmista x86-suorittimista yrittää hyödyntää RISClähestymistavan etuja kääntämällä sisäisesti CISC-komentoja yksinkertaisempaan
RISC-tyyliseen muotoon. Nykyisin käskykannan luonne ei enää ole niin vahvasti
sidoksissa suorittimen sisäiseen toimintaan kuin aiemmin, mikä on tehnyt tiukasta jaottelusta RISC- ja CISC-arkkitehtuureihin melko tarpeettoman. Prosessorit jakaantuvat ’ytimiin’ ja rinnakkaistamisen yhteydessä tulisikin käyttää termejä ’prosessi’ tai ’ydin’ laskentasolmujen lukumäärää kuvatessa.
Yksi prosessoriydin on tätä kirjoitettaessa (2009) nimellisteholtaan yli 5 Gflops.
Prosessikohtainen laskentateho kasvoi voimakkaasti 2000-luvun alkupuolelle asti,
mutta nykyisin tehoa voidaan kasvattaa lähinnä rinnakkaistamalla. Jotta saataisiin
riittävä kokonaisteho, on valittava sellainen rinnakkaistamisstrategia, että teho kasvaa lineaarisesti prosessien lukumäärän funktiona. Tällöin puhutaan laskentatehtävän skaalautuvuudesta. Hyvä skaalautuvuus on mahdollinen hyödyntämällä koodin
lohkorakennetta.
8.1.4 Rinnakkaistaminen käyttäen viestinvälitystä
Varsinaisesta rinnakkaistamisesta puhuttaessa tarkoitetaan yleensä hajautetun muistin koneella tehtyä laskentaa. Rinnakkaistaminen voidaan tehdä myös jaetun muistin koneella samanlaiseen viestinvälitykseen perustuen kuin hajautetulla muistillakin. Jaetulla muistilla voidaan viitata myös samoihin globaaleihin muistiosoitteisiin.
Tällöin yksinkertaisin tapa rinnakkaistaa perustuu vektoroituvien DO-silmukoiden
pätkimiseen osiin, joita on yhtä monta kuin käytössä olevia laskentaytimiä. Tämä
voidaan hoitaa kääntäjän optiolla. Tapa on yksinkertainen, mutta käytännössä laskennan teho ei enää juuri nouse, kun prosessien lukumäärä kasvaa yli kymmenen.
Eräänä mahdollisena syynä jaetun muistin tehottomuuteen on nopeankin väylän hitaus muistin ja eri prosessorien välillä.
Parempi skaalautuvuus voidaan saada aikaan vain viestinvälityksellä. Kukin ydin
8.1. RINNAKKAISTAMINEN
165
PE 0
read and send
input, boudary
conditions and
PE 1
mesh
receive
input, boudary
conditions and
from PE 0
mesh
receive
input, boudary
conditions and
from PE 0
initialization
initialization
initialization
block
connectivity
block
connectivity
block
connectivity
advance
computation
one time step
advance
computation
one time step
block
connectivity
receive and
write
global residuals
Yes
PE 2
continue
iteration?
advance
computation
one time step
block
connectivity
send
global residuals
to PE 0
Yes
continue
iteration?
mesh
block
connectivity
send
global residuals
to PE 0
Yes
continue
iteration?
No
No
No
write
solution
write
solution
write
solution
Kuva 8.5: Rinnakkaislaskennan periaate. Ratkaisu etenee yhden iteraatiokierroksen kussakin laskentaprosessissa riippumatta muista prosesseista, jonka jälkeen päivitetään reunaehdot ja lasketaan globaalit residuaalit konvergenssin seuraamista varten (PE = prosessing
element, laskentaelementti tai noodi.
hoitaa laskentaa itsenäisesti irrallaan toisista laskentaelementeistä, kunnes on aika vaihtaa reunaehtoihin ja konvergenssiin liittyvät tiedot viestinvälityksen avulla.
Yleisin viestinvälityskirjasto lienee tällä hetkellä MPI (Message Passing Interface).
Muita ovat esimerkiksi PVM ja TCGMSG. Tyypillisiä viestinvälityskäskyjä ovat
käskyparit SEND ja RECV sekä BCAST ja GATHER. Näistä edellinen käskypari suorittaa viestinvaihdon kahden laskentanoodin välillä, BCAST lähettää kaikille muille viestin ja GATHER vastaanottaa viestin kaikilta muilta laskentaelementeiltä. Pyrkimyksenä oli myös saada muistiosoitus yhdistettyä suoraan FORTRANkieleen, mutta tämä tulee tuskin koskaan niin tehokkaaksi kuin ohjelmaan itse suunniteltu kommunikointi. Viestinvälityskirjastoa voidaan käyttää paitsi rinnakkaistietokoneella, myös erillisten verkkoon kytkettyjen koneiden välillä. Rinnakkaislaskennan periaatetta on hahmoteltu kuvaan 8.5. Kukin lohko käsitellään omassa laskentaprosessissaan.
Ferziger-Pericissä pohditaan rinnakkaistamista toisaalta yksittäisten algoritmien,
kuten SIP, suhteen ja toisaalta jakamalla laskenta-alue yhtä suuriin osa-alueisiin
8.1. RINNAKKAISTAMINEN
Block 1
Block 2
166
1
2
3
4
5
6
7
8
=>
Kuva 8.6: Alkuperäiset hilangeneroinnin jäljiltä olevat lohkot jaetaan tasakokoisiin rinnakkaistusta varten.
(domain decomposition). Jälkimmäisessä tavassakin on oleellista pyrkiä saamaan
painekorjausalgoritmi toimimaan koko alueessa suorittamalla mahdollisia yksinkertaistuksia. Tällä on periaatteellinen ero edellä esitettyyn lohkoittain etenevään ratkaisuun. Saavutettu teho ei käy F-P:stä täysin selville, mutta todennäköisesti ongelma ei esitetyillä tavoin skaalaudu täydellisesti. Täydellinen skaalautuvuus saadaan
siis aikaan samankokoisilla lohkoilla käsittelemällä lohkoja täysin erillään toisistaan koko iteraatiokierroksen ajan. Sen sijaan, että painekorjausyhtälöä pyrittäisiin
ratkaisemaan koko laskenta-alueessa, ratkaistaan se jokaisessa osa-alueessa erikseen.
8.1.5 Hilan jako osa-alueisiin
Kun geometria kuvataan useammalla lohkolla, jonkinlainen perusta rinnakkaistamiselle on jo valmis. Yleensä lohkot eivät ole tällöin samankokoisia. Jako kelpaakin
sellaisenaan vain muutamalle laskentaytimelle, mikä saattaa jo ratkaista sen saadaanko laskentatulos yhdessä yössä. Erikokoisilla lohkoilla kannattaa usein sijoittaa
useampia pikkulohkoja yhden ytimen laskettaviksi. Yksi ydin hoitaa tällöin useampia pieniä lohkoja samassa ajassa, kuin muut selviävät isommista lohkoista.
Massiivisesta rinnakkaislaskennasta saadaan hyötyä vain, jos koko laskenta-alue
voidaan jakaa suurimmalta osaltaan samankokoisiin osa-alueisiin. Yleensä varsinainen laskentahila laaditaan muutamassa lähinnä geometrian säätelemässä lohkossa.
Nämä lohkot tulee jakaa rinnakkaistusta varten kuten kuvassa 8.6. Sopivia lohkokokoja rinnakkaistusta varten ovat esimerkiksi 243 , 323 tai 403 . Tällöin voidaan lohkon
sisällä soveltaa monihila-algoritmia riittävän monelta tasolta ja prosessorille saadaan sopivan kokoinen kuorma. Jos yhden lohkon koko on 163 tai alle, laskentaytimellä alkaa olla liian vähän työtä verrattuna kommunikointiin naapuriensa kans-
8.1. RINNAKKAISTAMINEN
a)
167
b)
Kuva 8.7: Alkuperäisen lohkon jako kun a) alkuperäinen lohko on pienempi kuin 2× toivottu lohko, b) kun alkuperäinen lohko on suurempi kuin 2× toivottu lohko
sa. Tehokkaassa rinnakkaistuksessa on tarpeen saada laskenta-aika mahdollisimman
suureksi kommunikointiaikaan nähden. Kun vaatimus lopullisesta lohkokoosta tiedetään, on se luonnollisesti otettava huomioon jo hilangenerointivaiheessa luotaessa
alkuperäisiä suurempia lohkoja. Aina ei ole mahdollista saavuttaa tilannetta, jossa
kaikki lohkot olisivat yhtä suuria. Tällöin jako kannattaa tehdä kuten kuvassa 8.7.
Jos jaettava lohko on pienempi kuin 2 × toivottu lohko, se jaetaan yksinkertaisesti
keskeltä. Jos se on taas suurempi kuin 2 × toivottu lohko, kannattaa jättää ’jako-
jäännös’ keskelle. Numeriikan kannalta ja myös turbulenssin kuvauksen kannalta
on edullista jättää laskenta-alueen reunoille täysikokoiset lohkot. Turbulenssin kuvauksen kannalta edullisuus perustuu siihen, että seinät sijaitsevat yleensä alkuperäisen laskenta-alueen reunoilla. Seinien lähellä turbulenssimallit sisältävät sellaisia
korjaustermejä, joiden ulottaminen lohkorajan yli saattaa olla hankalaa. Kummassakin kuvan 8.7 tapauksessa rinnakkaistukseen tulee toivottua pienempiä lohkoja.
Siitä ei ole varsinaista haittaa, jos suurin osa lohkoista on samaa kokoa. Laskentaaika/iteraatiokierros määräytyy tällöin niiden perusteella. Prosessit, joissa on pienempi lohko, yksinkertaisesti odottavat kunnes kaikki muut ovat valmiita. Tähän
hupeneva laskentakapasiteetti ei ole merkittävä.
Rakenteettomalla hilalla rinnakkaistaminen pohjautuu samaan periaatteeseen.
Toteustupa on monimutkaisempi, koska mitään lohkojakoa ei ole. Alueen jako onkin automatisoitava, mutta tuloksena saadaan aina tasainen jako prosessien kesken.
Esimerkki alueen jaosta on esitetty kuvassa 8.8. Koska laskentakoppien määrä on
hyvin suuri, saadaan aina käytännössä yhtä suuret kuormat eri prosesseille. Laskentatilavuuksien lajitteluun sopivasti tarvitaan ohjelman sisällä ’älyä’ samalla tavoin
kuin itse rakenteettoman hilan generointiin tai sen adaptiivisuuteen. Rakenteellisella hilalla nämä seikat ovat yksinkertaisia, mutta painolastiksi tulee hilan generointi.
Rakenteettomalla hilalla laskenta-algoritmi ja geometrian käsittely ovat hyvin mo-
8.1. RINNAKKAISTAMINEN
168
Kuva 8.8: Rakenteettomalla hilalla rinnakkaistaminen tapahtuu jakamalla laskenta-alue likimain yhtä suuriin osa-alueisiin.
nimutkaisia, mutta tavoitteena on päästä kokonaan eroon hilangeneroinnista käsityönä.
8.1.6 Rinnakkaistamisesta saavutetun hyödyn arviointi
Rinnakkaistamista voidaan tarkastella kahdella tavalla. Virtauslaskennan kannalta
järkevä tapa on pitää yhden laskentaytimen kuorma optimaalisen suurena. Tällöin
laskentaan kuluu selvästi suurempi aika kuin kommunikointiin ja toisaalta myös
yhden laskentaelementin muisti tulee kohtuullisesti hyödynnetyksi. Jos käytetään
esimerkiksi lohkokokoa 323 = 32768 laskentatilavuutta, ollaan kohtuullisen lähellä
optimitilannetta. Tällöin laskenta-aika yhdellä tämän kokoisella tapauksella on sama kuin laskenta-aika 200 kertaa suuremmalla eli yli kuudella miljoonalla kopilla
edellyttäen, että täydellinen skaalautuvuus on saavutettu. Rinnakkaislaskenta tarjoaa siis keinon laskea isoja tehtäviä samassa ajassa kuin pieniä. Vain prosessien määrää on lisättävä. Laskentanopeus määräytyy tässä esimerkissä yhden laskentaytimen
nopeudesta hilakoolla 323 .
Toinen ajatusmalli on yrittää laskea pienehköä tehtävää niin nopeasti kuin mahdollista. Esimerkiksi jos hilalla 323 menee laskentaan yhdellä ytimellä puoli tuntia,
8.1. RINNAKKAISTAMINEN
169
aikaa voidaan lyhentää rinnakkaistamalla. Tämä johtaa kuitenkin tehon alenemiseen
ja erityisesti muistin käytön tuhlaukseen. Laskennan suorittajan kannalta on tällöin
kannattavampaa ajaa esimerkiksi 16 erilaista pientä tehtävää yhtä aikaa, kuin ajaa
niitä yksi kerrallaan 16:ta laskentaytimellä.
Ensimmäisessä tapauksessa jos kokonaisajankulutus on E ja prosessien lukumäärä N, niin ideaalinen seinäkelloaika olisi
tideal =
E
N
(8.1)
Todellisuudessa kommunikointiin kuluu kokonaisaika c′ . Tällöin
treal =
c′
E
+
N
N
(8.2)
Laskenta nopeutuu siis todellisuudessa tekijällä
E
N
1+c
(8.3)
E
c
+
N
N
′
missä c = c /E on kokonaiskommunikaatioaika / kokonaislaskenta-aika. Tämä on
η=
′
=
likimain sama kuin kommunikaatioaika / laskenta-aika yhdessä prosessissa. Jos oletetaan, että jokaisella laskentanoodilla on oma kaistanleveytensä viestinvälityksessä, kommunikaatioaika on sama jokaiselle laskentaprosessille ja c siten vakio. Tällöin laskennan nopeutuminen tulee olemaan verrannollinen prosessien lukumäärään
eli täydellinen skaalautuvuus saavutetaan pitämällä yksittäisen lohkon kokoa vakiona.
Jos lähdetään kiinteästä tehtäväkoosta ja halutaan nopeuttaa sitä jakamalla se
aina vain pienempiin osiin, laskenta-aika yhdessä prosessissa on likimain
tcalc ∝ n3 /N
(8.4)
missä n3 on probleeman koko ja n yhdellä ytimellä ajettaessa lohkon sivun pituus.
Usealla laskentaytimellä n3 /N on myös lohkon koko yksittäisessä laskentanoodissa. Kommunikaatioaika on verrannollinen lohkon pinnan kokoon. Tällöin kommunikaatioajalle saadaan
tcom ∝ [(n3 /N)1/3 ]2 = n2 /N 2/3
(8.5)
Suhteeksi c saadaan tällöin
c = tcom /tcalc ∝
n2 /N 2/3
N 1/3
=
n3 /N
n
(8.6)
8.1. RINNAKKAISTAMINEN
170
Taulukko 8.2: Laskentateho pitämällä lohkokoko vakiona.
NPS N. of cells η T3E
η T3D η SGI
1
2
4
8
16
32
64
1.000
0.992
0.978
0.978
0.985
0.963
0.913
32 768
65 536
131 072
262 144
524 288
1 048 576
2 097 152
1.000
0.998
0.998
0.998
0.998
0.998
0.998
1.000
0.950
0.850
0.904
0.859
N/A
N/A
Taulukko 8.3: Laskentateho pitämällä tehtävän koko vakiona.
NPS N. of cells/block η T3E
1
2
4
8
16
32
64
131 072
65 536
32 768
16 384
8 192
4 096
2 048
1.000
0.992
0.981
0.948
0.927
0.894
0.876
Tämän avulla saadaan käyttäen verrannollisuuskerrointa β
η=
N
N
=
1+c
1 + βN 1/3
(8.7)
Vakioprobleemakoolla teho ei siis ole suoraan verrannollinen prosessien lukumäärään. On lisäksi huomattava, ettei kummassakaan tapauksessa teholauseke noudata
Amdahlin lakia
N
N
=
1+c
1 + βN
joka usein mainitaan rinnakkaislaskennan oppikirjoissa tässä yhteydessä.
η=
(8.8)
Rinnakkaistamisen tehoa on ensimmäisessä tapauksessa testattu eri tietokoneilla taulukossa 8.2. T3E-koneella saavutettiin täydellinen skaalautuvuus, joten yksi
iteraatiokierros yli kahdella miljoonalla laskentatilavuudella vaatii saman laskentaajan kuin iteraatiokierros 32 768:lla kopilla. Taulukossa on myös tuloksia työasemaklusterille, jotka on liitetty toisiinsa standardi Ethernet-linjalla. Tällöin laskentateho luonnollisesti pienenee prosessien lukumäärä kasvatettaessa, mutta vielä 16lohkoisessa tapauksessa on saavutettu hyvä laskentateho.
Toisessa tapauksessa on pidetty probleeman koko 64 × 64 × 32 = 131 072 va-
kiona ja jaettu sitä pienempiin prosesseihin. Tulos on esitetty taulukossa 8.3. Kuten
8.2. MONIHILAMENETELMÄN KÄYTTÖ
171
Kuva 8.9: Laskentateho pitämällä tehtäväkokoa vakiona. Sovitetuista käyristä Sp1 (N ) viittaa Amdahlin lakiin ja Sp2 (N ) yhtälöön (8.7).
havaitaan tulos alkaa heikentyä ja skaalautuvuus on huonompi. Tosin vielä niinkin
pienellä lohkokoolla kuin 16 × 16 × 8 = 2048 laskentatilavuutta, saavutetaan lähes
90% teoreettisesta laskentatehosta. Taulukon 8.3 tulokset on esitetty myös kuvassa
8.9. Kuvaan on sovitettu myös käyrät (8.7) ja (8.8). Yhtälön (8.7) voidaan havaita
noudattavan paremmin todellisia laskentatehoja kuin Amdahlin lain tässä tapauksessa.
Käsittelemällä ratkaisua lohkoittain lokaalisesti kytkentä laskenta-alueen laidalta toiselle katkeaa ja konvergenssi hidastuu. Jos lohkokoko pidetään riittävän suurena, tällä ei ole merkitystä. Kuvassa 8.10 on jaettu tehtävää, jonka alkuperäinen koko
on 128 × 64 × 64 osiin ja verrattu konvergenssia. Konvergenssissa ei näy suuria ero-
ja, vaikka on käytetty maksimissaan 32 lohkoa. Tässä tapauksessa pieninkin lohko
on kohtuullisen kokoinen 32 × 32 × 16, mikä tietenkin vaikuttaa asiaan. Voidaan to-
deta, että myös numeriikan kannalta on tärkeää, ettei rinnakkaistamista viedä kovin
pienen lohkon asteelle.
8.2 Monihilamenetelmän käyttö
Edellä laskentaa nopeutettaessa todettiin ratkaisuajan / iteraatiokierros pysyvän samana, jos probleema skaalautuu täydellisesti. Iteratiivisen ratkaisun kierrosmäärä
kuitenkin nousee tehtäväkoon kasvaessa, joten ratkaisuajat eivät pysy samoina ilman erikoistoimenpiteitä. Aikaisemmin on ollut esillä monihilan käyttö lineaaris-
8.2. MONIHILAMENETELMÄN KÄYTTÖ
172
Kuva 8.10: Ratkaisun konvergoiminen (liikemäärän L2 -normi) eri lohkojaoilla.
ten yhtälöryhmien yhteydessä. Tällöin saavutetaan se ominaisuus, ettei iteraatiokierrosten määrä (periaatteessa) nouse yhtälöryhmän koon kasvaessa. Virtausyhtälöt ovat epälineaarisia ja vaativat kaikista hyvistä keinoista huolimatta kohtalaisen
paljon iteraatiokierroksia riippuen tehtävän luonteesta. Tämä kierrosmäärä saadaan
kuitenkin likimain vakioksi soveltamalla monihilaa myös itse virtausyhtälöiden ratkaisuun. Monihila-algoritmia voidaan siis soveltaa kahdessa vaiheessa. Itse yhtälöiden ratkaisuun (ulkoinen iteraatio) ja mahdollisesti myös lineaaristen yhtälöryhmien ratkaisuun (sisäinen iteraatio). Ulkoisessa iteraatiossa tehtävä ratkaistaan eri
hilatasoilla käyttäen kyseisen tason geometriaa. Tämän vuoksi käytetään menettelystä myös nimitystä geometrinen monihila. Jatkossa esitettävästä algoritmista käytetään myös nimitystä ’FAS’ (full approximation scheme) tai geometrinen monihila
’GMG’.
Kuten lineaaristen yhtälöryhmien yhteydessä, voidaan myös virtausyhtälöille
monihila-algoritmi rakentaa monella tavoin. Yhteistä näille tavoille on kuljettaa
ratkaisua myös harvemmilla hilatasoilla, jotka saadaan yhdistämällä tiheän tason
koppeja kuten kuvassa 8.11 on esitetty. Seuraavassa esitetään FINFLO-ohjelmassa
käytetyn monihilamenetelmän rakenne. FINFLOn menetelmä toimii sellaisenaan
kokoonpuristuvan virtauksen yhteydessä, mutta tämän hetken käsityksen mukaan
se on laajennettavissa painekorjausmenetelmälle.
Painekorjausmenetelmällä kokoonpuristumattomassa tapauksessa ratkaistavaksi jää vain liikemääräyhtälöt. Jos liikemääräyhtälöt olisivat lineaarisia, ratkaisus-
8.2. MONIHILAMENETELMÄN KÄYTTÖ
harva
hila
173
t i h e ähila
F
2
F
1
C
F
3
F
4
Kuva 8.11: Harvan hilan kopit saadaan yhdistämällä tiheän hilan laskentatilavuuksista. Suureet tasojen välillä siirretään eri tyyppisillä interpoloinneilla.
sa riittäisi algebrallinen monihila. GMG:ssä pyritään kiihdyttämään epälineaarisen probleeman ratkaisua. Monihilamenetelmässä suoritetaan yleensä yksi iteraatiokierros tiheimmällä tasolla (yleensä lineaaristen yhtälöiden yhteydessä suoritetaan
useampia kierroksia). Kun ratkaisu on saatu, lasketaan uudet residuaalit tiheimmällä
tasolla. Merkitään jatkossa kaikkien ratkaistavien suureiden uutta residuaalivektoria
Rh∗ 1 . Konvergenssia voidaan kiihdyttää käyttäen toista harvempaa hilatasoa seuraavasti:
• Siirretään uusi residuaali Rh∗ 1 harvemmalle tasolle. Toiselle hilatasolle siirretty residuaali on yksinkertaisesti tiheämmän tason neljän (kolmessa dimen-
siossa kahdeksan) kopin, jotka sisältyvät harvan hilan yhteen laskentatilavuuteen, residuaalien summa
Rht 2 =
X
Rh∗ 1
(8.9)
• siirretään ratkaistavien suureiden vektori toiselle hilatasolle yhtälöstä
Uth2 =
X
Vh1 Uth1 /Vh2
(8.10)
missä summaus on jälleen niiden tiheän hilan laskentatilavuuksien yli, jotka sisältyvät kyseiseen harvan hilan noodiin ja Vh1 on laskentakopin tilavuus
tasolla h1 . Kahden tason menetelmässä suureita Uth2 tarvitaan vain implisiittisen vaiheen kertoimien laskennassa.
8.2. MONIHILAMENETELMÄN KÄYTTÖ
174
• suoritetaan tasolla kaksi implisiittinen vaihe yhtälöillä (6.18) ja (6.19) sekä
päivitetään ratkaisuvektori Uth2 (kahden tason menetelmässä uutta ratkaisu-
vektoria ei oikeastaan tarvita). Implisiittisellä vaiheella on oltava hyvät ratkaisun tasoitusominaisuudet, koska se vastaa algebrallisen menetelmän tasoitusoperaattoria.
• siirretään toisella hilatasolla laskettu ∆Uth2 ensimmäiselle tasolle. Periaatteessa tällöin voidaan käyttää jotain interpolointimenetelmää, kuten Ferziger-
Pericissä. Käytännössä kuitenkin riittää siirtää sama korjaus kaikkiin neljään
(kahdeksaan) koppiin tiheällä tasolla. Tämä johtuu siitä vanhasta seikasta, että deltamuotoisen ratkaisun yhteydessä monenlaiset yksinkertaistukset ovat
luvallisia. Kahden tason menetelmässä oikeastaan tarvitaan siis vain itse korjaus ∆Uth2 , arvoja Uth2 toisella tasolla ei tarvitse edes päivittää.
Useammalla hilatasolla algoritmi tulee monimutkaisemmaksi, koska siirryttäessä tasolle kolme, on kakkostason residuaalia korjattava siten kuin ykköstason tulos
muuttuu kakkostason korjauksen vuoksi. Tämä tapahtuu käyttäen ns. pakotefunktiota (forcing function). Kokonaisuudessaan monihilasykli voidaan kirjoittaa seuraavasti:
1. Lasketaan tiheimmällä tasolla normaali iteraatiokierros, jolloin saadaan residuaali Rh1
2. Siirrytään seuraavalle tasolle
3. Lasketaan edellisen tiheämmän tason residuaali yhtälöistä (6.7) ja (6.18) käyttäen tällä tasolla päivitettyjä arvoja. Kakkostasolla h2 lasketaan siis ykköstason residuaali Rh1 uusiksi, kuten edellä jo kuvattiin. Merkitään tätä uutta residuaalia Rhi−1 .
4. Lasketaan uusi residuaali Rh∗ i−1 käyttäen pakotefunktiota Phi−1 .
Rh∗ i−1 = Rhi−1 + Phi−1
(8.11)
Kakkostasolle siirryttäessä Phi−1 ≡ 0, joten myös Rh∗ i−1 = Rhi−1 kuten yhtä-
lössä (8.9) tehtiin.
8.2. MONIHILAMENETELMÄN KÄYTTÖ
175
5. Siirretään residuaali
Rht i =
ja ratkaistavien suureiden vektori
Uthi =
X
X
Rh∗ i−1
Vhi−1 Uthi−1 /Vhi
seuraavalle hilatasolle.
6. Lasketaan tasolla hi uusi residuaali Rhi käyttäen siirrettyjä muuttujien arvoja
Uthi .
7. Lasketaan pakotefunktio
Phi = Rht i − Rhi
(8.12)
Pakotefunktio on siis harvalle hilalle siirretyn residuaalin ja harvalla tasolla
lasketun residuaalin erotus ja sitä käytetään seuraavalla hilatasolla kohdassa
3. Kahden tason menetelmässä pakotefunktiota ei siis tarvita.
8. Lasketaan uusi residuaali
Rh∗ i = Rhi + Phi
(8.13)
jonka voidaan taas todeta toisella tasolla olevan sama kuin ykköstasolta siirretyn residuaalin.
9. Suoritetaan implisiittinen vaihe käyttäen residuaalia Rh∗ i ja päivitetään ratkaisu Uhi
10. Palataan kohtaan 2 hilatasolle hi+1 , jos hilatasoja on vielä käytettävissä.
Kun harvin taso on saavutettu, interpoloidaan korjaus seuraaville tiheämmille
tasoille yhtälöstä
i
Uh+i = Uhi + Ihhi+1
(Uh+i+1 − Uht i+1 )
(8.14)
missä Uh+i+1 on hilatason hi+1 lopullinen arvo koostuen kyseisellä tasolla tehdysi
tä ratkaisusta ja alemmilta tasoilta tulleesta korjauksesta. Tässä Ihhi+1
on interpo-
lointioperaattori hilatasojen välillä. Tämän valintaa selvitetään Ferziger-Pericissä.
8.2. MONIHILAMENETELMÄN KÄYTTÖ
176
FINFLO-ohjelmassa ei suoriteta mitään interpolointia, vaan korjaus siirretään sinällään kaikkiin neljään (2D tapauksessa) laskentatilavuuteen. Algebrallisen monihilamenetelmän yhteydessä tämän havaittiin jonkin verran huonontavan konvergenssia, mutta kokemukset tässä yhteydessä puoltavat yksinkertaisen menetelmän
käyttöä.
Yllä olevaa algoritmia pakotefunktioineen voitaisiin soveltaa myös algebrallisen monihilamenetelmän yhteydessä. Tällöin ratkaisuvektori olisi interpoloitava
harvemmille tasoille ja residuaali laskettava sen avulla uudestaan. Geometriaa ei
tarvitsisi tietenkään käyttää, koska menetelmä perustuu pelkän yhtälöryhmän käyttöön. Vaikka menettely vaikuttaa erilaiselta kuin aikaisemmin esitetty algebrallinen
monihilamenetelmä, niiden konvergointihistoriassa ei ole käytännössä mitään eroa.
Pakotefunktion avulla menetelmä tulee ohjelmallisesti monimutkaisemmaksi, joten
sitä ei kannata käyttää algebrallisen monihilan kanssa. Mielenkiintoista on lisäksi
se, ettei laskenta-aika pitenisi monimutkaisemmalla tavalla juuri ollenkaan, koska
operaatiot ovat yksinkertaisia ja tehdään harvemmilla tasoilla. Suurin osa algebrallisen monihilan ratkaisuajastahan kuluu tasoittamiseen. Geometrisella monihilalla
implisiittinen vaihe toimii tasoittajana ja siihen kuluu tyypillisesti vain noin puolet
laskenta-ajasta.
Monihilan lisäksi virtausratkaisu kannattaa aina aloittaa harvemmalta tasolta ja
siirtää tulos seuraavan tason alkuarvaukseksi. Kullakin tasolla ratkaisun oikeellisuutta voi jo arvioida ja lisäksi on mahdollisuus Richardsonin ekstrapolaation avulla
arvioida hilan suhteen täysin konvergoitunutta tulosta. Kun näitä alkuarvauksia käytetään, kyseessä on myös ns. full multigrid (FMG) ratkaisu, jonka kulku nähdään
kuvasta 8.12. Virtausratkaisua ei kannata automaattisesti tehdä FMG:llä, vaan jokaisen saadun ratkaisun (neliö kuvassa 8.12) tulosta myös tarkastellaan ja todetaan
sen oikeellisuus. Tämän jälkeen interpoloidaan alkuarvaus seuraavalle tiheämmälle
tasolle, jolla voidaan iteroida monihilaa käyttäen. Monihilassa voidaan käyttää virtausyhtälöilläkin jotain muuta kuin yksinkertaista V-sykliä, mutta yleensä laskentaaikaa ei monimutkaisemmilla strategioilla säästy.
Monihila-algoritmin tehosta on esimerkki kuvassa 8.13, jossa viiden tason menetelmää on verrattu yhden tason menetelmään. Periaatteessa tihennettäessä laskentahilaa ratkaisuaika pysyy ennallaan monihilaa sovellettaessa. Usein konvergenssin kiihdytys millä tahansa keinolla kuitenkin heikentää menetelmän stabiilisuutta,
8.3. RATKAISUN ADAPTIIVISUUS
177
K o n v e r g o i t u n u at i rsaut k
Interpolointi
t i h em
ä malle
tasolle
5
Väliaikainen ra
s tuk a i
1
Siirtoh a r −
ve m m a l l e
tasolle
2
2
3
2
5
4
3
Hilataso
1
2
1
Kuva 8.12: Kaavio täyden monihilan ratkaisusta. Kullakin hilalla tehdään käytännössä suuri
määrä V-syklejä ennen kuin tulos on konvergoitunut. Tässä kuvassa viides taso on tihein,
päinvastoin kuin tekstissä.
jolloin tiheällä hilalla joudutaan tinkimään mm. maksimimäärästä monihilatasoja.
Konvergenssi tällöin huononee jonkin verran, mutta jo kolmella tasolla saavutettu
hyöty on erittäin suuri.
Monihila-algoritmi voidaan yhdistää myös rakenteettomaan hilaan, mutta jälleen toteuttaminen on hankalampaa verrattuna rakenteelliseen. Perusajatuksena on
yhdistää sopivalla tavalla vierekkäisiä kolmioita tai tetraedrejä. Monihilamenettely
ei ole kovin herkkä sille, miten laskentatilavuuksia yhdistellään. Riittää, kun harvat tasot ovat selvästi harvempia kuin tiheät. Harvoilla tasoilla laskentakopit eivät
säily kolmioina, vaan niiden seinistä tulee epämääräinen murtoviiva. Menetelmästä
käytetään nimitystä agglomeraatiomonihila (’agglomeration multigrid’), jonka voisi suomentaa lumipallon pyörittämiseksi (mitä harvempi taso, sen pallomaisempia
laskentatilavuuksista tulee).
8.3 Ratkaisun adaptiivisuus
Kolmas tapa tehostaa ratkaisua on laskentahilan adaptiivisuus. Konventionaalisessa
laskennassa simuloinnin suorittaja generoi hilan, jossa tulee olla tihentymät oikeissa paikoissa: seinien lähellä ja siellä, missä gradientit ovat suuria. Menettelytapa on
toimiva, mutta vaatii suorittajaltaan kokemusta. Adaptiivinen ratkaisija tihentää laskentaverkkoa simuloinnin kuluessa joitain sopivia kriteerejä käyttäen. Tehottomin
tapa on lähentää rakenteellisen hilan hilaviivoja esimerkiksi paikallisen nopeusgra-
8.3. RATKAISUN ADAPTIIVISUUS
178
1
F M G
S G
Residuaali
,1
,01
,001
,0001
,00001
,000001
,0000001
,1E−07
0
200
400 600
Iter.
Kuva 8.13: Turbulenssin kineettisen energian residuaali laskettuna yhden tason menetelmällä ja käyttäen viittä monihilatasoa (Lilek 1995).
dientin mukaan. Tällöin hilaviivat saattavat vääristyä ja tihentymät aiheuttavat harventumia ympäristöönsä. 8.3.
Ferziger-Pericissä esitetään eräitä parempia tapoja soveltaa adaptiivisuutta. Kuvassa 8.15 esitetään hilan tihennys kaksinkertaiseksi. Menettelytapa on yksinkertaisinta toteuttaa lohkorajalla ja siinä voidaan hyödyntää haamukoppeja. Vielä parempi tapa on luopua hilaviivojen jatkuvuudesta kokonaan. Kuten aikaisemmin todettiin, lohkorajalla on mahdollista saavuttaa ainakin likimain globaali säilymisominaisuus, vaikka hilaviivat eivät olisi jatkuvia. Harventamalla hilaa tällä tavoin estetään esimerkiksi rajakerrostihentymien eteneminen kauas sellaiselle alueelle, missä
niistä on vain haittaa. Tällä tavoin säästetään muistikapasiteettia ja parannetaan konvergenssia. Lisäksi tihentymät saattavat todella olla haitallisia diskretointitarkkuuden kannalta kaukana kiinteiltä pinnoilta, koska peräkkäisten laskentatilavuuksien
∆xi /∆xi+1 -suhde saattaa poiketa liiaksi ykkösestä (kts. peruskurssi).
Vielä tehokkaampi tapa on jakaa laskentatilavuuksia paikallisesti kuten kuvassa 8.14. Ongelmana on, että alkuperäiseen rakenteelliseen hilaan liittyvä topologia
häviää. Menetelmä vaatii erilaista tiedonhallintaa, joksi sopii eräänlainen puurakenne. Termit ’octree’ ja ’quadtree’ liittyvät tämänkaltaiseen adaptiivisuuteen. Puurakenne soveltuu myös hyvin monihila-algoritmiin. Erona edellä esitettyyn on se,
että osa laskentatilavuuksista on ikään kuin valmiiksi seuraavalta hilatasolta eikä
8.3. RATKAISUN ADAPTIIVISUUS
179
Kuva 8.14: Paikallinen hilan tihentäminen rakenteellisella hilalla.
niihin tarvitse interpoloida arvoja edelliseltä tasolta. Puurakenteisia hiloja voidaan
pitää myös rajoitetussa mielessä rakenteettomina. Kuvan 8.14 hilatyypille voidaan
soveltaa myös täysin rakenteetonta algoritmia, jolla tiedonhallinta ei perustu puurakenteeseen. Monihila-algoritmikin on silloin rakennettava toisin, agglomeraation
avulla.
Adaptiivisuus saadaan helpoiten toteutettua kolmioilla tai tetraedreillä. Kuvassa 8.16 on kaksi siipiprofiilia, joiden läheisyydessä kolmiointia on tihennetty. Kolmiointiin on kaksi perustapaa, etenevän rintaman menetelmä ja Delaunayn kolmiointi.
Näillä voidaan toteuttaa perushila. Ratkaisun edetessä kolmioita voidaan jakaa paikallisesti kahtia jonkin sopivasti valitun kriteerin mukaan. Kriteerillä pyritään arvioimaan paikallista katkaisuvirhettä. Menetelmällä on mahdollista päästä niin pitkälle, että kitkattomalla virtauksella esiintyvät epäjatkuvuuskohdat (tiivistysaallot)
8.3. RATKAISUN ADAPTIIVISUUS
180
N5
N6
c6 P
c1
N1
c5 c4
N4
c3
c2
N3
N2
Kuva 8.15: Tihennys rakenteellisella hilalla hoidetaan helpoiten lohkorajalla. Tihennys on
mahdollista tehdä myös epäjatkuvalla tavalla.
näkyvät käytännössäkin epäjatkuvuuskohtina. Rakenteettoman hilan adaptiivisuus
on virtauslaskennassa voimakkaan tutkimuspanoksen kohteena.
Vaikka rakenteetonta hilaa periaatteessa voidaan adaptoida miten tiheälle tasolle tahansa, käytännön raja tulee vastaan laskentatilavuuksien määrän kasvaessa.
Erityisenä hankaluutena ovat rajakerrokset, joissa kolmioinnista aiheutuu suurempi katkaisuvirhe kuin rakenteellisella hilalla. Tämän vuoksi seinien lähellä pyritään
yhdistämään nämä hilatyypit. Lupaavimmalta vaikuttava tekniikka on korvata kolmiot (tetraedrit) seinien läheisyydessä prismoilla. Toinen tapa on käyttää seinien
lähellä heksaedrejä.
8.3. RATKAISUN ADAPTIIVISUUS
Kuva 8.16: Rakenteettomaan hilaan adaptiivisuus liittyy luonnollisella tavalla.
181
8.3. RATKAISUN ADAPTIIVISUUS
182
• Reunaehtona kontrollitilavuusmenetelmässä on vuo. Vuon laskenta voidaan useimmiten laskentalohkon reunoilla tehdä samalla tavoin kuin sisäalueessa käyttämällä kahta haamukoppiriviä.
• Haamukoppien avulla lohko liitetään naapurilohkoihin.
• Joskus vuo lohkon reunalla kannattaa laskea eri tavoin kuin sisäalueessa.
Esimerkkinä on vuo kiinteällä pinnalla.
• Lohkorakenne antaa hyvän pohjan rinnakkaistamiselle. Rakenteeton hila on myös jaettava vyöhykkeisiin rinnakkaistusta varten.
• Massansäilyminen voidaan toteuttaa lohkorajalla vaikka hilaviivat eivät
olisi jatkuvia.
• Rinnakkaistaminen voi perustua jaetun muistin koneella DOsilmukoiden pätkimiseen. Varsinainen massiivinen rinnakkaislaskenta
hajautetun muistin koneella perustuu lohkojakoon ja viestinvälitykseen.
• Laskennan nopeutuminen vakiolohkokoolla
η=
N
1+c
• Laskennan nopeutuminen, kun tehtäväkoko on vakio
η=
N
1 + βN 1/3
• Geometrisella monihila-algoritmilla (GMG tai FAS) saadaan iteraatiokierrokset pysymään vakiona, vaikka tehtävän koko kasvaisikin.
• Kahdella tasolla GMG-monihilamenetelmässä suoritetaan vain implisiittinen vaihe toisella tasolla käyttäen ykköstasolta siirrettyä residuaalia. Useammalla tasolla käytetään pakotefunktiota ja algoritmi on monimutkaisempi.
• Kokenut virtauslaskija aloittaa harvalta tasolta ja käyttää alkuarvauksena tulosta seuraavalla tasolla (FMG).
• Varsinainen adaptiivinen ratkaisu toteutetaan yleensä rakenteettomalla
hilalla.
Päivitetty 5.3.2014
183
9 Käyräviivainen laskentahila
9.1 Hilatyypit
Erityisesti kokoonpuristumattomien ns. teollisuusprosessien virtauksien yhteydessä käytettiin pitkään karteesista tai muita suorakulmaisia laskentahiloja. Geometria
otettiin kömpelöllä tavalla huomioon rajaamalla alueesta pois osia. Reunojen käsittelystä ei myöskään piitattu, vaan ne kuvattiin sahalaitoina, kuten kuvassa 9.1. Tällä
tavoin ei tietenkään saavuteta mitään tarkkuutta seinän läheisyydessä. Seinämällä ja
sen läheisyydessä olevalla rajakerroksella ei saa olla mitään merkitystä sen ilmiön
kannalta, jota laskennassa pyritään saamaan esille kuvan 9.1 laskentaverkolla.
Käyräviivaisella laskentahilalla (kuva 9.2) voidaan kuvata virtaus myös seinien
lähellä. Rajakerrosta varten tulee kitkallisella virtauksella tehdä seinän läheisyydessä tihennys, joka riippuu rajakerroksen paksuudesta ja sitä kautta probleemaan
liittyvästä globaalista Reynoldsin luvusta. Tämä hilatyyppi sopii monessa suhteessa hyvin virtauslaskentaan. Koska virtaus pyrkii olemaan enemmän tai vähemmän
kiinteiden seinien suuntainen, se on myös hilaviivojen suuntainen. Tämä puolestaan
näkyy pienempänä katkaisuvirheenä verrattuna kuvan 9.1 hilaan. Rajakerroksessa
kopeista tulee hyvin litteitä, mutta likimain tiiliskivimäisiä. Kolmiota käytettäessä
rakenteettomalla hilalla koppeja kuluu kahdessa dimensiossa kaksinkertainen määrä, jotta saataisiin sama tarkkuus kuin rakenteellisella hilalla. Tämän vuoksi seinien lähellä on rakenteettomalla hilalla käytettävä prismoja. Tällöinkin katkaisuvirhe tulee suuremmaksi kuin rakenteellisella hilalla. Aikaisemmin on useassa kohden
tullut esille rakenteellisen hilan numeriikkaan, mukaan lukien monihila ja rinnakkaistaminen, liittyvä ohjelmoinnin helppous. Eräs tekijä on vielä jälkikäsittely ja
tulosten tarkastelu. Rakenteellinen hila muodostaa hyvän pohjan tarkastella eräitä
taseita ja myös ratkaisua pitkin vakiohilaviivaa. Rakenteettomalla hilalla tällaisia ei
ole, vaan esitystavassa joudutaan aina interpoloimaan. Mutta kuten jo on mainit-
9.1. HILATYYPIT
184
Kuva 9.1: Yritys kuvata karteesisella hilalla vinoa seinää johtaa porrasmaiseen laitaan.
Kuva 9.2: Käyräviivaisella hilalla saadaan rakenteen muoto tarkasti. Yllä olevassa tapauksessa alueen kulmikkuus aiheuttaa epätasaisuutta hilaviivoihin. Se poistuisi tässä tapauksessa kaksilohkoisella hilalla, jossa ylös kulman taakse jäävä alue on omassa lohkossaan.
tu, hilangeneroinnin automatisointi ja adaptiivisuus ovat puolestaan rakenteettoman
hilan etuja.
Puurakenne on tuonut takaisin periaatteellisen mahdollisuuden käyttää kuvan
9.1 kaltaisia laskentaverkkoja myös vinoilla seinillä. Tällöin hilaa voidaan tihentää seinän lähellä niin paljon, että haluttu tarkkuus saavutetaan. Ongelmaksi tulee
virtaus suurella globaalilla Reynoldsin luvulla, jolloin on tarve saada pinnan lähelle korkeudeltaan hyvin ohuita koppeja. Puurakenteella niistä tulee tällöin myös pituudeltaan pieniä, mikä johtaa mielettömiin laskentatilavuusmääriin. Tämän vuoksi
puurakenteella ei voida hoitaa rajakerrostihentymiä, vaan ne on kuvattava käyräviivaisella hilalla.
Aikaisemmin pyrittiin käyttämään suorakulmaisia käyräviivaisia hiloja (esim.
Patankar). Tämä yksinkertaistaa kitkatermiä ja painekorjausyhtälöä, mutta itse hi-
9.2. HILANGENEROINTI
185
langenerointi tulee hankalaksi, minkä vuoksi tapaa ei enää juuri käytetä. Yleisessä
käyräviivaisessa tapauksessa kitkaton osa vuosta ei juuri monimutkaistu verrattuna
suorakulmaiseen käyräviivaiseen hilaan. Viskoosi osa tulee monimutkaisemmaksi,
mutta tällä ei ole juuri merkitystä. Hankalin asia on itse painekorjausyhtälö, joka
täydellisenä tulisi täydemmäksi, koska ’väli-ilmansuunnissa’ olevat nurkkapaineiden korjaukset p′i±1,j±1 tulisivat mukaan. Nämä yleensä pudotetaan pois, mutta stabiilisuuden kustannuksella, mikä johtaa alentuneeseen alirelaksaatiokertoimeen αp .
Kontrollitilavuusmenetelmällä kitkattoman vuon laskenta suoritetaan aina samalla edempänä esitettävällä tavalla. Sama menettely voidaan ottaa käyttöön rakenteettomalla hilalla, jos muuttujien arvot rajapinnoille interpoloidaan MUSCLkaavaa yleisemmällä lausekkeella. Kitkatermi voidaan diskretoida useammalla tavalla, mutta kuten peruskurssilla todettiin, kitkatermin diskretointi ei tuota periaatteellisia ongelmia virtausratkaisun yhteydessä.
9.2 Hilangenerointi
Laskentahilan generointi on muodostunut omaksi tieteenlajikseen. Hyvää, nopeaa
ja robustia rakenteellisen hilan generointimenetelmää ei ole. Ensimmäisenä tehtävänä on pintojen luonti, joka on tehtävä myös rakenteettomalla hilalla. Aiemmin
on mainittu rakenteettoman hilan generointimenetelmät: Delaunayn kolmiointi ja
etenevän rintaman menetelmä. Rakenteellisella hilalla nopein tapa on interpoloida
avaruushila seinillä olevasta hilajaosta. Menetelmää sanotaan algebralliseksi. Yleisimmin käytetty algebrallinen menetelmä on ns. transfiniitti interpolointi. Tapa on
nopea, mutta sillä ei voida välttää hilaviivojen menemistä ristiin vähänkään monimutkaisemmissa tapauksissa. Tämän tuloksena syntyy negatiivisia laskentakoppeja
ja pinta-aloja, joiden vuoksi laskenta kaatuu.
Differentiaaliyhtälöiden ratkaisuun perustuvilla menetelmillä voidaan generoida hiloja, jotka seuraavat monimutkaisiakin pinnanmuotoja juoheasti. Hilapinnat
ovat tällöin differentiaaliyhtälön ratkaisun tasa-arvopintoja. Menetelmiä on kolmea
päätyyppiä: elliptiset, paraboliset ja hyperboliset. Yleisimmin käytetty menetelmä
on elliptinen. Parabolisen ja hyperbolisen menetelmän etuna on se, ettei pintahilaa tarvitse antaa kaikilla aluetta rajoittavilla pinnoilla. Niitä voidaan käyttää vain
ns. ulkopuolisten virtausten laskennassa, jolloin vapaan virtauksen reunan tarkalla
9.3. NOPEUSKOMPONENTTIEN VALINTA JA
KOORDINAATISTOMUUNNOS
186
sijainnilla ei ole suurta merkitystä.
Yleensä differentiaaliyhtälöihin pohjautuvat menetelmät tuottavat lopulta laskentaan kelpaavan hilan. Tämän muoto saattaa olla kuitenkin pahoin vääristynyt.
Parempi keino on interpoloida ensin mahdollisimman hyvä hila ja sen jälkeen ajaa
se muutaman kerran elliptisen ratkaisun läpi. Tässä tavassa ei pyritä siihen, että saataisiin hila elliptisen yhtälön konvergoituneena ratkaisuna, vaan elliptisen yhtälön
yksi iteraatiokierros toimii hilan tasoittajana. Tasoittajia voi olla monenlaisia ja niiden käyttö vaatii kokemusta, kuten hilangenerointi yleensäkin.
Edellä mainittujen tapojen lisäksi on olemassa ja jatkuvasti kehitetään uusia hilangenerointimenetelmiä. Rakenteellisella verkolla juuri hilangenerointi muodostaa
pääosan simulointiin kuluvasta ajasta. Hilangenerointi alkaa aina pintojen luomisella. Koko vaihetta nimitetään esikäsittelyksi. Sitä varten on olemassa kaupallisia ohjelmia (esim. IGG, GRIDPRO). Kaupallisissa virtausratkaisijoissa on luonnollisesti
olemassa esikäsittelijä, jonka taso saattaa olla varsin vaihteleva.
9.3 Nopeuskomponenttien valinta ja koordinaatistomuunnos
Nopeuskomponentit, joita laskennassa käytetään, voidaan valita monella tavalla.
Suorakulmaisilla hiloilla on perinteisesti käytetty nopeuskomponentteja, jotka ovat
hilaviivojen suuntaisia (kovariantit komponentit). Tällöin kyseiset komponentit ovat
myös kohtisuorassa laskentatilavuuksien pintoja vastaan. Peruskurssilla tämä kohtisuora nopeuskomponentti nimettiin skaalatuksi kontravariantiksi nopeudeksi, joka
on se nopeus, jolla konvektio tapahtuu. Kirjallisuudessa nopeutta nimitetään usein
myös yksinkertaisesti kontravariantiksi nopeudeksi (Ferziger-Peric) tai konvektionopeudeksi.
Yleisessä käyräviivaisessa tapauksessa hilaan liittyviä nopeuskomponentteja on
kolme: karteesiset, kovariantit ja kontravariantit komponentit. Kaikkia näitä on käytetty painekorjausmenetelmän yhteydessä. Kokoonpuristuvan virtauksen ratkaisussa käytetään vain karteesisia komponentteja. Kovariantit komponentit ovat hilan
määrittelemään koordinaatistoon liittyvät varsinaiset, siis hilaviivojen suuntaiset,
nopeuskomponentit. Näiden käyttö on kaikkein hankalinta painekorjausmenetelmän yhteydessä, mutta tällaisiakin yrityksiä on nähty. Kontravariantti komponentti
9.3. NOPEUSKOMPONENTTIEN VALINTA JA
KOORDINAATISTOMUUNNOS
a)
b)
187
c)
Kuva 9.3: Käyräviivaisella hilalla olevia mahdollisia nopeuskomponentteja: (a) limitetty hila ja kontravariantit nopeuskomponentit, (b) limitetty hila ja karteesiset nopeuskomponentit,
(c) tavanomainen hila ja karteesiset nopeuskomponentit.
on samalla konvektionopeus ja erityisesti limitetyllä hilalla (kuva 9.3a) sen käyttö
on kätevähköä. Painekorjausyhtälön jälkeen voidaan suoraan korjata kontravariantteja nopeuksia samantapaisesta yhtälöstä kuin karteesisessa tai suorakulmaisessa tapauksessa. Tavanomaisella hilalla (kuva 9.3c) tämä ei ole aivan yhtä yksinkertaista,
koska viime kädessä halutaan korjata kopin keskellä olevia nopeuskomponentteja
eikä seinillä olevia. Keskipisteissä lausutuille komponenteille ainoa järkevä valinta
onkin karteesinen. Tällöin painekorjauksen jälkeen voidaan korjata kontravariantit ’pintanopeudet’ ja niiden avulla karteesiset. Toinen vaihtoehto on korjata suoraan karteesisia. Tämä ei ole aivan suoraviivaista, koska paineita korjattavien keskipisteissä lausuttujen karteesisten nopeuskomponenttien kahden puolen ei tunneta,
vaan ne on laskettava keskiarvoina hilapistearvoista. Tällöin reunat saattavat olla
ongelmallisia jos haamukoppien painekorjauksia ei ole ratkaistu.
Yleisten kontravarianttien komponenttien lisäksi käytetään jonkin verran sylinterija pallokoordinaatistoja ja niiden määrittelemiä komponentteja. Pääsyy, miksi tässä
ei ole suurta järkeä, on yhtälöiden monimutkaisuus. Diskretoituihin yhtälöihin tulee lähdetermejä, joiden mallinnus tuo hankaluuksia. Ainoa keino, jolla yhtälöistä
tulee yksinkertaisia ja säilymismuotoisia (ei synny lähdetermejä), on käyttää karteesisia nopeuskomponentteja kaikissa tapauksissa. Myös sylinterikoordinaatiston tapauksessa kannattaa tehdä näin, vaikka katkaisuvirheestä tulee suurempi kuin käytettäessä kontravariantteja komponentteja (on muistettava, että suorakulmaisella hilalla kontravariantit ovat samoja kuin kovariantit komponentit). Katkaisuvirhe saataisiin pienemmäksi virtauksen hilaviivoja seuraavan luonteen vuoksi käyttämällä
MUSCL-kaavassa sylinterikoordinaatiston nopeuskomponentteja (siis kovariantte-
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
188
ξ2
x2
N E
N
NW
∆ξ 1
j +1
E
P
∆ξ 2
W
j
S
ξ1
SE
S W
i2
j− 1
i1
i +1
i
i−1
x1
Kuva 9.4: Koordinaatistomuunnoksessa hilaviivat muodostavat uuden koordinaatiston, jossa hilaviivat ovat ξi = vakio käyriä.
ja) ja muuntamalla ne interpoloinnin jälkeen takaisin karteesisiksi. Operaatio ei ole
tarpeellinen riittävän tiheällä hilalla. Kummallakin interpolointitavalla katkaisuvirhe on toista kertalukua, mutta hyvin harvalla hilalla karteesisista komponenteista
saattaa syntyä merkittävän kokoinen virhe.
Peruskurssilla todettiin rakenteelliseen laskentahilaan liittyvän myös koordinaatistomuunnoksen. Periaatteessa yhtälöt voidaan muuntaa differentiaaliyhtälöiksi tässä koordinaatistossa ja diskretoida sen jälkeen. Operaatiossa ei ole mitään järkeä,
koska sama asia voidaan tehdä luotettavammin suoraan äärellisellä tilavuusalkiolla. Koordinaatistomuunnoskeinossa on yhtälöihin tulevien symbolien diskretoinnissa oltava tarkkana, jotta yhtälöillä olisi säilymisominaisuus. Ja tuloksena tällaisesta diskretoinnista on kuitenkin kontrollitilavuusmenetelmä. Ferziger-Pericissä kerrataan lyhyesti yhtälöiden muuntamista. Jostain syystä tavaksi on esimerkiksi ’Numerical Heat Transfer’-lehdessä tullut esittää yhtälöt muunnetussa muodossa. Koordinaatistomuunnoksilla on varsinaista käyttöä vain laskentahilan generoinnissa ja
eräissä teoreettisissa tarkasteluissa.
9.4 Kontrollitilavuusmenetelmä käyräviivaisella hilalla
Käyräviivaisella laskentahilalla yhtälöiden diskretointi perustuu samaan integraalimuotoiseen yhtälöön kuin aikaisemmin esitetty karteesisen hilan ratkaisu. Koska
skalaariyhtälöt voidaan käsitellä samaan tapaan kuin liikemääräyhtälön yksittäiset
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
189
η
N
n
ne
""""""""""""""""""
NW
y
""""""""""""""""""
""""""""""""""""""
""""""""""""""""""
n
nw
""""""""""""""""""
""""""""""""""""""
e
""""""""""""""""""
n """"""""""""""""""
""""""""""""""""""
n
P
""""""""""""""""""
""""""""""""""""""
w
""""""""""""""""""
W """"""""""""""""""
s
""""""""""""""""""
se
""""""""""""""""""
""""""""""""""""""
s
w
""""""""""""""""""
n
ξ
E
n
SE
S
j
x
i
Kuva 9.5: Kaksidimensioinen kontrollitilavuus ilmansuuntamerkinnöillä.
komponentit, lähdetään tässä x-suuntaisen liikemääräyhtälön (1.21)
Z
Z
Z
∂
ρudV + ρuV~ · ~ndS + pnx dS =
∂t
V
S
S Z
Z
∂u
∂u
∂u
µ (nx
+ ny
+ nz )dS + ρbx dV
∂x
∂y
∂z
S
V
(9.1)
diskretoinnista. Pintaintegraalit voidaan hajottaa summaksi laskentatilavuuden kaikkien seinien yli
X
d(ρu)i X
+ (ρuV~ · ~nS)j + (pnx S)j =
dt
S
S
X
∂u
∂u
∂u
+ ny
+ nz )j + Vi (ρbx )i
Sj µj (nx
∂x
∂y
∂z
S
Vi
(9.2)
missä Vi on kopin tilavuus, Sj seinämän pinta-ala ja ~n = nx~i + ny~j + nz~k pinnan
yksikkönormaali. Summaus tapahtuu kopin kaikkien pintojen yli. On huomattava,
että summauksessa on aina ’+’-merkki. Karteesisessa tapauksessa lausekkeeseen tuli aina vuoarvojen erotus. Nyt negatiivisen suunnan hoitaa pinnan yksikkönormaali,
joka osoittaa aina tilavuudesta ulospäin (kuva 9.5). Yhtälö voidaan kirjoittaa kopin
pinnoilla olevan kitkattoman vuon Fˆ ja kitkallisen vuon Fˆv avulla muotoon
Vi
X
d(ρu)i
=−
Sj (Fˆ − Fˆv )j + Vi (ρbx )i
dt
S
(9.3)
missä kitkaton osuus vuosta on
S Fˆ = SρuV~ · ~n + Sx p = mu
˙ + Snx p
(9.4)
ja massavirta pinnan läpi m
˙ = SρV~ · ~n = Sρ¯
u. Näin määritelty suure
u¯ = ~n · V~ = nx u + ny v + nz w
(9.5)
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
190
on skaalattu kontravariantti nopeus eli nopeuden komponentti kopin pintaa vasten
kohtisuorassa suunnassa. Suuretta nimitetään myös konvektionopeudeksi. Yhtälöstä
(9.5) saatava nopeus on keskeinen virtausyhtälöiden ratkaisussa. Kaikissa yhtälöissä kaikilla pinnoilla pätee sama yhteys (9.5) konvektionopeudelle. Periaatteessa painekorjauksessa korjataan juuri tätä nopeutta, vaikka itse korjaus voidaan välillisesti
kohdistaa suoraan karteesisiin nopeuskomponentteihin. Samaa nopeutta käytetään
myös implisiittisessä vaiheessa yhtälön kertoimien laskentaan. Massataseyhtälössä käytetään niinikään samaa nopeutta, johon analogisesti karteesisen hilan ratkaisun kanssa on lisättävä paineesta riippuva vaimennustermi. Nopeutta u¯ käytettäessä
konvektiotermin käsittely säilyy muodollisesti samana kuin karteesisessa tapauksessakin. Yllä olevissa yhtälöissä (9.1)-(9.5) on oleellista, että ne pätevät kaikenmuotoisille kontrollitilavuuksille, joiden pintojen voidaan katsoa koostuvan tasoista. Summaus yhtälössä (9.3) ulotetaan vain kaikkien tilavuuden pintojen yli. Joskus
taso-käsitettä on laajennettava. Esimerkiksi heksaedreillä pinnat ovat topologialtaan
nelikulmioita, jotka yleisessä tapauksessa eivät ole tasoja. Ne voidaan kuitenkin jakaa lävistäjällään kahdeksi kolmioksi, jotka ovat tasoja. Siten tavallinen rakenteellinen hilakin kolmidimensioisessa tapauksessa tavallaan perustuu vuon laskentaan
kolmioiden läpi.
Painetermi yllä lausuttiin pinta-alavektorin
~ = Sx~i + Sy~j + Sz~k = S(nx~i + ny~j + nz~k)
S
(9.6)
avulla kahdella tavalla, joista ehkä laskennallisesti selkeämpi on
Snx p
Tällöin pinta-alalla on selkeästi määritelty itseisarvo S, jolla voidaan ohjelmassa
kertoa koko vuotermi. Tällöin kuluu yksi muistipaikka hukkaan, koska tarvitaan
sekä pinnan normaali ~n että skalaari S. Tällä ei ole kuitenkaan suurta merkitystä.
Koska koppia kohden on rakenteellisella hilalla kolme pintaa, saadaan tällöin 12
pintasuuretta ja kopin tilavuus Vi eli yhteensä 13 talletettavaa geometrista suuretta
laskentatilavuutta kohden. Muistitilaa voidaan säästää laskenta-ajan kustannuksella
tallettamalla vain kopin kärkien koordinaatit ja laskemalla geometriset suureet uudestaan joka kierroksella. Tämä tapa on yleisesti käytetty rakenteettomalla hilalla.
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
191
Kitkaton vuo y-suuntaiselle liikemäärälle on
S Fˆ = Sρv V~ · ~n + Sy p = mv
˙ + Sny p
(9.7)
Ero x-suuntaiseen vuohon näkyy konvektiotermissä ja painegradientissa. Skalaarisuureilla φ vuo on muotoa mφ.
˙ Erityisesti käyräviivaisella hilalla, missä massavirran m
˙ laskeminen on hiukan monimutkaisempaa kuin karteesisessa tapauksessa,
massavirta on hyödyllinen käsite. Sen avulla saadaan kaikkien yhtälöiden vuot samaan muotoon. Kuten karteesisen tapauksen yhteydessä tuotiin esille, massavirrassa voidaan käyttää paineesta riippuvaa vaimennustermiä, mutta se ei ole välttämätöntä muualla kuin massataseessa.
Diffuusiovuon laskenta on hiukan monimutkaisempaa kuin karteesisessa tapauksessa. Kokoonpuristumattomassa tapauksessa x-suuntaisen liikemäärän diffuusiovuo on
∂u
∂u
∂u
+ ny
+ nz )
(9.8)
∂x
∂y
∂z
Jotta yllä olevaan muotoon päästään on lisäksi oletettava viskositeetti vakioksi.
S Fˆv = Sµ(nx
Yleisessä tapauksessa yhtälössä (1.16) diffuusiovuo on monimutkaisempi, mutta
oleellista on vain se, että diffuusiovuota varten tarvitaan nopeuden derivaatat laskentakopin seinällä. Nämä voidaan laskea keskiarvona kopin keskellä olevista derivaattojen arvoista, kuten Ferziger-Pericissä on tehty. Tämä tapa johtaa laaja-alaisiin
laskentamolekyyleihin diffuusiovuon osalta, mikä on todettu haitalliseksi mm. konvergenssin kannalta. Kuten jo peruskurssilla oli esillä, kompaktimpaan esitysmuotoon päästään laskemalla derivaatta suoraan kopin seinälle. Tämä voidaan tehdä soveltamalla Gaussin lausetta limitetylle tilavuudelle Vi+1/2 , joka riittävällä tarkkuudella voidaan laskea keskiarvona tilavuuksista Vi ja Vi+1 . Gaussin lauseen avulla
Z
Vi +1/2
∂φ
∂φ
dV ≈ Vi+1/2
∂x
∂x
=
i+1/2
Z
S
φ~i · ~ndS ≈
X
Snx φ
(9.9)
S
missä summaus tapahtuu limitetyn aputilavuuden seinien yli. Yhtälöstä (9.9) saadaan
∂φ
∂x
i+1/2
≈
1
Vi+1/2
X
Snx φ
(9.10)
S
Tätä yhtälöä sovellettaessa tarvitaan geometrista tietoa limitetylle kopille. Tämä
voidaan ottaa keskiarvona rinnakkaisista kopeista. Esimerkiksi kuvan 9.6 tilanteessa
tarvitaan pinta-alat ja pinnan normaalit pinnoilla (i, j), (i+1, j) ja (i+1/2, j ±1/2).
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
192
i+1,j+1
i,j+1
i,j
i+1/2,j
i+1,j
Kuva 9.6: Laskettaessa derivaattaa pinnalla i + 1/2 sovelletaan Gaussin lausetta limitetylle aputilavuudelle. Pintaintegraalissa tarvitaan suureiden arvot ristillä merkityissä kohdissa.
Ratkaistavat suureet tunnetaan noodipisteissä (ympyrät) ja geometriaan liittyvät pintasuureet laskentakopin pinnoilla (ehyt viiva).
Esimerkiksi pinta-ala voidaan laskea seuraavasti olemassa olevasta geometrisesta
tiedosta:
1
Si+1/2,j+1/2 = (Si,j+1/2 + Si+1,j+1/2 )
2
(9.11)
Vastaavia yhteyksiä voidaan käyttää myös pinnan normaalin komponenteille. Suureen φ arvo tiedetään hilapisteissä. Limitetyn kopin kaksi pintaa kulkee pisteiden
(i, j), (i + 1, j) kautta, joten esimerkiksi nopeudet näissä pisteissä tunnetaan. Pinnoilla (i + 1/2, j ± 1/2) ratkaistavat suureet on laskettava keskiarvona pisteiden
(i, j), (i + 1, j), (i, j + 1) ja (i + 1, j + 1) arvoista (kuva 9.6). Kaksidimensioisessa
tapauksessa derivaatta lasketaan tällöin kuuden ja kolmidimensioisessa tapauksessa 18 hilapisteen avulla. Kokonaisuudessaan laskentamolekyyliin (diffuusiovoiden
taseeseen) tulee yhdeksän (27) noodia. Karteesisella hilalla selvittiin viiden (seitsemän) laskentakopin arvoilla. Laskentamolekyylin koko vaikuttaa ainakin konvergenssiin. Jos derivaatat laskettaisiin hilapisteissä eikä pinnalla ja sitten keskiarvotettaisiin kopin pinnoille, laskentamolekyyleistä tulisi vieläkin laajempia.
Jos yhtälöä (9.10) sovelletaan suorakulmaiselle, esimerkiksi karteesiselle las-
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
193
6
5
7
8
6
7
5
6
7
8
2
1
4
2
1
2
3
3
3
5
8
4
1
4
Kuva 9.7: Tiiliskivimäisellä laskentakopilla voi olla degeneroituneita pintoja, jotka kontrollitilavuusmenetelmää käytettäessä eivät pilaa ratkaisua.
kentahilalle, diffuusiovuoksi saataisiin u-nopeudelle
ui+1 − ui
Fˆv,i+1/2 = (Sµ)i+1/2
∆xi+1/2
(9.12)
missä ∆xi+1/2 on koppien Vi,j ja Vi+1,j keskipisteiden etäisyys. Suorakulmaisen hilan etu on tässä tapauksessa siinä, että ristikkäistermit putoavat pois. Implisiittinen
vaihe voidaan diffuusiovuolla rakentaa siten, että ’väli-ilmansuunnat’ pudotetaan
pois. Tämä tarkoittaa sitä, että implisiittisessä vaiheessa approksimoidaan diffuusiovuota lausekkeella (9.12) vaikka se eksplisiittisessä vaiheessa (residuaalin laskennassa) lasketaankin täydellisempänä. Kuten peruskurssilla esitettiin, diffuusiovuon
laskentaan liittyy myös tarkkuuskysymyksiä silloin kun hila on epätasavälinen. Monidimensioisessa tapauksessa tämä vielä korostuu, koska hila voi olla myös muodoltaan vääristynyt ja laskentakopeilla voi olla degeneroituneita pintoja kuten kuvassa 9.7. Tähän epätarkkuuteen on viime vuosina kiinnitetty enemmän huomiota,
mutta peruskysymykset ovat vielä ratkaisematta. Ferziger-Pericissä pohditaan diffuusion tarkempaa laskentaa, mutta tämänhetkinen käsitys on, etteivät kyseiset keinot ole tarpeellisia eivätkä edes paranna asiaa ongelmatilanteissa. Paras keino on
pyrkiä käyttämään mahdollisimman tasaisia laskentahiloja ja välttää nopeaa koppikoon kasvua.
Yhtälössä (9.3) on vielä lähdetermi (Vi ρbx )i . Tämä voidaan lausua noodin i
suureiden avulla eikä se yleensä aiheuta ongelmia. Poikkeuksena on ehkä nostetermi, joka tietyissä tilanteissa saattaa vaatia erikoiskäsittelyä, jotta laskenta konvergoisi. Lähdetermi linearisoidaan aina siten, että lävistäjäalkio implisiittisen vaiheen kerroinmatriisissa kasvaa. Ferziger-Pericissä käsitellään myös paine lähdeterminä, missä ei ole mitään järkeä. Ensimmäisessä F-P:n esittämässä tavassa tosin
päädytään juuri edellä esitettyyn paineen laskentaan. Toisessakin tavassa käy täs-
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
194
mälleen samalla tavoin, jos paineen derivaatat lasketaan Gaussin lauseen avulla.
Jos ne lasketaan jollain muulla tavoin päädytään liikemääräyhtälön diskretoinnissa
epäkonservatiiviseen muotoon. Paras tapa on siis käsitellä paine pintaintegraalin alla vuoterminä eikä keinotekoisena lähdeterminä. Lähdetermiajattelu on pesiytynyt
kokoonpuristumattoman virtausratkaisun maailmaan tarpeesta esittää kaikki yhtälöt
samalla malliyhtälöllä (1.3).
Liikemääräyhtälö muissa suunnissa saadaan samalla tavoin kuin yllä x-suuntainen
liikemääräyhtälökin. Nopeuskomponentti ja pinnan normaalin komponentti paineen
kertojana on korvattava kyseisillä suureilla ui ja nxi . Myös skalaariyhtälöt voidaan
käsitellä samalla tavoin jättämällä painetermi pois yhtälöstä (9.4). Energiayhtälön
tapauksessa taas joudutaan lisäämään vuotermiin paine, jolloin tosiasiallisesti saadaan entalpia vuotermiin laskettaessa sisäenergialle kirjoitettua yhtälöä. Näiden termien diskretointi tapahtuu samalla tavoin kuin edellä on esitetty liikemääräyhtälölle. Yhtälöiden (esimerkkinä x-suuntainen liikemääräyhtälö) ratkaisu voidaan kokonaisuudessaan esittää nyt seuraavasti:
1. Lasketaan koppien pinnoilla konvektionopeus. Esimerkiksi pinnalla i + 1/2
ui+1 + ui
vi+1 + vi
wi+1 + wi
u¯i+1/2 = nx,i+1/2
+ ny,i+1/2
+ nz,i+1/2
(9.13)
2
2
2
Nopeudet pinnalla voidaan siis laskea keskiarvona hilapistearvoista ja vaimennustermiä ei tarvita.
2. Lasketaan kitkaton vuo yhtälöstä
Fˆ = (ρ¯
u)i+1/2 ui+1/2 + (nx p)i+1/2
(9.14)
Tässä tiheys ja paine voidaan laskea keskiarvoina hilapistearvoista, konvektionopeus saadaan yhtälöstä (9.13) ja konvektoituva nopeus ui+1/2 MUSCLkaavasta. Implementoinnissa kannattaa käyttää MAX-funktiota. Vuon laskennassa on huomattava, että ne lasketaan kaikille pinnoille ja määritellään positiivisiksi, kun vuo on nousevan indeksin suuntaan. Tällöin merkki on otettava
residuaalin laskennassa huomioon. Yhtälössä (9.3) vuon merkki määräytyi
muodollisesti pinta-alavektorin suunnan mukaan.
3. Lasketaan kitkallinen vuo yhtälöstä (9.8), lisätään se vuon lausekkeeseen ja
kerrotaan koko vuon lauseke pinta-alalla Si+1/2 . Käytännön laskennassa kannattaa laskea kitkallinen ja kitkaton vuo omassa aliohjelmassaan ja summata
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
195
samaan muistipaikkaan. Vuot lasketaan ensin esimerkiksi i-suuntaa vastaan
kohtisuorassa suunnassa, sen jälkeen j-suuntaa ja lopuksi k-suuntaa vasten
kohtisuorassa suunnassa.
4. Jokaisen suunnan jälkeen vuoerotukset koppien pinnoilla kyseisessä suunnassa summataan residuaaliin
Riu = −
X
S
Sj (Fˆ − Fˆv )j
(9.15)
5. Lisätään residuaaliin mahdollinen lähdetermi.
6. Implisiittistä vaihetta varten linearisoidaan vuot kopin rajapinnoilla käyttäen
ensimmäisen kertaluvun approksimaatiota konvektiotermeille
n+1
n
Fˆi+1/2
= Fˆi+1/2
+
n
∂ Fˆi+1/2
n
∆u = Fˆi+1/2
+ [max(m
˙ i+1/2 , 0) + (Sµ/∆ξ)i+1/2]∆ui
∂u
− [max(−m
˙ i+1/2 , 0) + (Sµ/∆ξ)i+1/2 ]∆ui+1(9.16)
missä on käytetty diffuusiolle yksinkertaistettua linearisointia (9.12). Rinnakkaisten hilapisteiden välistä etäisyyttä i-suunnassa on merkitty ∆ξ:llä. Muissa
suunnissa tehdään vastaava linearisointi.
7. Suorittamalla linearisoinnit ja keräämällä implisiittisen vaiheen kertoimet kasaan saadaan
ai,i−1 ≡ AW,i =
ai,i+1 ≡ AE,i =
ai,i−imax ≡ AS,i =
ai,i+imax ≡ AW,i =
aii ≡ AP,i =
+
+
=
Sµ
− max(m
˙ i−1/2 , 0) −
∆ξ i−1/2
Sµ
− max(−m
˙ i+1/2 , 0) −
∆ξ i+1/2
Sµ
− max(m
˙ j−1/2 , 0) −
∆η j−1/2
Sµ
− max(−m
˙ j+1/2 , 0) −
∆η j+1/2
Vi ρi
+ max(m
˙ i+1/2 , 0) + max(−m
˙ i−1/2 , 0)
∆t
max(m
˙
, 0) + max(−m
˙ j−1/2 , 0)
j+1/2 Sµ
Sµ
Sµ
Sµ
+
+
+
∆ξ i−1/2
∆ξ i+1/2
∆η j−1/2
∆η j+1/2
Vi ρi
− AW,i − AE,i − AN,i − AS,i
(9.17)
∆t
missä ∆η on koppien keskipisteiden etäisyys j-suunnassa ja lävistäjäalkio AP
on jälleen syytä laskea muiden kertoimien avulla, jotta Scarboroughin kriteeri
täyttyisi.
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
196
8. Suoritetaan implisiittinen vaihe ja päivitetään nopeudet.
Verrattaessa nyt residuaalin laskentaa karteesisen hilan tapaukseen ja yllä olevaa
yhtälöä yhtälöön (6.13) havaitaan menetelmän oleellisilta osiltaan pysyneen samana. Muutosta on tullut konvektionopeuden laskentaan, paine on kerrottava pinnan
komponentilla nxi ja kitkatermi on monimutkaistunut. Implisiittinen vaihe on muodollisestikin ennallaan, kun kitkatermin ∆xi korvattiin yhtälössä (9.17) koppien
keskipisteiden etäisyyksillä. Tässä näkyy kontrollitilavuusmenetelmän yksinkertaisuus rakenteellisessa hilassa käytettäessä karteesisia nopeuskomponentteja. Oikeastaan mikään oleellinen ei muutu monimutkaisemmaksi, vaan pikemminkin yksinkertaistuu. Karteesisella hilalla vuo jouduttiin määrittelemään erilaiseksi x- ja ysuunnissa. Nyt selvitään muodollisesti yhdellä ja samalla lausekkeella. Ero vuohon
tulee geometriatietojen kautta. Voidaan paradoksaalisesti todeta, että laskentarutiinit lyhenevät, kun yleinen käyräviivainen laskentahila on käytössä. Tavallaan siis
karteesinenkin laskenta kannattaa tehdä niin. Todellisuudessa geometrian käsittely
toki monimutkaistaa tilannetta esimerkiksi syöttötietojen vuoksi, mutta ei varsinaisten laskentarutiinien osalta.
Kontrollitilavuusmenetelmä säilyy myös muodollisesti ennallaan sovellettaessa sitä rakenteettomille hiloille. Tästä menettelytavasta Ferziger-Peric käyttää Patankarin käyttöönottamaa nimitystä ’kontrollitilavuusperusteinen elementtimenetelmä’, missä elementtimenetelmä viittaa enemmän rakenteettomaan hilaan kuin itse yhtälöiden diskretointiin. Yleensä puhutaan vain rakenteettoman hilan menetelmistä. Kaupallisiin ohjelmiin on viime vuosina tullut perinteisten rinnalle ’UNS’versiot (Unstructured Navier-Stokes), jolla viitataan rakenteettomaan hilaan. Yleisin
tapa laskea rakenteettomalla hilalla on kärkipisteisiin perustuva. Syy tähän on hämärän peitossa, koska myös rakenteettomalla hilalla ratkaistava suure voidaan sijoittaa laskentatilavuuden keskelle. Eräissä kaupallisissa ohjelmissa käytetään keskipistesijaintia. Kärkipisteen ympärille kontrollitilavuus voidaan määritellä useallakin tavalla, joista kuvan 9.8 esittämä on yleisin. Vuot joudutaan laskemaan jokaiselle kontrollitilavuuden pinnan osalle erikseen, joten kuvan 9.8 tapauksessa on
laskettava 10 kappaletta vuotermejä. Ne on summattava samalla kertaa pisteen P
ja pisteiden Ni residuaaleihin. Implisiittisen vaiheen kertoimet voidaan laskea samalla tavoin kuin edellä, mutta matriisista ei tule nauhamatriisia, mikä hankaloit-
9.4. KONTROLLITILAVUUSMENETELMÄ KÄYRÄVIIVAISELLA HILALLA
197
N3
Kolmio elementit
Kontrolli tilavuus
c4
c5
N2
c3
c6
N4
c2
c7
P
c1
c8
c9
N5
c1 0
N1
Kuva 9.8: Rakenteettomalla hilalla kontrollitilavuus voidaan asettaa esimerkiksi kolmioiden kärkipisteiden ympärille.
taa sen ratkaisemista. Mikäli käytettäisiin keskeisdifferenssiä vastaavaa menettelyä,
voitaisiin vuon laskennassa tarvittavat pinta-arvot saada lineaarisella interpoloinnilla kärkipisteiden tunnetuista arvoista. Nykyisin lienee yleisempää käyttää tässäkin
yleistettyä MUSCL-interpolointia, jossa pinnalla olevat arvot saadaan käyttämällä
noodipistearvoja sekä niiden avulla laskettuja gradientteja. Painottamalla gradientteja sopivasti ja käyttäen pinnan etäisyyttä noodiarvoista, saadaan MUSCL-kaavaa
vastaava yhteys vektorimuodossa. Myös vuon rajoittaminen on mahdollista tällä
tavoin. Diffuusiovuon laskenta voidaan hoitaa samalla tavoin kuin rakenteellisessa tapauksessa eikä sen laskenta oikeastaan ole rakenteettomalla hilalla monimutkaisempaa. Rakenteettomalla hilalla saadaan laaja-alaisempia laskentamolekyylejä
kuin rakenteellisella, mikä vaikuttaa konvergenssiin ja ilmeisesti ainakin joissakin
tapauksissa myös tuloksen tasaisuuteen.
9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA
198
9.5 Painekorjaus käyräviivaisella hilalla
Painekorjausyhtälön tarkka johto veisi täydempään matriisiin kuin karteesisessa tapauksessa. Mikäli hilaviivojen välinen kulma ei poikkea liiaksi kohtisuorasta suunnasta, voidaan käyttää samaa painekorjausyhtälöä kuin karteesisessa tapauksessa.
Poikkeama voi olla jopa 45◦ ja ilmeisesti paikallisesti suurempikin. Poikkeama saattaa johtaa alirelaksaatiokertoimen αP pienenemiseen, mutta tähän vaikuttavat monet muutkin tekijät.
Painekorjausyhtälön johtoa käyräviivaisessa tapauksessa voidaan pohtia monesta lähtökohdasta. Oleellinen asia on havainto, että pintaa vasten kohtisuorassa suunnassa toteutuu samanlainen nopeuden ja painegradientin välinen kytkentä kuin karteesisella hilalla. Gaussin lauseen avulla voidaan liikemääräyhtälöstä saada seuraava muoto nopeuskorjaukselle x-suunnassa
u′i = −
Vi ∂p
AP,i ∂x
(9.18)
Ottamalla tästä keskiarvo rinnakkaisen laskentatilavuuden kanssa saadaan approksimaatio nopeuskorjaukselle seinällä i + 1/2. Keskiarvossa muutetaan paineen xsuuntaisten derivaattojen tilalle paineen derivaatta kopin pinnalla
Vi
u′i+ 1 = − ¯
2
AP,i+ 1
2
∂p
∂x
!
(9.19)
i+ 21
Stabiilein laskentatapa kertoimelle AP on
1
A¯P,i+ 1
2
1
=
2
1
1
+
AP,i
AP,i+1
!
(9.20)
mutta säännöllisillä hiloilla kurssikoodissa käytetty keskiarvokin on riittävä. Ottamalla pistetulo yhtälön (9.19) nopeuskorjausvektorin ja pinnan normaalin ~ni+ 1 vä2
lillä saadaan kohtisuoran nopeuden korjaukselle
u¯′i+ 1
2
Vi+ 1
=−¯ 2
1
A
P,i+ 2
∂p
∂n
!
(9.21)
i+ 12
eli nopeuskorjaus riippuu kohtisuorasta suunnassa olevasta painegradientista, kuten
intuitiivisesti voi päätelläkin. Yhtälön (9.19) paineriippuvuus voidaan laskea tarkasti, mutta tällöin saadaan monimutkaisempi Poisson-yhtälö. Yksinkertaisin tapa
9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA
199
on olettaa hila suorakulmaiseksi, jolloin päädytään muodollisesti samaan yhteyteen
kuin karteesisella hilalla
Si+ 1
u¯′i+ 1 = − ¯ 2 (p′i+1 − p′i )
2
AP,i+ 1
(9.22)
2
Tehdystä approksimaatiosta voidaan päätellä, ettei käyräviivaisuus sinänsä hankaloita asioita, vaan poikkeama suorakulmaisuudesta. Mitä enemmän hilaviivat poikkeavat suorakulmaisuudesta, sitä huonompi approksimaatio yhtälö 9.22 on. Tämän
vuoksi relaksaatiokertoimia on pienennettävä ja myös nopeuden ralaksoinnilla painekorjauksen yhteydessä on merkitystä. Relaksaatiokertoimista erityisesti αP :n arvoa voidaan nostaa tekemällä jokaisella laskentakierroksella useita painekorjauksia.
Myös differentiaaliyhtälöt voidaan muuntaa hilaviivoja mukailevaan koordinaatistoon. Tarkastellaan kitkatonta osuutta, jolloin saadaan seuraavat yhtälöt
ˆ
∂ Fˆ ∂ G
∂ Uˆ
+
+
=0
∂t
∂ξ
∂η
(9.23)
ˆ = U/J, Fˆ = (ξx F + ξy G)/J ja G
ˆ = (ηx F + ηy G)/J ja J on muunnoksen
missä U
Jacobin matriisi (kts. peruskurssi). Yhtälöt vastaavat kontrollitilavuusmenetelmällä diskretoituja yhtälöitä, mutta ovat differentiaalimuodossa. Kopin pintaa vasten
kohtisuora nopeus on muunnoskertoimien avulla
ξx u + ξy v
u¯ = q
ξx2 + ξy2
(9.24)
Kertomalla yhtälöryhmä (9.23) diskretoidun yhtälön matriisia (2.69) vastaavalla
muunnosmatriisilla




T =
1
0
0
0
0 cos θ sin θ 0
0 − sin θ cos θ 0
0
0
0
1
jossa pinnan normaalin komponentteja vastaa
q





(9.25)
cos θ = ξx / ξx2 + ξy2
q
sin θ = ξy / ξx2 + ξy2
(9.26)
saadaan liikemäärän vuoksi ξ-suunnassa
F¯ u¯ =
q
ξx2 + ξy2
J
(ρ¯
uu¯ + p)
(9.27)
9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA
200
ja pinnan suuntaiselle nopeuskomponentille
saadaan vuoksi
−ξy u + ξx v
v¯ = q
ξx2 + ξy2
F¯ v¯ =
Kerroin
(9.28)
q
ξx2 + ξy2
ρ¯
uv¯
(9.29)
J
ξx2 + ξy2 /J yhtälöissä (9.27) ja (9.29) vastaa kopin pinta-alaa. Näissä yh-
q
teyksissä on oleellista se, että pyöräyttämällä yleiset yhtälöt tai vuot kopin pinnalla suorakulmaiseen koordinaatistoon, joka on kohtisuorassa kopin pintaa vasten,
saadaan muodollisesti samankaltaiset yhtälöt kuin karteesisessa koordinaatistossa
saataisiin. Tätä ominaisuutta voidaan käyttää hyväksi myös vuon laskennassa ja
implisiittisessä vaiheessa, kuten luvussa 2 esitettiin. Pyöritysmatriisilla ei ole sinänsä merkitystä painekorjauksen yhteydessä, mutta kokoonpuristuvalla virtauksella
laskenta voidaan implementoida pyöritysmatriisin T avulla aina näennäisesti karteesisessa muodossa.
Kopin pintaa vasten kohtisuorassa suunnassa saadaan siis kitkattomalta osaltaan karteesisen muotoinen yhtälö. Ottamalla kitkatermeistä huomioon vain yhtälöä (9.12) vastaava osuus, saadaan kohtisuoralle liikemääräkomponentille karteesista yhtälöä vastaava yhtälö, jossa nopeuksina esiintyvät määritellyn pintaa vasten
kohtisuorassa suunnassa olevan koordinaatiston nopeuskomponentit u¯ ja v¯. Yhtälön
diskretoinnissa päädytään tällöin samoihin kertoimiin kuin nopeuskomponentteja u
ja v vastaavissa liikemääräyhtälöissäkin. Jos sovelletaan SIMPLE-menetelmää, saadaan kohtisuoralle liikemääräkomponentille yhtälön 9.22 mukainen eli aivan sama
yhtälö kuin karteesisessakin tapauksessa saatiin. Yhtälössä 9.22 ei tehdä kuin yksi
karteesista yhtälöä suurempi approksimaatio. Tämä nähdään kuvasta 9.9, josta havaitaan paineiden pi+1 ja pi approksimoivan sitä huonommin kohtisuoran suunnan
tilavuuden Vi+1/2 pintapaineita, mitä suurempi on hilaviivojen välinen kulma. Parempi approksimaatio vaatisi väli-ilmansuuntapaineiden mukaanottoa. Toinen tapa
on korjata ensimmäisen painekorjauksen tulosta iteratiivisesti (kts. Ferziger-Peric).
Käyttämällä alkuperäistä painekorjausyhtälöä, joudutaan alirelaksoimaan ratkaisua
enemmän, mutta toisaalta laskenta-aikaa säästyy. Sijoittamalla yhtälö (9.22) massataseeseen
−
(S 2 ρ)i+1/2 ′
(S 2 ρ)i−1/2 ′
(S 2 ρ)j+1/2 ′
(S 2 ρ)j−1/2 ′
pi+1 −
pi−1 −
pj+1 −
p
AP,i+1/2
AP,i−1/2
AP,j+1/2
AP,j−1/2 j−1
9.5. PAINEKORJAUS KÄYRÄVIIVAISELLA HILALLA
i + 1/2
201
pi + 1
pi
Kuva 9.9: Pintaa vasten kohtisuoran suunnan liikemääräyhtälön diskretointi.
(S 2 ρ)i−1/2 (S 2 ρ)i+1/2 (S 2 ρ)j+1/2 (S 2 ρ)j−1/2 ′
+
+
+
+
pi = −∆m
˙ ∗i (9.30)
AP,i−1/2
AP,i+1/2
AP,j+1/2
AP,j−1/2
eli muodollisesti täsmälleen sama yhtälö (6.25) kuin karteesisessa tapauksessa. Tässäkin kertoimet AP pinnoilla lasketaan keskiarvoina liikemääräyhtälölle kopin keskelle yhtälöstä (9.17) lasketuista kertoimista.
Massataseen ∆m
˙ ∗i laskennassa tarvitaan numeerista paineesta riippuvaa vaimennusta. Kun tiedostetaan Rhie ja Chow -termin luonne vaimentavaksi, on täysin
turhaa ryhtyä approksimoimaan monimutkaisella tavalla sen gradientteja. Riittää,
kun käyttää samaa lauseketta kuin karteesisella hilalla.
m
˙ ∗i+1/2
= Si+1/2
(
(Sρ)i+1/2 r
1
[pi+1/2 − pli+1/2 ]
[(ρ¯
u∗ )i+1 + (ρ¯
u ∗ )i ] − C
2
2AP,i+1/2
)
(9.31)
Lauseke poikkeaa karteesisesta vain konvektionopeuden osalta, jossa käytetään pintaa vasten kohtisuoraa komponenttia u¯. Kun painekorjaukset on laskettu, voidaan
korjata konvektionopeuksia yhtälöstä (9.22). Konvektionopeuksien korjaamisen jälkeen massatase toteutuu eksaktisti, jos nopeuskorjauksia ei alirelaksoida ja painekorjausyhtälö on ratkaistu tarkasti. Tämän jälkeen voidaan ratkaista muut yhtälöt.
Vielä yksinkertaisempaa on korjata suoraan karteesisia nopeuksia yhtälöstä
AP,i u′i ≈ −(Snxi )i+1/2 p′i+1/2 +(Snxi )i−1/2 p′i−1/2 −(Snxi )j+1/2 p′j+1/2 +(Snxi )j−1/2 p′j−1/2
(9.32)
9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT
UL
202
Iteraatio lkm
800
600
Yksi korj.
400
200
Kaksi korjausta
0
0,0 0,1
0,2
0,3
0,4 0,5
αp
Kuva 9.10: Konvergenssi huononee jos koko laskenta-alue koostuu kopeista, joissa sivujen
välinen kulma on 45◦ . Tekemällä kaksi painekorjausta tilanne korjaantuu.
missä painekorjaukset koppien pinnoilla lasketaan keskiarvoina hilapisteiden painekorjauksista. Jotta yhtälöä voidaan soveltaa, on myös reunoilla (=haamukopeissa)
tunnettava painekorjaukset. Eräs mahdollisuus on asettaa nopeuskorjaus nollaksi
laskenta-alueen rajalla.
Edellä olevasta voidaan havaita, että painekorjausalgoritmi säilyy käyräviivaisella hilalla lähes samanmuotoisena kuin karteesisessa tapauksessa. Suurimmat erot
ovat suureiden määrittelyissä. Jos hila on suurelta osin laskenta-alueessa vääristynyt, konvergenssi huononee ja on käytettävä hyvin pientä alirelaksaatiokerrointa.
Tällainen esimerkki on kuvassa 9.10.
9.6 Ohutkerrosapproksimaatio ja kiinteät pinnat
Kiinteillä pinnoilla voidaan käyttää yhtälöä (6.42) pintaa vastaan kohtisuorassa suunnassa olevien derivaattojen laskemiseen. Jotta yhtälö olisi tarkka, tulisi hilaviivojen
olla kohtisuorassa seiniä vastaan. Hila yleensä pyritään luomaan siten, että kohtisuoruus toteutuu ainakin suurimmassa osassa laskenta-aluetta. Kohtisuoruus vaikuttaa
myös turbulenssimallien laskentaan, jossa rakenteellisella hilalla on yksinkertaista
edetä pinnalta ulospäin koppirivi kerrallaan. Yhtälön (6.42) derivaatan käyttö edellyttää yksinkertaistettua muotoa kitkalliselle vuolle pinnalla. Seuraavassa esitettävää yksinkertaistettua muotoa voidaan myös käyttää itse laskenta-alueen sisällä eikä se aiheuta suurta epätarkkuutta, mikäli probleemaan liittyvä globaali Reynoldsin
luku on alueella Re > 100.
Approksimaatiossa yhtälössä (9.10) otetaan vain i-suuntaa vasten kohtisuorat
9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT
203
pinnat mukaan
∂φ
∂x
i+1/2
≈
1
Vi+1/2
[(Snx φ)i+1 − (Snx φ)i ]
(9.33)
Tämä on hyvä approksimaatio, jos i–suunnan pinnat ovat selvästi suuremmat kuin
pinnat muissa suunnissa. Korvaamalla noodipisteissä olevat pinnat niiden puolivälissä sijaitsevalla laskentatilavuuden pinnalla saadaan approksimaatiivisesti
∂φ
∂x
i+1/2
≈
nx,i+1/2
(Snx )i+1/2
[φi+1 − φi ] =
(φi+1 − φi )
Vi+1/2
∆ξi+1/2
(9.34)
missä ∆ξi+1/2 on koppien välinen etäisyys. Vastaavat lausekkeet saadaan derivaatoille ∂φ/∂y ja ∂φ/∂z. Korvaamalla näillä yksinkertaisilla lausekkeilla derivaatat
diffuusiovoiden yhtälöissä saadaan seuraavat approksimaatiot
µi+1/2
nx,i+1/2
u
Fˆv,i+1/2
= −
[(ui+1 − ui ) +
(¯
ui+1 − u¯i )]
∆ξi+1/2
3
ny,i+1/2
µi+1/2
v
[(vi+1 − vi ) +
Fˆv,i+1/2
= −
(¯
ui+1 − u¯i )]
∆ξi+1/2
3
µi+1/2
nz,i+1/2
w
Fˆv,i+1/2
= −
[(wi+1 − wi ) +
(¯
ui+1 − u¯i )]
∆ξi+1/2
3
(9.35)
missä kontravariantti nopeus u¯ lasketaan pintaa Si+1/2 vasten kohtisuorassa suunnassa. Vastaavat lausekkeet pätevät pinnoilla j + 1/2 ja k + 1/2, kun käytetään
niihin liittyviä geometrisia suureita ja korvataan ∆ξi+1/2 ∆ηj+1/2 :lla tai ∆ζk+1/2 :lla
riippuen suunnasta. Käytännössä lähes aina voidaan korvata monimutkaisempi diffuusiovuon laskenta yllä olevilla yhtälöillä. Perinteisesti keinoa on käytetty rajakerrostyyppisissä virtauksissa, joissa vuota ei edes tarvitse laskea kuin kiinteää pintaa
vasten kohtisuorassa suunnassa olevilla koppien pinnoilla. Tällöin approksimaatiota
nimitetään ohutkerrosapproksimaatioksi.
Kokoonpuristumattomalla virtauksella yhtälön (9.35) kontravarianttia nopeutta
sisältävä lauseke on nolla. Tällöin approksimaatio tulee hyvin yksinkertaiseksi ja samanmuotoiseksi kuin karteesisessa tapauksessa. Tätä muotoa käytetään implisiittisessä vaiheessa ja sitä voidaan soveltaa myös kiinteällä pinnalla. Kiinteällä seinällä
yhtälön (9.35) keskeisdifferenssiapproksimaatiot korvataan yhtälön (6.42) lausekkeella. Myös aiemmin esillä ollutta 1. kertaluvun approksimaatiota (6.41) voi yrittää käyttää pintavuon laskennassa.
9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT
204
• Yleisimmät rakenteellisen hilan generointitavat ovat algebrallisia tai
differentiaaliyhtälöihin perustuvia. Transfiniitti interpolointi on yleisin
algebrallinen menetelmä, elliptisiin differentiaaliyhtälöihin perustuvat
menetelmät ovat myös yleisiä. Elliptinen menetelmä voi toimia myös
hilan tasoittajana.
• Rakenteettoman hilan generointimenetelmiä ovat Delaunayn kolmiointi
ja etenevän rintaman menetelmä
• Tavanomaisella tai rakenteettomalla hilalla kannattaa käyttää vain karteesisia nopeuskomponentteja. Limitetyllä hilalla voidaan käyttää myös
kontravariantteja komponentteja, mutta yhtälöistä tulee monimutkaisempia.
• Liikemäärän taseyhtälö nopeuden u-komponentille
Vi
X
d(ρu)i
=−
Sj (Fˆ − Fˆv )j + Vi (ρbx )i
dt
S
Kitkaton osuus vuosta S Fˆ = SρuV~ · ~n + Sx p = mu
˙ + Snx p
Massavirta pinnan läpi m
˙ = SρV~ · ~n = Sρ¯
u
Konvektionopeus u¯ = ~n · V~ = nx u + ny v + nz w Kitkallinen vuo S Fˆv =
Sµ(nx ∂u
+ ny ∂u
+ nz ∂u
)
∂x
∂y
∂z
∂φ
• Derivaattojen laskenta
∂x
i+1/2
≈
1
Vi+1/2
X
S
Snx φ
9.6. OHUTKERROSAPPROKSIMAATIO JA KIINTEÄT PINNAT
∂φ
• Yksinkertaistettu derivaattojen laskenta
∂x
φi )
i+1/2
≈
205
nx,i+1/2
(φi+1 −
∆ξi+1/2
• Yksinkertaistetulla derivaatalla voidaan johtaa ohutkerrosapproksimaatio.
• Implisiittisen vaiheen kertoimet ja painekorjaus ovat yleisessä tapauksessa muodoltaan lähes samat kuin karteesisessa. Kaikille nopeuskomponenteille, mukaan lukien kopin pintaa vastaan kohtisuorassa koordinaatistossa lausutuille komponenteille, saadaan implisiittiseen vaiheeseen samat kertoimet AP .
• Massataseessa olevassa paineesta riippuvassa vaimennustermissä riittää
yksinkertaistettu muoto.
• Nopeudet voidaan korjata suoraan yhtälöistä
AP,i u′i ≈ − (Snxi )i+1/2 p′i+1/2 + (Snxi )i−1/2 p′i−1/2
− (Snxi )j+1/2 p′j+1/2 + (Snxi )j−1/2 p′j−1/2
missä paineet saadaan keskiarvoina hilapistearvoista.
• Myös massavirrat ja vastaavat nopeudet tilavuuksien seinillä voidaan
korjata.
Päivitetty 4.4.2012
206
10 Ajan suhteen tarkka laskenta
Ferziger-Peric 127-147
207
11 Turbulentin virtauksen laskenta
Ferziger-Peric sivut 247-276
208
12 Virtauslaskennassa esille tulevia
käsitteitä
12.1 Johdanto
Edellisissä luvuissa on tuotu useammassa yhteydessä esille vektorilaskennan käyttöä kontrollitilavuusmenetelmän yhteydessä. Simulointi on perustunut karteesiseen
koordinaatistoon ja tässä koordinaatistossa lausuttuihin nopeuskomponentteihin. Laskentahilan ominaisuudet, tilavuudet ja pinta-alat, saadaan vektorilaskennan avulla.
Vektorilaskenta on erittäin tehokas ja käyttökelpoinen menettely kaikessa virtauslaskentaan liittyvässä lähtien esikäsittelystä ja päätyen jälkikäsittelyyn. Tässä luvussa tuodaan esimerkinomaisesti esille eräitä virtauslaskennan keskeisiä käsitteitä,
joiden yhteydessä tai johtamisessa sovelletaan vektoreita.
Toinen virtausmekaniikassa käytetty keino ovat tensorit, joiden avulla saadaan
pitkät ja hankalat lausekkeet lausutuksi yksinkertaisemmin. Tensoreiden käyttö on
välttämätöntä monimutkaisempien turbulenssimallien yhteydessä, ja kätevää, joskaan ei välttämätöntä, kitkatermin käsittelyssä. Useimmin esille tulevat venymänopeustensori Sij ja pyörteisyystensori Ωij . Näiden laskennassa tarvitaan derivaattoja,
jotka saadaan aiemmin esitetyllä tavalla vektorianalyysiin perustuen.
12.2 Geometristen suureiden laskenta
Geometriset suureet, pinta-alavektorit ja koppien tilavuudet, voidaan laskea usealla
tavalla. Laskenta on suoritettava konsistentisti siten, että kahden tilavuuden välinen
pinta lasketaan samalla tavoin ja laskentatilavuuksien on täytettävä laskenta-alue
kokonaan ilman väliin jääviä koloja. Seuraavassa esitetään, miten geometriset suureet lasketaan TKK:ssa kehitetyssä FINFLO-ohjelmassa. FINFLO on kontrollitilavuusmenetelmää käyttävä kolmidimensioinen virtausratkaisija. Se käyttää käyrä-
12.2. GEOMETRISTEN SUUREIDEN LASKENTA
209
SDCGH
G
C
H
D
SABCD
F
SEFGH
B
E
A
SADHE
Kuva 12.1: Kolmidimensioinen heksaedrilaskentatilavuus.
viivaista rakenteellista monilohkoista hilaa. Tässä käydään läpi tilavuuksien, pintaalojen ja normaalivektoreiden laskenta-algoritmit.
Laskenta-alue on jaetaan 6-sivuisiin heksaedri-alkioihin (kuva 12.1), missä heksaedrin kuuden seinän pinnat eivät ole välttämättä tasoja. Tällaisen laskenta-alkion
tilavuuden, pinta-alojen ja pinnan normaalien määrittämisessä on oltava tarkkana,
jotta pinta-alat viereisissä laskenta-alkioissa ovat yhtäsuuret ja laskenta-alueen kokonaistilavuus on sama kuin laskenta-alkioiden tilavuuksien summa eli laskentaalkiot täyttävät koko simulointialueen.
12.2.1 Laskentatilavuuksien pinta-alavektoreiden laskeminen
Laskenta-alkion seinän pinta-alavektoreiden tulee täyttää seuraava ehto
I
S
~≈
dS
X
~j = 0
S
(12.1)
f aces
eli pinta-alavektoreiden summan täytyy olla nolla laskenta-alkiolle. Tämä ehto on
ekvivalentti peruskurssilla (luku 15) esillä olleen geometrisen säilymislain kanssa.
Kopin seinän pinta-ala ABCD kuvassa 12.1 voidaan laskea seuraavasti
~ABCD = 1 (~xAC × ~xBD )
S
2
(12.2)
tai
~ABCD = 1 [(~xAB × ~xBC ) + (~xCD × ~xDA )]
S
(12.3)
2
~ABCD summana kahden kolmion (ABC)
Viimeinen yhtälö laskee pinta-alavektorin S
ja (CDA) pinta-aloista. Yleisessä tapauksessa näiden kahden kolmion pinta-alavektorit
12.2. GEOMETRISTEN SUUREIDEN LASKENTA
210
G
C
H
D
F
P
B
E
A
Kuva 12.2: Kolmidimensioinen heksaedrin jako pyramideihin.
eivät ole saman suuntaisia. Kuitenkin kummatkin yllä olevat yhtälöt johtavat samaan tulokseen. Myös kolmioita (BCD) ja (DAB) voitaisiin käyttää pinnan vektoreiden määrittämiseksi. Yleensä kuitenkin käytetään yhtälöä (12.2), koska se vaatii vähiten laskentaa.
~ saadaan normaalivektori ja pinta-ala seuraavasti
Vektorista S
~
S
~
|S|
(12.4)
~
S = |S|
(12.5)
~n =
ja
12.2.2 Tilavuuksien laskenta
Tilavuudet voidaan laskea jakamalla heksaedri pyramideihin. Jotta tämä olisi mahdollisimman suuntariippumaton täytyy heksaedri jakaa kuuteen pyramidiin siten,
että pyramidin pohja on yksi heksaedrin sivuista ja huippu sijaitsee heksaedrin keskipisteessä. Kuvassa 12.2 näkyy esimerkki kuinka heksaedri jaetaan pyramideihin.
Kuvassa on tummennettu näistä ainoastaan kaksi. Pyramidin tilavuus saadaan laskettua ottamalla pistetulo pyramidin pohjan pinta-alavektorin ja jonkun vektorin
~x(P ) kanssa, joka lähtee pinnalta pyramidin kärkeen
1
~ABCD
VP ABCD = ~x(P ) · S
3
(12.6)
12.3. VOIMIEN JA MOMENTIN LASKENTA
211
Koska ABCD ei todennäköisesti ole tasopinta, täytyy ~x(P ) approksimoida keskiarvona
1
~x(P ) = (~xP A + ~xP B + ~xP C + ~xP D )
4
(12.7)
Käyttämällä yhtälöä (12.2) tilavuuden lausekkeeksi tulee
VP ABCD =
1
1
(~xP A +~xP B +~xP C +~xP D )·(~xAC ×~xBD ) = (~xP A +~xP B )·(~xAC ×~xBD )
24
12
(12.8)
12.2.3 Tarkkuus
Hila luetaan ohjelmaan sisään nurkkapisteinä. Pienimpien laskenta-alkioiden etäisyys saattaa olla luokkaa 10−6 m ja koko tapauksen dimensiot voivat olla esim.
luokkaa 10 m lentokoneille tai 102 m laivoille. Jos ajatellaan että hilan origo sijaitsee laivan keulassa, niin myös laivan perän alueella pitää käyttää tiheää hilaa
seinämän lähellä. Tällöin tavallinen yksinkertainen tarkkuus (7 numeroa) ei riitä,
jotta laskentatilavuuksien geometriatiedot voidaan tarkasti määrittää. Tästä johtuen
geometrian siirrossa ja laskennan aikana täytyy käyttää kaksinkertaista tarkkuutta.
Varsinaisessa virtauslaskennassa riittää, että hilan ominaisuudet (tilavuus, pinta-alat
ja normaalivektorit) ovat normaalitarkkuudella määritelty.
12.3 Voimien ja momentin laskenta
Monissa virtaustehtävissä joudutaan laskemaan kiinteisiin pintoihin vaikuttavia voimia ja momentteja. Vääntömomentin avulla voidaan laskea esimerkiksi pyörivän
virtauskoneen teho P yhteydestä
P = Tω
(12.9)
missä T on vääntömomentti ja ω on pyörimisnopeus. Vääntömomenttia varten on
laskettava yksittäisiin pinta-alkioihin kohdistuvat voimat. Seuraavassa tarkastellaan
ensin voimien laskentaa.
Usein voimat esitetään dimensiottomien kertoimien avulla. Yleensäkin dimensioton esitysmuoto kaikille suureille on virtauslaskennassa SI-yksiköissä esitettyä
parempi, koska tällöin tuloksia voidaan soveltaa laajemmalla alueella. Esimerkiksi
12.3. VOIMIEN JA MOMENTIN LASKENTA
212
CL
1111111111111111111111111
CD
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
1111111111111111111111111
α
Kuva 12.3: Lentävän kappaleen nostovoima- ja vastuskertoimet. Kappaleeseen vaikuttaville
voimille saadaan tasapainotilassa sama arvo integroitaessa liikemäärän vuot pintaa pitkin tai
jotain muuta sulkeutuvaa käyrää pitkin.
lentävän kappaleen nosto- ja vastusvoimat (kuva 12.9), FL ja FD , esitetään kertoimien CL ja CD avulla
CL
Sρ∞ u2∞
2
CD
FD =
Sρ∞ u2∞
2
FL =
(12.10)
missä S on käytetty referenssipinta-ala ja ρ∞ ja u∞ ovat vapaan virtauksen tiheys
ja nopeus. Aerodynaamisissa simuloinneissa määritetään nostovoima- ja vastuskertoimet, jotka ovat funktioita Machin ja Reynoldsin luvuista sekä kohtauskulmasta.
Kertoimien määrityksessä lasketaan kappaleeseen vaikuttavat voimat. Kohtauskulman α avulla saadaan
FL = FN cos α − FA sin α
FD = FN sin α + FA cos α
(12.11)
missä FN on normaali- ja FA aksiaalisuuntainen voima (kuva 12.4). Koordinaatisto
sijoitetaan yleensä siten, että FN ja FA ovat globaalin karteesisen koordinaatiston
akselien suuntaisia, jolloin saadaan suoraan FN = Fy ja FA = Fx . Voiman karteesisten komponenttien määritys on yksinkertaista. Pinnalla olevan kopin liikemääräyhtälön vuon komponentit ovat samat kuin kappaleeseen vaikuttavan voiman
komponentit, tosin vastakkaismerkkisinä. Koska konvektionopeus on nolla, saadaan
12.3. VOIMIEN JA MOMENTIN LASKENTA
FL
213
FN
α
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
y !!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
FD
α
FA
x
Kuva 12.4: Normaalivoima ja aksiaalivoima.
kitkattoman vuon osuudeksi Fxi = Snxi p. Kitkallisen vuon osuus saadaan soveltamalla yhtälöä (9.35) ja korvaamalla keskeisdifferenssit epäsymmetrisellä laskentamolekyylillä (6.41)
2uP
)
∆ξP
2vP
= −S(ny pw − µP
)
∆ξP
2wP
)
= −S(nz pw − µP
∆ξP
Fx = −S(nx pw − µP
Fy
Fz
(12.12)
missä on oletettu ohutkerrosapproksimaatiossa (9.35) toinen termi nollaksi kokoonpuristumattomuusoletuksen perusteella. Mikäli ρ 6= vakio on tämä termi oltava mukana ja jos pinnalla on nopeus, kuten pyörivien virtauslaitteiden tapauksessa, on
pinnan nopeus otettava huomioon sovellettaessa yhtälöä (6.42). Yhtälössä (12.12)
piste P viittaa pintaa lähinnä olevaan koppiin ja N sen yläpuolella olevaan tilavuuteen.
Liikemäärävuon käytössä voimien laskennassa on myös se kätevä piirre, että
voidaan automaattisesti ottaa huomioon esimerkiksi rajakerrosimu ja kokoonpuristuvalla virtauksella kitkavoima pintaa vasten kohtisuorassa suunnassa. Nämä tulevat mukaan liikemäärän taseeseen ja sitä kautta automaattisesti myös pintavoimien
määritykseen.
Tasapainotilan laskussa liikemäärän vuo suljetun alueen yli säilyy periaattees-
12.3. VOIMIEN JA MOMENTIN LASKENTA
_
F
214
(x, y, z)
_
R
_
r
_
t
( x0, y0, z0)
Kuva 12.5: Vääntömomentin laskenta.
sa vakiona. Siten voima voitaisiin laskea myös summaamalla liikemäärän vuot kuvaan 12.9 merkittyä kaarta pitkin. Koska ratkaistavat yhtälöt ovat säilymismuodossa, saatu voima on tasapainotilassa sama kuin pitkin pintaa integroitu. Käytännössä
tulos saattaa hiukan poiketa, koska epälineaarisia virtausyhtälöitä ei yleensä koskaan saada niin tarkasti ratkaistuksi, että tietokoneen sanan pituutta vastaava tarkkuus olisi saavutettu. Tämän vuoksi voimien laskenta kannattaa tehdä pitkin pintaa.
Vääntömomentin laskenta on hiukan hankalampaa kuin voiman ja siinä voidaan
soveltaa useita tapoja. Momentti T~ esimerkiksi virtauskoneen pyörimisakselin suhteen (kuva 12.11) voidaan laskea yhtälöstä
~ × F~
T~ = ~r1 × F~ = (~r − R)
(12.13)
missä F~ on pinta-alkioon kohdistuva voima (liikemäärän vuo). Tehtäväksi jää vek~ ja ~r määrääminen. Pinta-alkion keskipisteen koordinaatit tunnetaan ja satorien R
moin jonkin pisteen r~o , joka on pyörimisakselilla. Tällöin
~ = (x − x0 )~i + (y − y0 )~j + (z − z0 )~k
R
(12.14)
Pyörimisakselin suunta tunnetaan ja se voidaan kirjoittaa yksikkövektorin
~
~
~
~t = ωx i + ωy j + ωz k
(ωx2 + ωy2 + ωz2 )1/2
(12.15)
12.4. PAINE- JA KITKAKERROIN
215
~ · ~t ja
avulla. Tällöin vektorin ~r pituus on R
~ · ~t)~t
~r = (R
(12.16)
Jos esimerkiksi oletetaan pyörimisakseliksi x-akseli, saadaan ~r = (x − x0 )~i, minkä
jälkeen momentti on helposti laskettavissa yhtälöiden (12.13) ja (12.14) avulla.
Toinen tapa laskea virtauskoneen tehoa ja yhtälön (12.9) kautta pyörimisakseliin vaikuttavaa momenttia, perustuu energiayhtälöön. Yleensä pyörivillä koneilla
ei lasketa lämmönsiirtoa kiinteistä pinnoista. Koska kiinteällä pinnalla konvektiovuo on nolla ja oletetaan myös lämpövuo nollaksi, jää energiayhtälön vuotermistä
kiinteällä pinnalle jäljelle vain mekaanisen energian vuo. Integroimalla energiavuo
pyörivän koneen siivistön yli saadaan siis koneen nesteeseen siirtämä teho P . Mikäli tarkastelussa on lämmönsiirtyminen mukana, saadaan akseliteho vähentämällä
energiavuosta lämpövuo siivistön pinnalla.
12.4 Paine- ja kitkakerroin
Leikkausjännitys ja paine kannattaa esittää dimensiottomien suureiden kitkakerroin
Cf ja Cp avulla. Painekerroin määritellään yhtälöllä
p − p∞ =
Cp
ρ∞ u2∞
2
(12.17)
Painekerroin on siis eräänlainen dimensioton paine-ero. Sen merkitys tulosten esittämisessä on siinä, että tuloksia voidaan tällöin jossain määrin soveltaa erilaisiin
tilanteisiin. Tämä riippuu siitä ovatko virtausta kuvaavat dimensiottomat luvut riittävän lähellä toisiaan eri tilanteissa. Kun painekerroin tunnetaan, saadaan paine esimerkiksi SI-yksiköissä helposti yhtälöstä (12.9).
Kitkakerroin kuvaa leikkausjännitystä pitkin kappaleen pintaa. Kerroin muuttaa
merkkinsä virtauksen irrotessa ja sen avulla voidaan tarkasti interpoloida laskennan
ennustama irtoamiskohta. Kitkakerroin määritellään yhtälöllä
τw =
Cf
ρ∞ u2∞
2
(12.18)
missä τw on leikkausjännitys pinnalla (kuva 12.12). Leikkausjännitys voidaan laskea liikemäärävuon viskositeetista riippuvista termeistä. Kitkakerroin on yksikäsitteisesti määritelty vain kaksidimensioisessa tapauksessa. Kolmidimensioisessa ta-
12.4. PAINE- JA KITKAKERROIN
216
n
τw
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
Kuva 12.6: Kitkakerroin kuvaa leikkausjännitystä pitkin pintaa.
y
x
τ
z
Kuva 12.7: Siiven pinnalla tarkastellaan usein xy-tason suuntaista leikkausjännitystä
pauksessa saatetaan olla kiinnostuneita esimerkiksi kuvan 12.13 mukaisesta xytason suuntaisesta leikkausjännityksestä, jonka avulla on helppo todeta pysyykö virtaus siivessä kiinni. Yhtälössä (12.18) tarvittava leikkausjännitys on xy-tason suuntainen eli kohtisuorassa z-akselia vastaan ja vektoria ~k vastaan. Toisaalta leikkausjännitys on myös kohtisuorassa pinnan normaalia vastaan. Tällöin jännitys halutaan
suunnassa
~t =
~i
0
nx
~j
0
ny
~k 1 = −ny~i + nx~j
nz (12.19)
Kitkavoiman aiheuttama jännitysvektori saadaan liikemäärävoiden viskoosista osasta, ts. kun vuosta on vähennetty Eulerin yhtälöiden osuus, joksi pinnalla jää vain
paine. Haluttu leikkausjännitys saadaan yksikkösuuntavektorin ja jännitysvektorin
12.5. LIIKKUVA LASKENTAHILA
217
.
y
.
x
y
x
Kuva 12.8: Liikkuva karteesinen laskentatilavuus.
pistetulona. Kuvan 12.7 tapauksessa saadaan
τw =
−ny Fvx + nx Fvy
(n2x + n2y )1/2
(12.20)
missä Fvx ja Fvy ovat kitkallisen vuon x- ja y-komponentit.
Kitkakerroin on helppo laskea rakenteellisella hilalla, jossa yleensä on jonkinlaisia ’pääsuuntia’, joissa virtauksen irtoamista halutaan tarkastella. Esimerkiksi pyörähdyskappaleella voidaan edellä esitetyn aksiaalisuunnan lisäksi tarkastella kitkakerrointa kehän suunnassa. Rakenteettomalla hilalla kitka- ja painekerroin on esitettävä leikkaamalla kappaletta tasolla ja interpoloimalla lasketut arvot leikkauskäyrälle. Laskenta on tällöin huomattavasti monimutkaisempaa ja erityisesti kitkakertoimessa saattaa näkyä värähtelyä. Kitkakerrointakin herkempi suure on lämmönsiirtokerroin, jonka määritykseen ei tässä yhteydessä puututa.
12.5 Liikkuva laskentahila
Liikkuvalla laskentahilalla kuvataan tapauksia, joissa laskenta-alueessa tapahtuu
geometrisia muutoksia. Laskenta on siis ajasta riippuvaa. Sillä voidaan kuvata esimerkiksi siiven muodonmuutoksia ja vuorovaikutusta virtauksen kanssa tai lentokoneesta pudotettavan kappaleen aiheuttamia muutoksia virtauskentässä. Viimeksi
mainittuun tarkoitukseen Chimera-hila on erityisen sovelias. Erään erikoistapauksen muodostavat pyörivät virtauskoneet, joita voidaan laskea ajasta riippuvina käyttäen liukuvan hilan reunaehtoa tai myös tasapainotilan virtauksina.
12.5. LIIKKUVA LASKENTAHILA
218
Merkitään laskenta-alueen liikettä nopeusvektorilla ~vb = x˙~i + y˙~j + z˙~k. Jos nopeus ~vb on paikasta riippuva, laskentaverkko deformoituu ajan funktiona. Laskentatilavuuksien pintojen nopeudet vaikuttavat vain konvektiotermeihin. Ajattelemalla
esimerkiksi massatasetta, nähdään suoraan, että laskentakopin pinnan yli tapahtuva
konvektio riippuu suhteellisesta nopeudesta pinnan yli, joka on ui − x˙ i . Lähtemällä
tunnetusta yksidimensioisesta differentiaaliyhtälöstä,
∂ρ ∂ρu
+
=0
∂t
∂x
(12.21)
tämä voidaan osoittaa muodollisestikin integroimalla yhtälö ajasta riippuvien rajojen yli
Z
Z
x2 (t) ∂ρu
∂ρ
dx +
dx = 0
(12.22)
x1 (t) ∂t
x1 (t) ∂x
Toinen termi ei aiheuta ongelmia, mutta ensimmäisen yhteydessä on käytettävä
x2 (t)
Leibnizin integraali-sääntöä. Tällöin saadaan
d
dt
Z
x2 (t)
x1 (t)
dx2
dx1
+ ρ2 u2 − ρ1 u1 = 0
− ρ1
dt
dt
(12.23)
ρdx + ρ2 (u2 − x˙ 2 ) − ρ1 (u1 − x˙ 1 ) = 0
(12.24)
ρdx − ρ2
mistä yhdistämällä vuotermit
d
dt
Z
x2 (t)
x1 (t)
nähdään, että konvektionopeudeksi saadaan juuri suhteellinen nopeus ja konvektoituvat suureet, massa, liikemäärä ja sisäenergia säilyvät samassa muodossa kuin kiinteällä laskentahilalla. On huomattava, että energiayhtälön vuossa laskentahilan liike
ei tee työtä. Tällöin painetermissä on absoluuttinen nopeus eikä suhteellinen nopeus. Kokonaisuudessaan karteesinen vuovektori esimerkiksi x-suunnassa on seuraava:


ρ(u − x)
˙
 ρu(u − x)
˙
+p 




(12.25)

˙
F(U) =  ρv(u − x)




ρw(u − x)
˙
ρE(u − x)
˙ + pu
Vektorit G(U) ja H(U) muodostetaan vastaavalla tavalla yhtälöistä (2.3) ja
(2.4). Yleisessä käyräviivaisessa tapauksessa vuo saadaan ottamalla normaalivektorin ja vuovektorin välinen pistetulo




ρ¯
u
ρ¯
u



u + nx p 
ρu¯
u + nx p   ρu¯






ˆ
ρv¯
u
+
n
p
=

ρv¯
u
+
n
p

F(U)
=
y 
y





u + nz p 
ρw¯
u + nz p   ρw¯
ρH u¯ + p¯
vb
ρE u¯ + p(¯
u + v¯b )
(12.26)
12.5. LIIKKUVA LASKENTAHILA
219
_
n
._ ._ . _
xi + yj + zk
Kuva 12.9: Pinnan normaalivektori ja pinnan nopeus.
missä koordinaatiston pintaa vasten kohtisuora nopeuskomponentti on
v¯b = nx x˙ + ny y˙ + nz z˙
(12.27)
u¯ = nx u + ny v + nz w − v¯b
(12.28)
ja konvektionopeus
Koordinaatiston liike ei vaikuta kitkatermin muotoon. Vuon laskenta ei siis muutu
kovin monimutkaiseksi koordinaatiston liikkeen myötä, jos liike tunnetaan täsmällisesti. Jos hila deformoituu yleisessä mielessä, pintanopeuksien v¯b laskenta ei ole
täysin triviaalia. Tällöin hilanopeuksien ja tilavuuden muutoksen on täytettävä seuraava geometrinen säilymislaki
d
dt
Z
V
dV −
Z
S
~vb · ~ndS = 0
(12.29)
Geometrisen säilymislain diskretoinnissa on otettava huomioon virtausyhtälöiden
aikaintegrointitapa. Yleinen muoto pintanopeuksien kaksidimensioisille yhtälöille
on esimerkiksi Jaakko Hoffrenin väitöskirjassa. Ferziger-Pericissä pohditaan asiaa vain yksinkertaisen Eulerin menetelmän kannalta. Laskennassa kannattaa lähteä
suoraan kunkin kopin pintojen aika-askeleen kuluessa pyyhkäisemistä osatilavuuksista δVc (kuva 12.16). Tällöin pintanopeuksien laskenta on konsistenttia tilavuuksien laskennan kanssa.
Vuovektori (12.26) voidaan kirjoittaa myös muotoon
ˆ
ˆ s (U) − v¯b U
F(U)
=F
(12.30)
ˆ s on vuo kiinteällä laskentahilalla. Vuovektorin Jacobin matriisi saadaan
missä F
ˆ
linearisoimalla vuo F(U)
ˆ
δ F(U)
= AδU − v¯b δU = (A − v¯b I)δU
(12.31)
12.6. PYÖRIMISLIIKE
220
y
U u s i a s e m0000000
a
0000000
δVc
P
Vanha
asema
1
n+
r
rn
0000000
0000000
0000000
0000000
e
0000000
0000000
0000000
0000000
e
0000000
0000000
0000000
0000000
0000000
0000000
0000000
Se
x
Kuva 12.10: Kaksidimensioinen laskentatilavuus ja yhden aika-askeleen kuluessa pinnan
pyyhkäisemä osatilavuus δVc .
Jacobin matriisin diagonalisointiominaisuuden (luku 2.4) A = P ΛP −1 avulla nähdään, että laskentahilan liike vaikuttaa vain alkuperäisen matriisin ominaisarvoihin.
12.6 Pyörimisliike
Yleensä pyörimisliike johtaa tilanteeseen, joka ei ole staattinen reunojen epäsymmetrisyyden vuoksi. Tällöin ainoaksi keinoksi saavuttaa tarkka ratkaisu on ajan suhteen tarkka integrointi. Hilan pyörivän ja pyörimättömien lohkojen välillä käytetään liukuvan hilan reunaehtoa. Ratkaistavat suureet lausutaan kiinteässä globaalissa koordinaatistossa. Osa kiinteistä pinnoista on pyöriviä ja niillä toteutuu reunaehtonopeus
V~w = ~ω × ~r
(12.32)
Ajan suhteen tarkka ratkaisu on vielä nykyiselläkin tietokoneiden teholla erittäin
aikaa vievää. Yksinkertaisempi mahdollisuus on kvasistaattinen laskenta. Aksiaalipuhallin ja jotkin, lähinnä koelaitteistoiksi rakennetut radiaaliset turbokoneeet, saattavat olla todellisuudessakin rakenteeltaan symmetrisiä, jolloin geometrian mukana
pyörivässä koordinaatistossa lausuttu nopeus V~ ′ toteuttaa tasapainotilan virtausyhtälöt. Tällöin ratkaisu yleensä tehdään tässä pyörivässä koordinaatistossa tasapainotilan laskuna. Liikemääräyhtälöön tulee tällöin kaksi ylimääräistä lähdetermiä,
jotka kuvaavat näennäisiä keskipako- ja Coriolisvoimia. Reunaehtojen kanssa pitää
olla tarkkana, koska ne on helppo lausua pyörimättömässä koordinaatistossa, mutta
monimutkaistuvat pyörivässä.
Toinen tapa, jota käytetään esimerkiksi FLUENT- ja FINFLO-ohjelmissa, on
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
221
y
_
F
uc o o r d
_
r
_
ω
x
Kuva 12.11: Pyörimisliike z-akselin ympäri.
ratkaista yhtälöt pyörivässä laskentahilassa, mutta käyttäen kiinteän koordinaatiston
nopeuskomponentteja. Nämä saadaan yhteydestä
V~ = V~ ′ + ~ω × ~r
(12.33)
missä V~ ′ on nopeus pyörivässä koordinaatistossa lausuttuna ja ω
~ × ~r on laskentahi-
lan nopeus. Sijoittamalla lauseke (12.33) pyörivässä koordinaatistossa lausuttuihin
yhtälöihin, saadaan keskipako- ja Coriolisvoimien sijaan yksinkertaisempi keskeisvoiman lauseke
F~ = ~ω × V~
(12.34)
Lisäksi laskentahilan nopeus tulee mukaan vuon laskentaan yhtälöstä (12.26). Käytettäessä pyörivän koordinaatiston nopeuskomponentteja vuon laskenta pohjautuu
muodoltaan tavanomaisiin yhtälöihin. Karteesisten kiinteän koordinaatiston nopeuksien käytön suurin etu on reunaehtojen käsittelyn helppous.
12.7 Nopeus- ja pyörteisyyskomponenttien sekä jännitystensorin peilaaminen
Käyräviivaisella hilalla monimutkainen reunaehtotyyppi on symmetria, joka on toteutettavissa kohtalaisen yksinkertaisesti peilaamalla haamukoppeihin sopivat arvot. Peilaus perustuu aiemmin esillä olleeseen muunnosmatriisiin T , joka on kaksidimensioisessa tapauksessa yksinkertainen, mutta kolmidimensioisessa tilanteessa
sitä ei voida valita yksikäsitteisesti. Ongelmaksi muodostuu pyöritysmatriisin valitseminen siten, että singulaariteettejä ei synny. Peilauspinnasta tiedetään yleensä
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
222
ainoastaan sen normaalivektori. Pinnan suuntaisten vektorien hakeminen on hankalaa, koska tällöin on mahdollista törmätä singulaariteettiin. Tässä esitellään keino,
jolla ei singulaarikohtia ole. Nopeuksien peilaamismatriisin on alunperin esittänyt
Batine. Tässä esitetään myös pyörteisyyskomponenttien ja jännitystensorin peilaaminen mielivaltaiselle pinnalle, mikä on huomattavasti monimutkaisempaa kuin nopeuskomponenttien.
Olkoon peilauspinnan normaalivektori


nx


~n1 =  ny 
nz
(12.35)
Jotta nopeudet voidaan muuntaa lokaaliin koordinaatistoon (peilauspinnan koordinaatistoon) pitää etsiä kaksi pinnansuuntaista vektoria, jotka ovat kohtisuorassa
vektoria ~n1 ja toisiaan vastaan. Toinen vektori voidaan valita mielivaltaisesti. Sen
tulee ainoastaan olla kohtisuorassa vektoria ~n1 kohtaan. Valitaan toiseksi vektoriksi ~n2 sellainen joka on kohtisuorassa vektoria ~n1 ja vektoria ( 1 0 0 )T vastaan.
Tässä menetelmässä voi syntyä singulariteetti, jos ~n1 on yhdensuuntainen vektorin
(1
0 0 )T kanssa. Kuitenkin kantakoordinaatistoa voidaan pyörittää siten, että
vektorit ~n1 ja ( 1 0
0 )T eivät ole yhdensuuntaisia. Vektori ~n2 saadaan seuraa-
vasti:
 
ja normeerauksen jälkeen

(12.36)


missä

0
1


 
r~n2 = ~n1 ×  0  =  nz 
−ny
0
0
r~n2
1 

√
~n2 =
=
 nz 
|r~n2 |
s
−ny
(12.37)
s = n2y + n2z
(12.38)
Vastaavasti ~n3 saadaan kohtisuoruusehdosta


−n2y − n2z
1 

~n3 = ~n1 × ~n2 = √  nx ny 
s
nx nz
(12.39)
Nyt voidaan kirjoittaa muunnosmatriisi T saatujen vektoreiden avulla seuraavasti

nx
 0
T =
√
− s
ny
nz
√
s
nx ny
√
s

nz
ny 
−√
s
n√
x nz
s
(12.40)
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
223
Muunnosmatriisin T oikeellisuus voidaan todeta tarkastelemalla matriisin käänteismatriisia
T −1 = T T
(12.41)
eli matriisi T on ortogonaalinen kuten muunnosmatriisin ortogonaalisesta systeemistä toiseen ortogonaaliseen systeemiin kuuluukin olla.
Nopeuskomponentit täytyy esittää siten että yksi on kohtisuorassa peilausseinää
vastaan ja kaksi on sen suuntaisia. Lokaalit nopeuskomponentit voidaan kirjoittaa
seuraavaan muotoon





nx
u
uˆ
 0
 
 
ˆ=Tv=
v
√
w
wˆ
− s
ny
nz
√
s
nx ny
√
s


nz
u
ny  
−√
v



s
n√
x nz
w
s
(12.42)
Nyt nopeuskomponentti uˆ on kohtisuorassa peilauspintaa vastaan ja vˆ ja wˆ ovat sen
suuntaisia. Reunaehto haamukoppeihin voidaan nyt kirjoittaa seuraavasti.





−1
−ˆ
u
uˆ



 
=  vˆ  =  0
ˆ
v
0
wˆ
wˆ mir
0
1
0


uˆ
0
 
0   vˆ 
wˆ
1
(12.43)
Karteesisessa koordinaatistossa saadaan peilausnopeudet seuraavasti


nx
n
 y
nz

u
 
=
v
w mir
  
 
uˆ
−1 0 0
uˆ
  

T 
T 
= T  0 1 0   vˆ  =
T  vˆ 
0 0 1  wˆ
wˆ mir

u
−1 0 0
 

T 
T  0 1 0 T  v  =
√   0 0 1  w
  
nx
ny
nz
0
− s
−1 0 0
u
ny  
nx ny  
nz
nz
  0

√
√
√
√
−
1 0 
s
s   v (12.44)
s
s   0
√
ny
n√
n√
x ny
x nz
x nz
0 0 1
w
−√
− s n√
s
s
s
s
josta saadaan pienen laskennan jälkeen



1 − 2n2x
u

 
=  −2nx ny
v
−2nx nz
w mir
−2nx ny
1 − 2n2y
−2ny nz


u
−2nx nz
 
−2ny nz   v 
w
1 − 2n2z
(12.45)
Tällä muodolla ei ole singulariteettia missään suunnassa. Tämän johdossa valittiin ~n2 siten, että se on kohtisuorassa vektoria ( 1
0 0 )T vastaan. Kuitenkin
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
vektori ( 1 0
224
0 )T voidaan valita mielivaltaisesti, jolloin päädytään samaan tu-
lokseen. Tässä yksinkertaisuuden vuoksi käytettiin mahdollisimman yksinkertaista
vektoria. On huomattava, että implisiittisessä vaiheessa kokoonpuristuvilla yhtälöillä singulaarisuus syntyy, jos ~n1 on yhdensuuntainen vektorin ( 1 0
0 )T kanssa.
Tämä johtuu siitä, että implisiittisessä vaiheessa voidaan Jacobin matriisin (2.70)
yhteydessä soveltaa matriiseja T ja T T erikseen. Tässä käytettiin vain lopputulosta,
joka on useamman matriisin tulo. Mikäli muunnosmatriisiin perustuvaa tekniikkaa
käytetään siten, että matriisi T esiintyy yksinään, on huolehdittava siitä, ettei matriisi ole singulaarinen.
Vastaavanlaisesti pyörteisyydelle voidaan johtaa reunaehdot. Ainoastaan yhtälöön (12.43) joudutaan tekemään pieniä muutoksia





1 0
ω
ˆx
ω
ˆx





ωy  =  0 −1
=  −ˆ
ˆy 
ω
0 0
−ˆ
ωz
ω
ˆ z mir
Pienen laskennan jälkeen saadaan



 

2n2x − 1
ωx



=  2nx ny
 ωy 
2nx nz
ωz mir

ω
ˆx
0


ˆy 
0 ω
ω
ˆz
−1

ωx
2nx ny
2nx nz


2n2y − 1 2ny nz 
  ωy 
ωz
2ny nz 2n2z − 1
(12.46)
(12.47)
Jännitystensorin peilaaminen voidaan suorittaa suhteellisen helposti yllä olevilla menetelmillä. Jännitystensoria voidaan kiertää seuraavasti globaalista lokaaliin
koordinaatistoon
τˆ = T τ T T
missä
(12.48)


τ11 τ12 τ13


τ =  τ21 τ22 τ23 
τ31 τ32 τ33
Kiertäminen lokaalista globaaliin koordinaatistoon vastaavasti
τ = T T τˆ T
(12.49)
(12.50)
Peilauspinnalla pintaa vasten kohtisuoran ja pinnansuuntaisten komponenttien
ristikkäistermit saavat arvon nolla. Tässä tapauksessa, kun 1-suunta on kohtisuorassa peilauspintaa vastaan, saavat siis τˆ12 , τˆ13 , τˆ21 ja τˆ31 arvon nolla. Tämä voidaan
matriisilaskennan avulla ilmaista seuraavasti
τˆmir

−1

= 0
0
0
1
0


−1
0
 
0  τˆ  0
0
1

0 0

1 0  = P τˆ P
0 1
(12.51)
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
225
jolloin voidaan kirjoittaa käyttämällä yllä olevia yhtälöitä
τmir = T T τˆmir T = T T P τˆ P T = T T P T τ T T P T
(12.52)
Nyt huomataan että yllä olevan yhtälön osa T T P T on samaa muotoa kuin yhtälössä (12.44) ja kirjoittaa peilausehto suhteellisen yksinkertaiseen muotoon
τmir

1 − 2n2x

=  −2nx ny
−2nx nz
−2nx ny
1 − 2n2y
−2ny nz


1 − 2n2x
−2nx nz
 
−2ny nz  τ  −2nx ny
−2nx nz
1 − 2n2z
−2nx ny
1 − 2n2y
−2ny nz

−2nx nz

−2ny nz 
1 − 2n2z
(12.53)
Tässä esitetyllä menetelmällä ei peilausseinillä tarvitse mennä lokaaliin koordinaatistoon ollenkaan ja tämän takia ei singulariteettia voi syntyä. Näillä menettelyillä saadaan robusti ja nopea laskenta peilausseinille. Varsinkin jännitystensorin
peilaus olisi suhteellisen monimutkaista, mutta edellä esitetyllä menettelyllä saadaan se yksinkertaiseksi.
12.7. NOPEUS- JA PYÖRTEISYYSKOMPONENTTIEN SEKÄ
JÄNNITYSTENSORIN PEILAAMINEN
226
• Tilavuuden laskenta
VP ABCD =
1
(~xP A + ~xP B ) · (~xAC × ~xBD )
12
• Pinta-alan laskenta
~ABCD = 1 (~xAC × ~xBD )
S
2
• Reunaehtojen käsittelyssä haamukoppien käyttö kätevää. Symmetriaehdot mielivaltaiselle pinnalle saadaan muunnosmatriisin avulla nopeuksille, pyörteisyydelle ja jännitystensorille.
• Esittämällä ratkaistut suureet dimensiottomina, tuloksilla on arvoa myös
muussa kuin esillä olevassa tapauksessa
• Liikemäärän vuon laskennassa kiinteällä pinnalla riittää aina ohutkerrosapproksimaation käyttö vaikka kitkatermi laskettaisiinkin täytenä muualla laskenta-alueessa.
• Painekerroin p − p∞ =
• Kitkakerroin τw =
Cf
2
Cp
ρ u2
2 ∞ ∞
ρ∞ u2∞
• Pyörivän koneen teho voidaan laskea vääntömomentin tai energiayhtälön avulla
• Liikkuva laskentahila vaikuttaa vain konvektionopeuden määrittelyyn
ja energiayhtälössä on otettava huomioon ettei paine ole konvektoituva suure
• Geometrisen säilymislain mukaan laskentatilavuuden pintojen liikkeestä aiheutuva tilavuuden muutos on sama kuin koko tilavuuden muutos.
Ts. tilavuuden ja pintojen liikkumisen laskentatapojen tulee olla samoja.
• Pyörimisliike voidaan laskea ajasta riippuvana tai kvasistaattisena tasapainotilan laskuna. Tasapainotilan laskut tehdään kappaleen mukana
pyörivässä koordinaatistossa käyttäen joko pyörivän koordinaatiston nopeuksia tai globaaleja karteesisia nopeuksia. Jälkimmäisellä tavalla reunaehdot ovat yksinkertaisia.
Päivitetty 2.4.2014
227
13 Muita ratkaisumenetelmiä
13.1 Historiaa
Keskeinen ongelma kokoonpuristumattoman virtauksen ratkaisussa on paineen määräytyminen. Koska painetta ei suoraan saada aikaintegroitua tilayhtälön avulla, se
on määritettävä implisiittisesti jatkuvuusyhtälöstä. Varhaisin ratkaisutapa oli eliminoida paine kokonaan pois yhtälösysteemistä pyörteisyyden ja virtafunktion avulla.
Ongelmana on tällöin se, ettei paineen arvo määräydy mistään. Lisäksi menetelmän
soveltaminen kolmidimensioiseen tapaukseen on monimutkaista ja hankaluuksia tulee myös reunaehtojen käsittelyssä. 1960-luvulla ongelman ratkaisuksi kehitettiin
kaksi uutta keinoa: painekorjaus- ja näennäispuristuvuusmenetelmät.
Kuten aiemmin todettiin ensimmäinen painekorjausmenetelmä oli marker and
cell-menetelmä (MAC), joka kehitettiin Los Alamosissa 1960-luvun puolivälissä.
MAC-menetelmässä sovellettiin ensimmäisen kerran myös limitettyä hilaa. Menetelmä soveltuu hyvin ainoastaan ajasta riippuvien ongelmien laskentaan. Jo 1960luvulla sillä laskettiin vapaan pinnan ongelmia, tosin alhaisella Reynoldsin luvulla
laminaarissa tilanteessa. Tältä ajalta on olemassa näyttäviä kuvasarjoja esimerkiksi
pisaran putoamisesta nesteen pintaan. Vettä visualisoitiin ’markkereilla’, jotka liikkuivat virtauksen mukana. Myöhemmin Los Alamosissa kehitettiin vapaan pinnan
ongelmiin volume of fluid menetelmä (VOF). Viime vuosina vapaan pinnan ongelmat ovat tulleet ajankohtaisiksi, kun on ryhdytty simuloimaan virtauksia laivojen
ympärillä.
Melko pian MAC-menetelmän jälkeen vuonna 1968 Chorin esitti näennäispuristuvuuskeinon, jolla elliptinen yhtälöryhmä muunnettiin hyperboliseksi ja painetta voitiin integroida ajan suhteen käyttäen luvussa 2 esitettyjä menetelmiä. Chorinin menetelmää ei käytetty kovin paljon ennen kuin viime vuosituhannen loppupuolella ryhdyttiin sen avulla muuntamaan aerodynamiikkaa varten kehitettyjä
13.2. PAINEKORJAUSYHTÄLÖN LUONNE
228
tietokoneohjelmia laajemmalle nopeusalueelle, mm. laivojen virtausten simulointiin. Uudentyyppinen menettely oli matriisin pohjustaminen, jossa yhtälöt voidaan
skaalata paitsi sopivalle Machin niin myös Reynoldsin luku -alueille parhaan mahdollisen konvergenssin saavuttamiseksi. On makuasia pitääkö näennäispuristuvuusja matriisin pohjustamismenetelmiä itsenäisinä ratkaisukeinoina, ne perustuvat samaan ideaan ja kummassakin virtaus matemaattisessa mielessä skaalataan tietylle
Machin luvulle vaikka tiheys voi olla vakio.
Tällä hetkellä ei ole selvää käsitystä eri ratkaisutapojen paremmuudesta. Kaikkein elegantein menetelmä on varmaankin limitettyyn hilaan pohjautuva painekorjausalgoritmi, koska siinä ei tarvita mitään parametreja, jotka vaikuttavat lopputulokseen. Rhie ja Chow -menetelmässä ja näennäispuristuvuuskeinossa laskennan
suorittaja joutuu antamaan parametreja, joko kertoimen C yhtälössä (5.22) tai kertoimen β yhtälössä (1.29). Parametrien vaikutus lähestyy hilaa tihennettäessä nollaa, mutta niitä voidaan kuitenkin pitää jonkinlaisina kauneusvirheinä algoritmeissa.
Tässä luvussa tuodaan lyhyesti esille erilaisten ratkaisumenetelmien piirteitä.
13.2 Painekorjausyhtälön luonne
Kokoonpuristumattoman virtauksen tapauksessa voidaan päätyä Poisson-tyyppiseen
yhtälöön joko paineelle tai virtafunktiolle. Tämä on tavallaan luonnollista, koska
kun tiheys on vakio, niin virtausyhtälöillä on elliptinen luonne. Edellä olemme johtaneet yhtälön paineen korjauksille, jolloin yhtälön oikealle puolelle tulee massataseen virhe. Eräissä menetelmissä ratkaistaan painekorjausten sijaan paineita. Tällöin yhtälön oikealle puolelle tulee huomattavasti monimutkaisempi lauseke. Eräs
painekorjauksien käyttöön liittyvä elegantti piirre onkin se, että nimenomaan massataseen virhe ajaa painekorjauksia.
Paineille voidaan johtaa suoraan yhtälö liikemääräyhtälöstä. Ottamalla divergenssi liikemääräyhtälöstä saadaan
∂
∂xi
∂p
∂xi
!
"
#
∂
∂
∂2ρ
=−
(ρui uj − τij ) + 2
∂xi ∂xj
∂t
(13.1)
Kun tiheys on vakio, sen aikaderivaattatermi putoaa pois. Jos vielä oletetaan viskositeetti vakioksi, voidaan muuttamalla derivointijärjestys kitkatermissä todeta jatku-
13.3. PAINEKORJAUSMENETELMÄT
229
vuusyhtälön perusteella, että yhtälö supistuu muotoon
∂
∂xi
∂p
∂xi
!
"
∂
∂
=−
ρui uj
∂xi ∂xj
#
(13.2)
Useat menetelmät perustuvat tämän yhtälön diskreettiin muotoon. Varsinaista ratkaisualgoritmia johdettaessa on otettava huomioon, että uloimpana oleva divergenssioperaattori ∇· on diskretoitava kuten jatkuvuusyhtälö, mutta sisempänä oleva gra-
dienttioperaattori perustuu liikemääräyhtälöön. Vaikka yllä osoitettiin, että paineelle voidaan johtaa differentiaalimuodossa oleva Poisson-yhtälö, diskretointia ei yleensä perusteta siihen, vaan ensin diskretoidusta liikemääräyhtälöstä ratkaistaan nopeus
paineiden avulla ja tämä nopeus sijoitetaan jatkuvuusyhtälöön.
Yhtälössä (13.1) ratkaistavana suureena on paine. Painepohjaisissa menetelmis-
sä ratkotaan paine-eroja johonkin referenssipaineeseen nähden. Tekniikat eroavat
siinä ratkaistaanko suoraan tätä ’painetta’ vai sen muutosta eli painekorjausta. Ratkaistavan suureen valinnalla ei ole suurta merkitystä, vaikka näin joskus pyritään
esittämään. Paineyhtälö voidaan aina muuttaa sen korjauksen yhtälöksi vähentämällä siitä vakio-osuus. Erot tulevat reunaehtojen käsittelystä ja mahdollisesti laskentatarkkuudesta.
13.3 Painekorjausmenetelmät
Paineen määräytyminen primitiivisuureiden avulla säilyi siis pitkään ongelmana,
kunnes vuonna 1965 Harlow ja Welch Los Alamosin laboratoriosta esittivät aikoinaan kuuluisaksi tulleen marker and cell (MAC) menetelmän. Nimensä menetelmä
sai virtauksen mukana kulkeutuvista massattomista hiukkasista (’marker’), joilla
voitiin kuvata jo silloin nesteen pinnan kehittymistä esimerkiksi pisaran pudotessa pintaan. Laskut olivat luonnollisesti laminaareja alhaisella Reynoldsin luvulla ja
2D laskentahilan koko suurimmillaan tuhannen kopin suuruusluokkaa. Nestehiukkasten käyttö on myöhemmin johtanut varsin ajankohtaisiin volume of fluid (VOF)
ja level set menetelmiin, joita on ryhdytty käyttämään mm. laivan ympärille muodostuva aallon kuvauksessa. Paljon suurempi merkitys on kuitenkin ollut paineen
määräytyminen ns. Poisson-yhtälön avulla. MAC-menetelmä oli ensimmäinen painekorjausmenetelmä, ja paineen korjaus on ollut tämän kurssin pääasiallinen tutustumiskohde. Paineen määrityskeinon lisäksi MAC-menetelmässä ratkaistiin toinen
13.3. PAINEKORJAUSMENETELMÄT
230
kokoonpuristumattoman virtausratkaisun ongelma, shakkilautamainen värähtelevä
ratkaisu. Tämä voitiin välttää ottamalla käyttöön ns. limitetty hila (staggered grid).
Limitetyn hilan avulla oli suoraviivaista myös johtaa Poisson-tyyppinen painekorjausyhtälö. MAC-menetelmää käytetään edelleenkin jonkin verran ajasta riippuvien
virtausten laskennassa. Tasapainotilan tehtävissä uudet tehokkaammat menetelmät
ovat syrjäyttäneet sen. MAC-menetelmällä on mm. seuraavat ominaisuudet:
• limitetty hila
• Poisson-yhtälö paineille (ei paineiden korjauksille)
• eksplisiittinen aikaintegrointi
• konvektiotermi keskeisdifferenssimenetelmällä
• virtauksen mukana liikkuvat massattomat partikkelit (’marker’), jotka soveltuvat nestepinnan kuvaukseen
Tällä kurssilla on keskitytty lähinnä SIMPLE-menetelmän, tai oikeastaan eräiltä osin melko omintakeisen SIMPLEn version, käyttöön. Pelkästään tämä menetelmä voidaan siis implementoida usealla tavalla, joten erilaisten painekorjausmenetelmän modifikaatioiden määrä on lähes rajaton. On myös kehitelty menetelmiä,
joiden on katsottu olevan uuden akronyymin veroisia. Patankarin kirjassa on esitetty hyvin SIMPLER-menetelmä, joka parantaa konvergenssia, mutta jossa on ratkaistava Poisson-yhtälö kahdesti. Lyhennetystä SIMPLE-menetelmästä on jossain
vaiheessa käytetty nimeä SIMPLEST (SIMPLE ShorTened).
Laajempaa käyttöä on saavuttanut SIMPLEC-menetelmä. Jotta SIMPLE-menetelmässä päädyttäisiin yksinkertaiseen muotoon, jätettiin yhtälöstä (6.21) pois rinnakkaisten nopeuksien osuus. Tämä aiheuttaa alirelaksaation tarpeen, mikä puolestaan kasvattaa iteraatiokierrosten määrää. SIMPLEC-menetelmässä painekorjausyhtälössä
AW,i+1/2 u′i−1/2 + AP,i+1/2 u′i+1/2 + AE,i+1/2 u′i+3/2 = −Si+1/2 (p′i+1 − p′i ) (13.3)
vasemman puolen rinnakkaisten nopeuksien korjaukset korvataan korjauksilla u′i+1/2 ,
jolloin nopeuskorjauksille saadaan yhtälö
(AP,i+1/2 +
X
S
Al,i+1/2 )u′i+1/2 ≈ −Si+1/2 (p′i+1 − p′i )
(13.4)
13.3. PAINEKORJAUSMENETELMÄT
Nopeuskorjauksen kertojaksi tämän mukaan tulee vain AP,i+1/2 +
Vi ρi /∆t. Menetelmän sanotaan poistavan alirelaksaation tarvetta.
231
P
S
Al,i+1/2 =
PISO-algoritmissa (Issa 1986) tehdään SIMPLE-menetelmän lisäksi toinen nopeus- ja painekorjauskierros. Menettelyssä lasketaan toinen massatasevirhe nopeuskorjauksien u′i+1/2 avulla. Tämän avulla puolestaan ratkaistaan painekorjauksille
korjaus p′′i Poisson-yhtälöstä, jossa voidaan käyttää samoja kertoimia AP kuin ensimmäisessä Poisson yhtälössä. Korjausten p′′i avulla saadaan myös toinen nopeuskorjaus u′′i . Myös PISO-menetelmän sanotaan vähentävän alirelaksaation tarvetta,
mutta haittapuolena on se, että SIMPLER-menetelmän tavoin Poisson-yhtälö on
ratkaistava kahdesti. Painekorjaus-askelten määrä ei periaatteessa ole rajattu muuta
kuin tietokoneajan kulutuksen kautta. Massavirhettä voidaan korjata useampia kierroksia niin pitkään, että se menee nollaksi. Koska liikemääräyhtälö on epälineaarinen, ei painekorjauksia kannata tehdä kovin montaa kertaa yhtä liikemääräyhtälön
ratkaisua kohden.
Nykyisin kaupallisissa koodeissa sovelletaan ns. kytkettyä ratkaisua. Tällöin ratkotaan painetta ja nopeuskenttää yhtä aikaa, jolloin kolmidimensioisessa tilanteessa
päädytään neljä kertaa painekorjausyhtälöä suurempaan yhtälöryhmään. Paineen ja
nopeuden välille saadaan tällöin tiukempi kytkentä implisiittisessä vaiheessa ja alirelaksaation tarve vähenee. Käytännön monimutkaisissa virtaustilanteissa iteraatiokierrosten määrä voi kytketyllä ratkaisulla olla jopa alle kymmenesosa perinteiseen
painekorjausmenetelmään verrattuna. Ongelma siirtyy yhtälöryhmän ratkaisun puolelle. Yhtälöryhmä on monimutkainen ja sen ratkaisumenetelmien kehitys on suurelta osin siirtynyt kaupallisten ohjelmistotalojen piiriin.
Painekorjauksen ideaa voidaan soveltaa myös erilaisissa osa-askelten menetelmissä (fractional step methods). Näissä ratkaisu suoritetaan aikaintegroinnin avulla
jakaen konvektio- paine- ja diffuusiotermit eri vaiheisiin. Esimerkiksi eksplisiittinen liikemääräyhtälö voidaan kirjoittaa muotoon
un+1
= uni + (Ci + Di + Pi )∆t
i
(13.5)
missä Ci on konvektiotermi, Di diffuusiotermi ja Pi painetermi. Yhtälö voidaan
ratkoa kolmella askeleella
u∗i = uni + (Ci )∆t
13.4. VIIVÄSTETYN KORJAUKSEN PERIAATE
232
u∗∗
= u∗i + (Di )∆t
i
un+1
= u∗∗
i
i + (Pi )∆t
(13.6)
Tässä viimeiseen vaiheeseen liittyy paineen kaltaisen suureen ratkaiseminen Poissonyhtälöstä. Osa-askelten menetelmiä käytetään esimerkiksi suorassa simuloinnissa ja
isojen pyörteiden menetelmän yhteydessä.
13.4 Viivästetyn korjauksen periaate
Tällä kurssilla on käytetty residuaalin käsitettä ja kaikki yhtälöt on ratkaistu deltamuodossa. Residuaalin käyttö on välttämätöntä, jos käytetään FAS-monihilaratkaisua.
Se mahdollistaa myös tarkempien interpolointimenetelmien käytön residuaaliosassa
eli yhtälön oikealla puolella. Ferziger-Pericin kirjassa sama periaate toteutetaan ns.
viivästetyllä korjauksella. Siinä laskentatilavuutta ja sen naapureita koskevat termit
sijoitetaan yhtälön vasemmalle puolelle ja loput edellisen iteraatiokierroksen arvoilla lausutut termit oikealle. Käytännössä vasemmalla puolella on ensimmäisen kertaluvun tarkkuudella diskretoitu osuus. Periaatteessa vasemmalle puolelle voidaan
ottaa osa korkeamman kertaluvun diskretoinnista, jos samalla huolehditaan yhtälön
lävistäjävaltaisuudesta.
Liikemääräyhtälön ratkaisun kannalta ainoa merkittävä ero on FAS-monihilamenetelmän vaatima residuaalimuoto. Tämä johtuu siitä, että Picardin iteraatiossa
ratkaistavien yhtälöiden kertoimet ovat samat. Kirjoitetaan aiemmin x-suuntaiselle
liikemääryhtälölle tehty diskretointi (9.15–9.17) vektorimuotoon
AP,i ∆Ui +
X
Ai,j ∆Uj = RU
i
(13.7)
j
missä kertoimet Ai,j ovat pisteeseen i liittyvät ilmansuuntakertoimet (9.17). Liikemääräyhtälöstä ratkaistaan suure U∗ = (u∗ , v ∗ , w ∗ )T , joka painekorjausvaiheessa
päivitetään uuden kierroksen nopeusvektoriksi (Un+1 ). Yhtälöstä (13.7) saadaan
AP,i U∗i +
X
j
n
Ai,j U∗j = RU
i − AP,i Ui −
X
Ai,j Unj = RHS
(13.8)
j
Laskenta tässä muodossa tapahtuu siis siten, että tarkasta residuaalin määrittelemästä osuudesta vähennetään ensimmäisen kertaluvun diskretoinnilla muodostettu vasen puoli edellisen kierroksen arvoilla lausuttuna. Tähän viittaa nimitys ’viivästetty
13.5. IMPLISIITTINEN RHIE-CHOW INTERPOLOINTI
233
korjaus’. Jos residuaali lausuttaisiin ensimmäisen kertaluvun diskretointien avulla
ja käytettäisiin yksinkertaista kitkatermiä, oikealle puolelle jäisi vain Vi ρ/∆t.
13.5 Implisiittinen Rhie-Chow interpolointi
OpenFOAM-koodissa sovelletaan painekorjausmenetelmän versiota, josta Rhie-Chow
interpolointi näyttäisi puuttuvan kokonaan. Tarkempi tarkastelu osoittaa, että interpolointi on mukana massataseessa osittain paineen ratkaisun ja osittain liikemääräyhtälöiden residuaalin kautta. Laskentatilavuuden pinnan massavirta liikemääräyhtälöissä voitaisiin laskea keskiarvona (tai lineaarisesti interpoloimalla) hilapistearvoista, mutta käytännössä näin tehdään vain ensimmäisellä iteraatiokierroksella. Seuraavilla iteraatiokierroksilla käytetään paineen ratkaisun yhteydessä laskettua vuoarvoa, jolloin Rhie-Chow termi tulee käyttöön kaikissa yhtälöissä. Yhtälöstä (13.8) saadaan
AP,i U∗i = RHS−
X
j
Ai,j U∗j = rhs−Vi (∇p)i −
X
Ai,j U∗j = Hi (U, U∗ )−Vi (∇p)i
j
(13.9)
Jos oikean puolen termi ’RHS’ lasketaan uudestaan, operaattori H riippuu vain
uusista nopeuden arvoista U∗ . Tällä tuskin on merkitystä iteraation tehokkuuden
kannalta, joten käytännössä laskentatehokkuuden vuoksi termi riippuu myös edellisen kierroksen arvoista. Kirjoittamalla painegradientti erilleen ei tässä vaiheessa
ole otettu kantaa sen diskretointiin. Uusi nopeus pinnalla j saadaan keskiarvona tai
tarkemmin interpoloimalla seinän kahden puolen olevien H(U, U∗ )-termien avulla
seuraavasti:
U∗j =
¯ j (U, U∗ )
H
(∇p)j
− Vj ¯
¯
AP,j
AP,j
(13.10)
Tässä painegradienttien AP -kertoimilla painotettu keskiarvo korvataan kopin pinnalla olevalla painegradientilla. Kirjoittamalla näin lausutuilla pintanopeuksilla massatase ∇ · U saadaan paineyhtälöksi
X
j
Sj n · (∇p)j Vj =
X
j
Sj nj
H(U, U∗ )
A¯P,j
(13.11)
Yhtälöstä ratkaistaan siis suoraan paineita. Poisson-yhtälö ratkaistaan usein algebrallisella monihilamenetelmällä. Tällöin ei ole merkitystä ratkaistaanko suoraan paineita vai painekorjauksia. Yhtälössä (13.11) oikean puolen ’massatase’ ei ole ite-
13.6. VIRTAFUNKTIO-PYÖRTEISYYS -MENETELMÄ
234
raation supetessa nolla, koska se määrittelee vasemmalla puolella olevan painelausekkeen arvon. Gaussin lauseen perusteella tämän voidaan havaita approksimoivan ∇2 p-termiä.
Rhie-Chow termi tuli implisiittisesti lisätyksi vaihtamalla paineen interpolointi-
tapa kopin seinällä. Kirjoittamalla yhtälö (13.11) painekorjauksen p′ = p − pn avul-
la, oikealle puolelle voidaan siirtää painegradienttitermi, joka voidaan yhdistää massavirtaan. Tällöin saataisiin Rhie-Chow interpolointia vastaava ensimmäisen kertaluvun vaimennustermi. Korjaustermi on piilossa H(U)-lausekkeissa, koska painegradientti puuttuu niistä. Tarkastellaan tilannetta uudestaan delta-muotoisisten yhtälöiden avulla. Kirjoitetaan ensin pintanopeuden lauseke (5.22) vektorimuotoon
Vi+1/2 1
1
(∇p)i+1 + (∇p)i − (∇p)i+1/2 (13.12)
U∗i+1/2 = (U∗i+1 + U∗i ) + ¯
2
AP,i+1/2 2
Sijoittamalla tähän yhtälöstä (13.9) nopeuksien arvot
U∗i+1/2
"
#
1 Hi+1 (U, U∗ )
(∇p)i+1 Hi (U, U∗ )
(∇p)i
=
− Vi+1
+
− Vi
2
AP,i+1
AP,i+1
AP,i
AP,i
Vi+1/2 1
(∇p)i+1 + (∇p)i − (∇p)i+1/2
(13.13)
+ ¯
AP,i+1/2 2
Siirtämällä yhtälön toisen rivin painevaimennustermissä tilavuus ja lausumalla AP kerroin pisteissä i ja i + 1, saadaan
U∗i+1/2
"
#
Vi+1/2
1 Hi+1 (U, U∗ ) Hi (U, U∗ )
− ¯
(∇p)i+1/2
−
=
¯
2
AP,i+1
AP,i
AP,i+1/2
(13.14)
Pintanopeudelle saatiin siis yhtälöä (13.10) vastaava yhteys. Yhtälöön 13.11 perustuva menetelmä on siis sama kuin aiemmin tällä kurssilla esitetty painekorjausmenetelmä. H-termin laskennassa voi tulla iteraation aikana pieniä eroja, mutta lopputulos ei poikkea. OpenFOAMissa lasketaan yhtälöstä (13.14) uusi nopeus (ja siihen
perustuva massavirta), jota käytetään seuraavalla iteraatiokierroksella. Ensimmäisellä iteraatiokierroksella nopeus lasketaan keskiarvona. Kurssikoodissa massavirta
lasketaan noodipisteiden arvosta aina kunkin iteraatiokierroksen alussa.
13.6 Virtafunktio-pyörteisyys -menetelmä
Keskeinen ongelma kokoonpuristumattomalla virtauksella liittyy paineen määritykseen, johon painekorjaus oli ensimmäinen tepsivä keino. Sitä ennen kokoonpuristumattomia virtauksia laskettiin pyörteisyys-virtafunktiomenetelmällä, jossa paineen
13.7. NÄENNÄISPURISTUVUUSKEINO
235
määritys kierretään eliminoimalla se kokonaan pois yhtälöistä. Kaksidimensioisessa tapauksessa virtafunktio määritellään yhtälöillä
∂ψ
= u
∂y
∂ψ
= −v
∂x
(13.15)
ja pyörteisyys, joka kaksidimensioisessa tapauksessa on skalaari, on
ω=
∂v ∂u
−
∂x ∂y
(13.16)
Derivoimalla yhtälön (13.15) nopeudet ja sijoittamalla ne pyörteisyyden määritelmään (13.16), saadaan virtafunktiolle Poisson-yhtälö
∂2ψ ∂2ψ
+ 2 = −ω
∂x2
∂y
(13.17)
Paine voidaan eliminoida liikemääräyhtälöistä derivoimalla x-liikemääräyhtälö y:n
suhteen ja y-liikemääräyhtälö x:n suhteen ja vähentämällä tulokset toisistaan. Tällöin pyörteisyydelle saadaan seuraava yhtälö:
ρ
∂ω
∂ω
∂ω
∂2ω ∂2ω
+ ρu
+ ρv
=µ
+ 2
∂t
∂x
∂y
∂x2
∂y
(13.18)
Ratkaisu etenee siten, että yhtälöstä (13.18) ratkaistaan ensin pyörteisyys aika-askeleittain. Sen jälkeen voidaan Poisson-yhtälöstä ratkaista virtafunktio ja yhtälöstä
(13.15) nopeudet. Paine ei siis ratkea suoraan ollenkaan. Paine-eroja voidaan approksimoida Bernoullin yhtälöstä saatavalla paineella. Liikemääräyhtälöstä voidaan
johtaa tarkempi lauseke paineelle, mutta tällöin päädytään jälleen monimutkaiseen
Poisson-yhtälöön.
Pyörteisyys-virtafunktiomenetelmä monimutkaistuu kolmidimensioisessa tapauksessa, koska sekä pyörteisyys että virtafunktio ovat tällöin vektoreita. Uusia menetelmiä silti esitetään nykyisinkin, vaikka suurin osa laskennasta on tapahtunut primitiivisuureita (paine ja nopeus) käyttäen jo 60-luvulta lähtien.
13.7 Näennäispuristuvuuskeino
Näennäispuristuvuus- eli pseudokompressibiliteettimenetelmä on jo vuodelta 1968
(Chorin) eli se on vain hieman MAC-menetelmää nuorempi. Menetelmän avulla
13.7. NÄENNÄISPURISTUVUUSKEINO
236
voidaan yksinkertaisesti laajentaa aerodynaamisia tarkoituksia varten kehitettyjen
ohjelmien soveltuvuusaluetta alhaisen Machin luvun virtaukselle. Perusideana on
säilyttää alkuperäisen menetelmän aikaintegrointipohjainen iterointi, vaimennustermit tai ylävirtapainotus sekä reunaehtojen käsittely.
Tarkastellaan seuraavia yksidimensioisia yhtälöitä
1 ∂p
∂u
+ρ
= 0
2
β ∂t
∂x
∂u ∂u2 1 ∂p
+
+
= 0
∂t
∂x
ρ ∂x
(13.19)
Kyseessä ovat yksidimensioiset kitkattoman virtauksen yhtälöt, joissa jatkuvuusyhtälöön on lisätty ylimääräinen paineen aikaderivaattatermi. Siinä parametrilla β on
sama dimensio kuin nopeudella ja se vaikuttaa voimakkaasti menetelmän Jacobin
matriisin ominaisarvoihin eli karakteristisiin nopeuksiin. Yhtälö (13.19) on käsitelty kokoonpuristumattomana, joten jatkuvuusyhtälössä ei alun perin ollut aikaderivaattaa ollenkaan. Lisäämällä yhtälöön (13.19) paineen aikaderivaatta, probleema
saadaan muutettua näennäisesti hyperboliseksi. Yhtälöryhmän Jacobin matriisiksi
saadaan


0 β 2ρ


A= 1
2u
ρ
josta saadaan näennäiset karakteristiset nopeudet
λ1,2 = u ±
q
u2 + β 2
(13.20)
(13.21)
josta huomataan ominaisarvojen olevan samat kuin kokoonpuristuvilla yhtälöillä,
kun näennäisäänennopeus on c = (u2 + β 2 )1/2 Näin määritelty ’äänennopeus’ riippuu myös paikallisesta virtausnopeudesta u. Äänennopeuden paikallinen vaihtelu
vaikuttaa menetelmän stabiilisuuteen, samoin parametrin β valinta. On huomattava, että tässä muodossa näennäispuristuvuuskeinolla ei voida ratkoa ajasta riippuvia
ongelmia, koska jatkuvuusyhtälön aikaderivaattatermi ei ole fysikaalinen. Fysikaalinen aikaderivaatta voidaan kuitenkin lisätä yhtälöihin lähdeterminä ja suorittaa
aika-askeleen sisällä näennäisaikaintegrointi. Tästä käytetään nimitystä ’dual timestepping’ (Jameson, Jaakko Hoffrenin väitöskirja).
Lisäämällä paineen aikaderivaattatermi myös liikemääräyhtälöön, saadaan karakteristisen yhtälön juuriksi
λ1,2 = u ± β
(13.22)
13.7. NÄENNÄISPURISTUVUUSKEINO
237
Tätä menettelyä on käytetty FINFLO-ohjelmassa. Tällöin pseudoäänennopeus ei
riipu virtausnopeudesta, mikä helpottaa huomattavasti implisiittisen vaiheen käsittelyä. Menetelmä on kuitenkin edelleen herkkä parametrin β valinnalle. Käytännössä laskenta ikään kuin skaalataan jollekin näennäiselle Machin luvulle. Mikäli suoritetaan laskenta dimensiottomassa muodossa, ei yhtälön (13.22) käytöllä ja
Machin luvun keinotekoisella kasvattamisella ole juuri eroa. Jälkimmäinen tapa on
fysikaalinen ja johtaa esimerkiksi Machin luvulla 0,2 pieniin tiheyksien muutoksiin
laskenta-alueessa, kun taas näennäispuristuvuuskeino esitetyssä muodossa asettaa
tiheyden vakioksi koko laskenta-alueessa.
Näennäispuristuvuusmenetelmä on läheistä sukua paljon uudemmalle matriisin
pohjustamiskeinolle (1.26)
Ap
∂u ∂U(u) ∂F(u) ∂G(u) ∂H(u)
+
+
+
+
=0
∂τ
∂t
∂x
∂y
∂z
(13.23)
Pohjustamiskeinossa lähdetään fysikaalisesta tilanteesta, jossa tiheyttä ei aseteta vakioksi. Sen sijaan tehdään näennäislinearisointeja matriisin Ap avulla, joilla fysikaalista tilannetta muutetaan aivan samoin kuin näennäispuristuvuuskeinossa. Pohjustaminen on myös eräänlaista skaalausta, joka voidaan tehdä myös Reynoldsin
luvulle. Probleemasta saadaan periaatteessa hyvin käyttäytyvä skaalaamalla se aina
sopiville Machin ja Reynoldsin luvuille.
Kokoonpuristuvan virtauksen ratkaisijoissa on joko lisätty Jameson-tyyppinen
vaimennustermi tai sitten ylävirtapainotukseen perustuva Riemann-ratkaisu. Nämä
vaimennukset on oltava mukana myös käytettäessä näennäispuristuvuus- tai matriisin pohjustamiskeinoja. Erityisesti pseudoäänennopeuteen perustuvalla Riemannratkaisulla ei ole mitään fysikaalista perustaa. Menettely toimii, koska vastaava ratkaisutapa toimii myös kokoonpuristuvassa tapauksessa. Lisätyllä Jameson-tyyppisellä vaimennustermillä ei tietenkään missään tapauksessa ole mitään fysikaalista tulkintaa. Ratkaisussa on vain pidettävä huolta, että vaimennustermi säilyy pienempänä kuin fysikaalinen vaimennus.
Eräs vaimennustermeihin liittyvä hankaluus on se, että mahdollinen implisiittinen ratkaisu riippuu vaimennustermeistä. Lisäksi aikaintegrointipohjainen menettely johtaa aina paikallisesti hyvin pieniin aika-askeliin siellä, missä laskentatilavuudet ovat pieniä. Tämä heikentää esillä olevan tyyppisten menettelytapojen tehokkuutta. Selvää käsitystä siitä, mikä on näennäispuristuvuuskeinon tehokkuus paine-
13.8. TIHEYSPOHJAISET MENETELMÄT
238
korjausmenetelmään verrattuna, ei ole olemassa. On lisäksi huomattava, että näennäispuristuvuusmenetelmä voidaan myös tulkita eräänlaiseksi painekorjausmenetelmäksi (kts. Ferziger-Peric).
13.8 Tiheyspohjaiset menetelmät
Tiheyspohjaiset menetelmät perustuvat yhtälöön (13.23) ja ratkaisukeinoja selostettiin luvussa 2. Riittävän suurella Machin luvulla ei edellisessä kappaleessa kuvattua
matriisin pohjustusta tarvita. Raja on hyvin tapauskohtainen, ja joskus laskenta konvergoi jopa silloin, kun Machin luku on alle 0,1. Koska tiheyspohjaiset menetelmät
ovat sukua näennäispuristuvuuskeinolle, joka puolestaan voidaan osoittaa olevan likimain sama kuin painekorjausmenetelmä käyttäen yhtä Jacobin iteraatiokierrosta
sen ratkaisuun, voidaan todeta perinteisten ratkaisumenetelmien pohjautuvan saman
kaltaisiin perusideoihin, vaikka ne saattavat vaikuttaa hyvinkin erilaisilta.
13.9 Muita lähestymistapoja
13.9.1 Epäjatkuva Galerkinin keino (discontinuos Galerkin method)
Epäjatkuva Galerkinin menetelmä.
13.9.2 Hila-Boltzmann -menetelmät
Hila-Boltzmann menetelmä
13.9.3 Sileä partikkelihydrodynamiikka (smoothed particle hydrodynamics)
Sileä partikkelihydrodynamiikka.
13.9. MUITA LÄHESTYMISTAPOJA
239
• Painekorjausmenetelmät voidaan jakaa ’SIMPLE’-tyyppisiin, osaaskelten menetelmiin ja MAC-menetelmään. Myös näennäispuristuvuuskeino voidaan tulkita painekorjausmenetelmäksi.
• SIMPLE-tyyppisiä menetelmiä ovat mm. SIMPLER, PISO ja
SIMPLEC. Näistä SIMPLER ja PISO menetelmissä joudutaan
ratkaisemaan Poisson-yhtälö kahdesti iteraatiokierrosta kohden, mutta
toisaalta kierrosten määrä vähenee.
• Pyörteisyys-virtafunktiomenetelmällä saadaan kaksidimensioisessa tapauksessa yhtälöiden lukumäärä vähenemään kahteen, mutta paineen
määritys on hankalaa.
• Kolmidimensioisessa tapauksessa saadaan 6 yhtälöä, koska sekä pyörteisyys että virtafunktio ovat tällöin vektorisuureita
• Näennäispuristuvuus- ja matriisin pohjustamismenetelmissä muutetaan
laskenta hyperboliseksi ja Jacobin matriisin ominaisarvot sellaisiksi, että
ne vastaavat sopivaa alisoonista tilannetta.
• Näennäispuristuvuuskeinon ja painekorjauksen tehokkuuksia eri tilanteissa ei ole juuri evaluoitu.
• Tiheyspohjaiset menetelmät perustuvat yhtälöiden aikaintegrointiin ja
edellyttävät, että tiheys on funktio paineesta
• Matriisin pohjustuksella korvataan tiheyden ja paineen välinen fysikaalinen yhteys numeerisella kytkennällä
• Vuon laskenta suoritetaan yleensä eri tavalla paine- ja tiheyspohjaisissa
menetelmissä, mutta ei aina
• Kaikki menetelmät vaativat eksplisiittisessä vaiheessa jonkinlaisen kytkennän rinnakkaisten paineiden välille
Päivitetty 2.4.2014
240
14 Virtausratkaisijat
14.1 Historiaa
Ensimmäinen kaupallinen virtausratkaisija lienee PHOENICS, joka on ollut markkinoilla vuodesta 1981 lähtien. PHOENICS on monen muun koodin prototyyppi.
PHOENICSin historia alkaa jo 1960-luvulta Imperial Collegessa professori Brian
Spaldingin vetämästä ryhmästä. Painekorjausmenetelmästä kehitettiin Imperial Collegessa SIMPLE-versio 1970-luvun alussa (mm. Patankar-Spalding). Samoilta ajoilta on standardi k − ǫ-mallia koskevat ensimmäiset artikkelit (Launder-Jones). Ns.
teollisuusprosessien simuloinnille oli luotu edellytykset näiden peruspilarien myötä.
Pitkään ratkaisumenetelmät pysyivät käytännössä differenssimenetelminä, vaikka ne oli formuloitu kontrollitilavuusmuotoon. Tämän tradition seurauksena kaupallisissa ohjelmissa vieläkin listataan erilaisia ’koordinaatistovaihtoehtoja’: karteesinen, sylinteri, yleinen käyräviivainen, vaikka kaikki on hoideltavissa yhdellä ja samalla kontrollitilavuusmuodolla.
Toinen menetelmätyyppi, jota teknillisissä sovelluksissa käytetään, on elementtimenetelmä. Ensimmäinen tunnettu elementtimenetelmään perustuva ratkaisija oli
FIDAP. Perinteisessä elementtimenetelmässä päädytään symmetrisiin keskeisdifferenssiä vastaaviin laskentamolekyyleihin. Ohjelmat olivat periaatteessa tarkkoja
verrattuna vanhaan alan standardiin, 1. kertaluvun ylävirtamenetelmään, mutta erittäin epäluotettavia. Elementtimenetelmäpohjaisten ohjelmien käyttö ei ole vieläkään niin yleistä kuin kontrollitilavuusmenetelmään perustuvien, vaikka on kehitetty uusia ns. stabiloituja elementtimenetelmiä. Nämä ovat osoittautuneet käytännössä erittäin käyttökelpoisiksi. Viime aikoina on kehitetty ns. epäjatkuvaa Galerkinin
keinoa, jossa yhdistetään kontrollitilavuus- ja elementtimenetelmiä. Tätä ratkaisutapaa ei ole tiettävästi kaupallisissa koodeissa.
14.1. HISTORIAA
241
Rakenteettomaan laskentahilaan ryhdyttiin panostamaan kaupallisissa ohjelmissa 1990-luvun jälkipuoliskolla. Tunnetuimmilla koodeilla kuten FLUENTilla ja CFX:llä
oli ensin ns. UNS-versiot ja myöhemmin ne korvattiin versioilla, joissa koodi pystyy käsittelemään mielivaltaisen muotoisia laskentatilavuuksia. Rakenteelliset ja rakenteettomat hilat ratkaistaan samalla menetelmällä. FLUENT ja CFX perustuvat
kontrollitilavuusmenettelyyn. On syytä huomata, että tarkoittaessaan elementtimenetelmää, ohjelmistotaloilla saattaa olla termistä erilaisia käsityksiä. Joskus pelkästä
rakenteettoman hilan käytöstä saattaa seurata, että puhutaan ’elementtimenetelmästä’.
Useimmat koodit mainostavat itseään myös kokoonpuristuvalle virtausalueelle.
Harvassa ohjelmassa on kuitenkaan sellaista ratkaisumenetelmää, joka olisi tehokas trans- tai ylisooniselle alueelle asti. FLUENTissa on erilliset ratkaisumenetelmät eri nopeusalueille. Muissa ohjelmissa yleensä lisätään sopivasti vaimennusta,
jolloin saadaan kokoonpuristumattoman alueen koodi toimimaan myös aerodynaamisissa sovelluksissa. Varsinaisissa aerodynamiikkaa varten kehitetyissä ohjelmissa
ratkaisumenetelmä perustuu käytännössä aina aikaintegrointiin ja mitään painekorjausyhtälöä ei käytetä. Tällöin laskennasta myös puuttuu sen ehkä aikaa vievin osa.
Vasta viime vuosina on myös aerodynaamisiin sovelluksiin ollut saatavissa erityisohjelmia, kuten CFD-FASTRAN ja Aerosoftin GASP ja GUST.
Tässä yhteydessä käsitellään lyhyesti tärkeimpiä teollisuusprosessien simulointeihin tarkoitettuja ohjelmia. Laajemmin ohjelmia käsitellään virtaussimuloinnin
kurssilla. Koska näissä on yleensä muutakin kuin puhdasta virtausta, on ohjelmiin
rakennettu malleja kemiallisille reaktioille, säteilylle jne. Yleensä koodit on myös
ohjelmoitavissa, jolloin käyttäjä voi lisätä omia mallejaan. Eräissä valmisohjelmissa on myös kokonaan valmiiksi rakennettuja simulaattoreita erikoistarkoituksiin.
PHOENICS-ohjelmassa on HOTBOX elektroniikkakomponenttien jäähdytykseen,
FLAIR LVI-simulointiin jne.
Ohjelmista osa on tarkoitettu erikoistarkoituksiin, kuten FLOTHERM elektroniikkateollisuuden ja STAR-CD autoteollisuuden ongelmiin. Suurin osa on yleisohjelmia, joiden uskotaan toimivan hyvin kaikissa mahdollisissa tilanteissa. Toisaalta taas eräät, kuten STAR-CD, ovat kehittyneet tietyn erikoisalan ohjelmistoista
kohden yleistä virtausratkaisijaa. Nykyisin johtavissa ohjelmissa ei ole käytännössä
suuria laatueroja. Aika monet niistä jopa mainostavat itseään samalla tavoin ’maa-
14.2. SIMULOINTIOHJELMAN RAKENNE
242
VIRTAUSRATKAISU
Esikäsittely
La
nt
ske
atu
los
Jälkikäsittely
Kuva 14.1: Virtaussimulointiohjelman rakenne.
ilman johtavana ohjelmana CFD-alueella’.
14.2 Simulointiohjelman rakenne
Kaupallinen virtausratkaisija koostuu kuvan 14.1 mukaisesti kolmesta selkeästi erillisestä osasta. Esikäsittelyssä luodaan geometria ja generoidaan laskentahila. Tämän
vaiheen tuloksena saadaan hilan nurkkapisteiden koordinaatit, jotka ovat syöttötietoina varsinaiselle virtausratkaisijalle. Virtausratkaisija tuottaa tuloksena ainakin
paineet ja nopeudet koppien nurkkapisteissä jälkikäsittelijälle. Adaptiivisella hilalla osa esikäsittelystä tehdään ratkaisijan sisällä. Jälkikäsittelyssä tiedot on interpoloitava koppien nurkkapisteisiin, vaikka olisi käytetty keskipisteformalismia ratkaisussa. Muuten koko ratkaisuavaruutta ei saada visualisoiduksi.
Usein esi- ja jälkikäsittelyohjelmat ovat täysin erillisiä kokonaisuuksia, jotka on
vain paketoitu yhteisen valikon alle. Esimerkiksi EnSight-jälkikäsittelijää saa erillisenä ohjelmana ja myös integroituna N3S-ratkaisijaan. Erillisiä esikäsittelyohjelmia
ovat puolestaan esimerkiksi ICEM CFD, IGG, GEMS, ja GridPro. Esikäsittelyohjelmissa on linkkejä virtausratkaisijoihin. Esimerkiksi ICEM CFD tuottaa oikeanmuotoista dataa FLUENT-, RAMPANT-, FIDAP- ja STAR-CD-ohjelmia varten.
Kaikissa yleisohjelmistoissa on jonkin tasoinen oma sisäänrakennettu esikäsittelyohjelma. Sen rinnalle on mahdollista hankkia jokin edellä mainittu esikäsittelijä.
Esikäsittelijöissä on myös CAD-linkki ja pintojen mallinnustapa. Näiden taso
14.3. KATSAUS OHJELMIIN
243
saattaa vaihdella paljonkin ja joskus saattaa olla tarpeen käyttää jotain monipuolisempaa pintojen mallinnuspakettia, kuten PATRAN tai I-DEAS. Pinnat lausutaan
jossain CAD-formaatissa kuten IGES. Hilangenerointivaiheessa pinnoille sovitetaan tiheät verkot, jotka riittävällä tarkkuudella approksimoivat pintaa. Varsinainen
pinta-hila laaditaan käyttäen näitä verkkoja. Kun pintahilat on laadittu, generoidaan
avaruushilat.
Koska simulointiohjelma koostuu kolmesta erilaisesta osasta, saattavat näiden
osien tasot poiketa toisistaan huomattavastikin. Perinteisesti esi- ja jälkikäsittely
ovat olleet simuloinnin heikoimmat linkit ja vasta viime vuosina niiden laatu on
noussut siedettävälle tasolle. Tutkimusympäristössä on myös mahdollista kasata järjestelmä erillisistä osista. Esimerkiksi TKK:lla käytetään esikäsittelyssä kaupallista
IGG-ohjelmaa, ratkaisussa FINFLOa ja jälkikäsittelyssä EnSightia. Esi- ja jälkikäsittelyvaiheissa käytetään myös itse kehitettyjä ohjelmia.
14.3 Katsaus ohjelmiin
14.3.1 PHOENICS
PHOENICS-ohjelmaa voidaan monessa mielessä pitää kaikkien kaupallisten koodien prototyyppinä. Eräänä syynä on Imperial Collegessa opiskelleet henkilöt, jotka ovat levittäneet virtauslaskentatietoutta ympäri maailmaa. PHOENICSin perillisiä ovat olleet ainakin FLUENT, CFD2000, TASCflow ja FLOTHERM. Lisäksi
melkein kaikkien muidenkin ohjelmien ratkaisumenetelmät ovat seuranneet PHOENICSin jalanjälkiä. PHOENICSissä eri laskentamoduuleille on kehitetty enemmän
tai vähemmän kuvaavia nimiä. Varsinainen ratkaisijaosa on nimeltään EARTH, osamallit ovat satelliitteja ja ne linkitetään satelliitteihin maa-asemien avulla. Painekorjausmenettelystä käytetään lyhennystä SIMPLEST, kaksifaasiratkaisijasta IPSA
(Interphase Slip Algorithm). Koodissa on mahdollista käyttää vanhaa limitettyä hilaa, mutta myös kahta eri tyyppistä tavanomaista hilaa. Toisessa käytetään karteesisia nopeuskomponentteja, mutta toisessa kovariantteja. Viimeksi mainittu ratkaisu
todettiin aiemmin kaikkein hankalimmin toteutettavaksi nopeuskomponenttien valinnaksi.
Turbulenssimallien toimivuus eri tilanteissa kaikilla koodeilla on myös todentamaton asia. Kilpailusyistä ohjelmiin rakennetaan suuri joukko malleja, jotka tule-
14.3. KATSAUS OHJELMIIN
244
vat vasta vähitellen käyttäjien (ja tyytymättömien asiakkaiden!) toimesta testatuiksi.
Yleinen käsitys kaupallisten ohjelmien turbulenssimalleista on se, että uudet mallit tulevat käyttöön hitaasti. Eräänä syynä on pyrkimys pitää kaupalliset ohjelmat
mahdollisimman varmatoimisina eli robusteina. Kaikkein yleisimmin käytössä oleva k − ǫ-malli on epätarkka useissa tilanteissa, mutta sen käyttöä suositaan juuri
robustisuuden vuoksi.
14.3.2 CFX
CFX oli aiemmin nimeltään FLOW3D. Se oli peräisin alunperin lähinnä ydinreaktoreiden turvallisuusanalyyseihin keskittyneestä Harwellin tutkimuslaitoksesta. Nykyisin CFX kuuluu Ansysin ohjelmistoperheeseen. Kaupallisesti CFX:ää on myyty
jo vuodesta 1990 lähtien. Ohjelma oli ensimmäisiä, jossa limitetyn hilan rinnalle
otettiin käyttöön Rhie ja Chow-menetelmä. FLOW 3D:ssä oli valittavissa myös toisen kertaluvun diskretointeja jo 1980-luvulla. Diskretointien lukumäärä ei ole kovasti noussut. Listassa on myös edelleen erillisinä menettelytapoina 2. kertaluvun
ylävirtamenetelmä, QUICK ja TVD/MUSCL, vaikka viimeksi mainitun avulla saadaan tietenkin myös kaksi ensin mainittua.
Turbulenssimallit ovat likimain samat kuin PHOENICS-ohjelmallakin. Lisänä
on Reynoldsin vuo-mallit. Koodia markkinoidaan yleisohjelmana, jolla ratkeavat
pyörivien koneiden, laivojen, tulipesien jne. virtaukset. Esitteissä CFX:n laskentanopeutta ’verrattuna toiseen johtavaan CFD-ohjelmaan’ on pidetty hyvänä. Laskentanopeusvertailuihin on aina suhtauduttava epäillen, koska eri laskentatapauksissa
konvergenssinopeudet eivät välttämättä ole yhteneväisiä eri ohjelmilla.
TASCflow oli kanadalaisen ASC:n (Advanced Scientific Computing) kehittämä
ohjelmisto. Kyseessä oli CFX:n tavoin alunperin yleinen virtausratkaisija, mutta
siitä kehittyi vähitellen erikoisohjelma pyörivien koneiden virtauksien laskentaan.
Sittemmin ASC siirtyi AEA Technologyn omistukseen. Myös CFX:ää ryhdyttiin
kehittämään pyörivien virtauslaitteiden laskentaan, ja vähitellen TASCFlow hävisi
markkinoilta. Pyöriviä virtauskoneita, erityisesti kompressoreita ja kaasuturbiineja
varten on edelleen olemassa myös muita erikoisohjelmia.
14.4. LOPUKSI
245
14.3.3 FLUENT
FLUENT on varsin vanha ohjelma, joka alunperin oli lähes sama kuin PHOENICS,
mutta varustettu kätevämmällä ja samalla alkeellisemmalla käyttöliittymällä. 1990luvulla pääyhtiö FLUENT Inc., USA alkoi voimakkaasti kasvaa yritysostoin. Ohjelmistotalo ylläpitää nykyisin myös RAMPANT, NEKTON, POLYFLOW ja FIDAP
-ohjelmia. FLUENT oli markkinoinnissaan varsin aggressiivinen ja kilpaili lähinnä CFX:n ja STAR-CD:n kanssa. Ohjelmiston taso alkoi nopeasti parantua vasta
rakenteettoman ohjelmaversion myötä. Kyseessä oli kokonaan uusi ohjelma, jossa voitiin soveltaa mielivaltaisen muotoisia laskentatilavuuksia. FLUENTkin siirtyi
myöhemmin Ansysin omistukseen. CFX:n ja FLUENTin lisäksi Ansysillä on erikoisohjelmia moniin virtauslaskennan sovelluksiin.
FLUENTissa on tavanomaiset turbulenssimallit ja pääpaino on suuren Reynoldsin luvun malleissa, kuten muillakin ohjelmilla. FLUENT oli ilmeisesti ensimmäinen koodi, jossa tietoisesti ryhdyttiin pimittämään fysikaalisia malleja siten, ettei
niitä edes manuaalista ole saatavilla. Simuloinnin tekijän ei siten edes oleteta tarvitsevan tietää millä tavoin ja mitä ollaan laskemassa. FLUENTissa oli ensimmäisenä
RNG-pohjainen k − ǫ-malli, johon myös liittyy julkistamattomia osia.
14.4 Lopuksi
Tämän kurssin harjoitusten yhteydessä on kehitetty kaksidimensioinen virtausratkaisija, jossa turbulenssin kuvausta lukuunottamatta on jo kaikki ns. kaupallisten
ohjelmien ratkaisijaosien piirteet. Eräiltä osin on jopa käytetty edistyksellisempiä
menettelytapoja, kuin yleensä kaupallisissa ohjelmissa. Tehty koodi eroaa kaupallisista ratkaisijoista lyhyytensä vuoksi. Kun ohjelmaa ryhdytään monipuolistamaan
geometrian kuvauksen ja fysikaalisten mallien osalta, koodin rivimäärä paisuu nopeasti, mutta perusrakenne noudattelee kehittämäämme ratkaisijaa.
Ratkaisumenetelmien hyvyyttä vertaillessa mielipiteet ovat tietenkin subjektiivisia, mutta seuraavassa tuodaan kuitenkin esille eräitä tämän kirjoittajan kokemuksen mukaan tärkeitä virtausten ratkaisualgoritmeihin liittyviä piirteitä:
• menetelmän ja tietokoneohjelman täytyy olla mahdollisimman yksinkertainen. Tämän periaatteen mukaan olemme melko lähellä optimia, kun käy-
14.4. LOPUKSI
246
tetään tavanomaista hilaa ja yksinkertaistettua vaimennustermiä seinämänopeuksien laskennassa.
• yksinkertaisuudesta seuraa myös se, että on tarkoin harkittava kannattaako
tehdä useampia Poisson-yhtälön ratkaisuja iteraatiokierrosta kohden, vaikka kokonaisiteraatiomäärä vähenisikin. Ratkaisuaika tulee iteraatiokierrosta
kohden pidemmäksi ja ohjelma monimutkaistuu. Tämän vuoksi perus-SIMPLE
on edelleen yleisin painekorjausmenetelmä.
• kaikessa numeerisessa laskennassa peruslause
{numeriikka}∆T = {f ysiikka}
(14.1)
kannattaa pitää mielessä. Ferziger-Pericin ’viivästetyn korjauksen’ periaate
on käytännössä sama, mutta monimutkaisemmin formuloitu.
• ratkaisualgoritmissa kannattaa vasemmalla puolella pitää primitiivimuuttujia.
Erittäin sopiva valinta on (p, V~ , T )T . Tällöin mahdollinen tilayhtälö lausutaan
muodossa ρ = ρ(p, T ). Mikäli energiayhtälöä ei käytetä, pudotetaan lämpötila ratkaistavien suureiden vektorista pois.
Päivitetty 24.4.2013
247
Hakemisto
adaptiivinen ratkaisu, 176
Davidsson, 96
ADI, 114, 138
Delaunayn kolmiointi, 178, 184
Aerosoft, 238
delta-muoto, 134
agglomeration multigrid, 176
domain decomposition, 164
aineominaisuudet, 13
Doormaal, 68
alirelaksaatio, 122
nopeuksien, 84
paineen, 84
Amdahlin laki, 169
AMG, 142
artificial compressibility method, 16
Beam ja Warming, 18
EARTH, 241
ekspansioviuhka, 26
elementtimenetelmä
stabiloitu, 237
elliptinen, 69
energian säilyminen, 10
energiayhtälö, 10
bikonjugaattigradienttimenetelmä, 140
kineettisen energian, 33
blokkitridiagonaalinen, 129
sisäenergian, 33
Burgersin yhtälö, 25
CDC-7600, 63
CFD-FASTRAN, 238
CFD2000, 240
CFX, 241
Choleskyn faktorointi, 137
Chorin, 17
constitutive equations, 128
constraint, 11
Coriolisvoima, 219
Courantin kriteeri, 15
Cray T3E, 163
Cray-1, 63
EnSight, 239
entropiaehto, 26
entropiakorjaus, 28
entropy fix, 28
esikäsittely, 239
esitasoittaminen, 148
etenevän rintaman menetelmä, 178, 184
Euler, 31
Eulerin yhtälöt, 13, 31
primitiivimuoto, 32
expansion fan, 26
expansion shock, 26
faktorointi
HAKEMISTO
248
approksimatiivinen, 52, 114
GridPro, 240
DDADI, 139
GUST, 238
LU, 52, 139
LU-SGS, 139
false time step, 84
FAS, 142, 171
Ferziger-Peric, 20
FIDAP, 237, 240
FINFLO, 207, 240
FLAIR, 238
Fletcher, 21
FLOW3D, 241
FLOWTHERM, 238, 240
FLUENT, 63, 240, 242
flux-difference splitting, 18, 39
flux-vector splitting, 18, 39
FMG, 142, 175
forcing function, 173
fractional step methods, 230
full multigrid, 175
Galerkinin approksimaatio, 146
Galpin, 68
GASP, 238
Gauss-Seidel, 115, 136
linjoittainen, 137
red-black, 137
Gaussin lause, 7, 11, 190
GCA, 146
GEMS, 240
geometrinen säilymislaki, 208, 218
GMG, 171
Godunov, 18
haamukoppi, 109, 158
hajautettu muisti, 163
Harlow, 17, 19, 62
harvennusaalto, 28
harvennusaaltoshokki, 28
Harwell, 241
Helmholz-yhtälö, 63, 69
hilangenerointi, 184
algebrallinen, 184
differentiaaliyhtälöllä, 184
elliptinen, 184
hyperbolinen, 184
parabolinen, 184
Hirsch, 21
HOTBOX, 238
huonosti asetettu probleema, 43
hyperbolinen, 11, 31
I-DEAS, 240
ICEM CFD, 240
Idelchik, 64
IGG, 240
ilmansuuntamerkinnät, 16, 109
ILU, 137
Imperial College, 237, 240
implisiittinen menetelmä
Burgersin yhtälön, 55
diffuusiotermi, 52
Eulerin yhtälöiden, 50
kaksidimensioinen, 112
käyräviivainen laskentahila, 194
HAKEMISTO
249
skalaariyhtälön, 55
kokonaisderivaatta, 12
yksidimensioinen, 79, 98
kokonaisenergia, 10
integraalimuoto, 6
kokonaisentalpia, 10
IPSA, 241
kokonaislämpötila, 49
isojen pyörteiden menetelmä, 19
Kolmogorov, 19
iterointi
konjugaattigradienttimenetelmä, 139
aika-askeleen sisäinen, 56
Jacobin iteraatio, 136
Jacobin matriisi, 32, 128, 218, 232
faktoroitu, 53, 55
similaarisuusmuunnos, 36
ylävirtapainotus, 51
jaettu muisti, 163
Jameson, 18
jatkuvuusyhtälö, 7, 11, 23, 46
Johansson, 96
Jones, 19
jälkikäsittelijä, 239
jälkitasoittaminen, 148
jännitystensori, 8
karakteristika, 25, 34, 40, 43
karakteristikamenetelmä, 41
karakteristinen muoto, 39
karakteristinen nopeus, 14, 232
karakteristiset suureet, 39
kertavastus, 64
keskipakovoima, 219
kineettinen energia, 10
kitkakerroin, 214
kitkatermi, 9, 12
kitkaton virtaus, 13
kohtauskulma, 211
konservatiiviset suureet, 35
kontravariantti nopeus
skaalattu, 54, 185, 189
kontrollitilavuusmenetelmä, 6
käyräviivaisella hilalla, 187
rakenteettomalla hilalla, 195
konvektio-diffuusioyhtälö, 5
konvektionopeus, 54, 185, 189
interpolointi, 91
käyräviivainen hila, 200
liikkuvalla laskentahilalla, 218
konvergenssi, 134
kvadraattinen, 128
koordinaatistomuunnos, 187
kovariantti nopeus, 185
kytketty ratkaisu, 68, 129
laskentahila
liikkuva, 216
Launder, 19
Lax-Wendroff -menetelmä, 56
Leibnizin sääntö, 217
level set -menetelmä, 228
liikemäärän säilyminen, 7
liikemääräyhtälö, 7, 12
x-suuntainen, 9
kaksidimensioinen, 110
HAKEMISTO
yksidimensioinen, 24
250
MUSCL, 21, 56
limitetty hila, 17, 73, 227
muunnosmatriisi, 36, 198, 220
line-Gauss-Seidel, 115
MWIM, 92
linearisointi, 128
lähdetermin, 75
tiheyden, 82
lohkorakenne, 158
LU-decomposition, 131
LU-faktorointi
epätäydellinen, 137
LU-hajotelma, 131
epätäydellinen, 137
lämmönjohtavuus, 10
lämmönsiirtokerroin, 216
MAC, 17, 19, 62, 226, 228
Machin luku, 12
marker, 228
marker and cell -menetelmä, 17, 226, 228
massan säilyminen, 7
massatase, 65
materiaaliderivaatta, 12
matriisin pohjustaminen, 14, 17, 233
matriisin pohjustus, 140
modifioitu yhtälö, 21
momentin laskenta, 210
monihilamenetelmä, 141, 170
N3S, 238
Nakayama, 19
Navier, 9
Navier–Stokes-yhtälöt, 30
NEKTON, 242
Newtonin menetelmä, 128
nopeuspotentiaali, 13
nostovoima, 211
numeerinen vaimennus, 21
näennäisaika-askel, 57, 84
näennäisaikaintegrointi, 57
näennäispuristuvuuskeino, 16, 46, 92, 226,
232
octree, 177
ohutkerrosapproksimaatio, 201
ominaissisäenergia, 10
ominaisvektorit
oikeat, 39
vasemmat, 37
osa-askelten menetelmä, 230
painekorjausmenetelmä, 5, 46, 226, 228
käyräviivaisella hilalla, 197
agglomeraatio, 176
limitetyllä hilalla, 78
algebrallinen, 142, 145, 175
putkiverkon, 63
geometrinen, 142, 171
tavanomaisella hilalla, 98
täysi, 142
yksidimensioinen, 62
Moody, 64
MPI, 164
painekorjausyhtälö
kaksidimensioinen, 116
HAKEMISTO
251
käyräviivaisella hilalla, 199
puoli-implisiittinen menetelmä, 82
ominaisuudet, 68
putkiverkko, 64
putkiverkon, 67
puurakenne, 177, 183
tavanomaisella hilalla, 102
PVM, 164
yksidimensioinen, 83
PWIM, 92
pakotefunktio, 173
pyörteisyys, 16
paneelimenetelmä, 18
pyörteisyystensori, 8
parabolinen, 11
parallelization, 157
quadtree, 177
coarse-grain, 158
Raithby, 68
fine-grain, 157
rajakerrosyhtälöt, 13, 18
Patankar, 19, 20
rajoittaminen, 143
Patankarin säännöt, 71
RAMPANT, 240, 242
PATRAN, 240
residuaali, 133
Peclet’n luku, 15
restriction, 143
peilaaminen
reunaehdot, 43, 104, 119, 159
jännitystensorin, 223
Eulerin yhtälöiden, 44
nopeuskomponenttien, 221
fysikaaliset, 44, 47
pyörteisyyden, 223
kiinteän seinän, 49, 119
PHOENICS, 63, 237, 240
käyräviivaisella hilalla, 220
Picardin iteraatio, 129
Navier–Stokes-yhtälöiden, 44
pinta-alan laskeminen, 208
no-slip, 49
pintavoimat, 8
numeeriset, 44
PISO, 68, 230
sisään- ja ulosvirtaus, 48
pivoting, 131
slip, 50
PLIM-menetelmä, 42
syklinen, 160
pohjustusmatriisi, 134
symmetria, 48, 220
Poisson-yhtälö, 63, 69, 116, 126, 227
vapaa virtaus, 48
POLYFLOW, 242
von Neumann, 121
post-smoothing, 148
Reynoldsin luku, 15, 19, 31
pre-smoothing, 148
Rhie ja Chow, 20, 92
primitiivimuoto, 6
Rhie–Chow-interpolointi, 71, 93
prolongation, 143
Riemann-ratkaisu, 18, 27, 39
HAKEMISTO
252
rinnakkaistaminen, 157, 162
Stone, 117
RISC-prosessori, 163
Stonen menetelmä, 137
Roache, 16
substantiaaliderivaatta, 12
Roe, 18
supertietokone, 63
Roen menetelmä, 27
säilymismuoto, 6
sarjamuotoinen ratkaisu, 69
satelliitti, 241
säilymisominaisuus, 18
säilymisperiaate, 6
scaling, 158
Tannehill-Anderson-Pletcher, 21
Scarboroughin kriteeri, 69
TASCflow, 63, 240, 241
seinämäfunktio, 121
tasoittaminen, 143
sequential solution, 69
TCGMSG, 164
shakkilautaratkaisu, 89
tehon laskenta, 210
side-ehto, 11
Thomasin algoritmi, 132
siksak-ratkaisu, 90
Tiheyspohjaiset menetelmät, 234
SIMPLE, 19, 68, 82
tilavuuksien laskeminen, 209
SIMPLEC, 229
tilavuusvoima, 9
SIMPLER, 68, 229
tilayhtälö, 13, 23
SIMPLEST, 229, 241
transfiniitti interpolointi, 184
simultaneous solution, 68
trilineaarinen interpolointi, 147
SIP, 117, 138
turbulenssimallit, 241
skaalautuvuus, 158, 163
skalaarisuure, 6
skalaariyhtälö
ratkaisu, 71
smoother, 143
SOR, 137
Spalding, 19, 63
spektraalisäde, 134
k − ǫ, 19
RNG k − ǫ, 241, 243
algebrallinen, 18
ison Reynoldsin luvun, 121
pienen Reynoldsin luvun, 121
TVD-menetelmä, 20
Univac-1108, 63
staggered grid, 73
V-sykli, 149, 175
STAR-CD, 238, 240
vahvasti implisiittinen proseduuri, 138
Stokes, 9
vaimennustermi, 21, 92
Stokesin yhtälöt, 13
yksinkertaistettu, 106
HAKEMISTO
van Leer, 18, 44
vastusvoima, 211
vektorointi, 161
venymänopeustensori, 8
vesi-isku, 42
viivästetty korjaus, 244
virtafunktio, 16
virtafunktio-pyörteisyys -menetelmä, 16,
46, 231
virtausratkaisija, 239
virtausyhtälöt, 7
yksidimensioiset, 75
VOF, 226, 228
voimien laskenta, 210
volume of fluid -menetelmä, 226, 228
von Neumann, 62
vuon erotuksen ositus, 39
vuovektori, 30
vuovektorin ositus, 18, 39
W-sykli, 149
water-hammer, 42
Welch, 17, 62
ylirelaksaatiomenetelmä, 137
ylispesifioitu probleema, 43
äänen nopeus, 12, 34
253