10. luento
Transcription
10. luento
261 10 Virtaussimulointiympäristön vaatimukset Jotta virtaussimulointia olisi mielekästä lähteä tekemään, on ensin luotava edellytykset kunnollisten simulaatioiden tekemiseksi. Tämä on käsitettävä monelta kannalta, sillä pelkästään riittävän suuren tietokoneen ja ’maailman johtavan ohjelmiston’ hankkiminen eivät täytä tätä määritelmää. On ajateltava myös esi- ja jälkikäsittelyn mukanaan tuomia vaatimuksia, eikä suinkaan pidä väheksyä asiantuntemuksen hankkimista. Parhaatkin laitteistot ja ohjelmistot ovat hyödyttömiä, ellei ole käsitystä siitä mitä ja miten niillä voidaan tehdä. Laitteistojen käsittely oppimateriaalissa on hyvin hankalaa, koska tilanne muuttuu koko ajan ja varhaisempi teksti alkaa nopeasti vaikuttaa vanhanaikaiselta. Seuraavassa tarkastellaan kuitenkin lyhyesti erilaisia virtauslaskijan tarvitsemia apuvälineitä. Myös niiden historiasta saadaan ehkä jonkinlainen käsitys tekstissä säilytettyjen vanhentuneiden esimerkkien avulla. 10.1 Tietokoneet Mikrotietokoneiden kapasiteetin valtaisa kasvu viimeisen 20 vuoden aikana on tuonut virtaussimuloinnin vaatiman laskentakapasiteetin tavallisiin pöytätietokoneisiin. Tietokoneiden jako käyttötarkoituksen mukaan on vaihdellut niiden historian aikana. Eräät termit kuten ’minitietokone’ ovat jo kadonneet kielenkäytöstä. 1990-luvun alussa oli tapana ryhmitellä tietokoneet karkeasti neljään ryhmään: I: Mikrotietokoneet (PC, Mac) II: Työasemat (Sun, IBM, SGI jne.) III: Yhteiskäyttöön ajatellut suurkoneet eli ns. mainframe koneet 10.1. TIETOKONEET 262 IV: Supertietokoneet Näistä mikrot olivat henkilökohtaisia tietokoneita, joilla otettiin pääteyhteys keskuskoneeseen tai työasemaan, jolla varsinainen laskenta oli määrä tehdä. Tulosten raportointi ja mahdollisesti osa esi- ja jälkikäsittelystä tehtiin tuolloin enimmäkseen tämän ryhmän koneilla. Mikrotietokoneluokka jakaantui edelleen IBM:n aikoinaan julkistamaan PC-arkkitehtuuriin ja Applen MacIntosh-koneisiin. Työasemat olivat erityisesti vaativaan graafiseen työskentelyyn ja mahdollisesti ohjelmiston kehitykseen käytettyjä laitteita. 1990-luvun alkupuolella työasemat olivat enimmäkseen työryhmäkohtaisia yhteiskäytössä olevia laitteistoja. Ne erosivat mikrotietokoneista myös prosessorin rakenteen vuoksi, koska niissä käytettiin 64bittistä ns. RISC-arkkitehtuuria (Reduced Instruction Set Computer). Mikrotietokoneissa taas käytettiin CISC-arkkitehtuuria (Complex Instruction Set Computer), joka perinteisesti oli 32-bittinen (IA-32 -arkkitehtuuri), mutta nykyisin sekin on 64bittinen (esimerkiksi ’Intel 64 Architecture’). Myös käyttöjärjestelmät olivat erilaisia, työasemakoneilla UNIX, mikrotietokoneilla Windows. Itanium-prosessorien arkkitehtuuria kutsutaan nimellä IA-64 ja se luotiin aikoinaan vastineeksi RISCprosessoreille. Nykyaikaiset CISC-prosessorit pilkkovat käskyjä lyhyemmiksi, kun taas RISC-prosessoreissa on hyödynnetty CISC-prosessoreiden piirteitä. Erot ovat siten vähenemässä. Suurkoneet olivat tyypillisesti isojen organisaatioiden omaan käyttöön hankittuja numeronmurskausvälineitä, joiden tehtävä oli olla nopeita liukulukulaskennassa. Tällaiseen suurkoneeseen saattoi olla integroituna sen ajan mittapuun mukaan poikkeuksellisen tehokas visualisointilaitteisto tai sellainen asennettiin välittömästi itse suurkoneen yhteyteen. Joka tapauksessa kokonaisuus muodosti laitteiston, jota käytettiin isoissa organisaatioissa. Esimerkkinä voidaan mainita TKK:n IBM 3090, jolla FINFLO-ohjelmankin kehitys aikoinaan aloitettiin. Suurkoneissa oli yleensä laitteistovalmistajien oma käyttöjärjestelmä, esimerkiksi IBM:ssä VM/SP. Supertietokoneiden aika alkaa vuodesta 1976, jolloin esiteltiin ensimmäinen vektorointiin perustuva tietokone Cray-1S. Termiä käytetään edelleen, mutta sen merkitys on nykyisin erilainen. Tehokkaimmat koneet julkaistaan maailman 500 kärjessä -listalla. Superkoneet oli ja on yhä kaikkein nopeimpien koneiden luokka, joka on olemassa vain ja ainoastaan massiivisten numeeristen ongelmien ratkomista varten. Tällaisia laitteistoja ei Suomen kokoisessa maassa yleensä ole yhtä tai kahta useampaa samanaikaisesti ja niitä käsitellään yleensä kansallisina resurssei- 10.1. TIETOKONEET 263 na. Tällainen laitteisto oli vuonna 2000 CSC:n Cray-T3E superkone, jossa oli 512 prosessoria. Myös 128-prosessorinen SGI Origin-2000-kone voitiin silloin luokitella superkoneeksi. Nykyisin superkoneiden nopeus on luokkaa TFlop/s sekunnissa. Koneita käytetään biotieteiden, fysiikan, kemian ja insinööritieteiden laskentatehtäviin. Ilmatieteen laitoksen ensimmäinen superkone oli vuonna 2006 hankittu 304prosessorinen SGI Altix, joka sekin jonkin aikaa viivähti 500 kärjessä -listalla. Supertietokoneiden kohtalona on pudota listalta varsin nopeasti. Maaliskuussa 2013 CSC:n uusi Kajaaniin sijoitettu Cray XC30 laitteisto (’Sisu’) koostuu 11 776:sta laskentaytimestä. Prosessorina on Intel Xeon 2,6 GHz E5–2670. Vuonna 2014 laitteistoa laajennetaan. CSC:llä on myös lähes samantasoinen HP supercluster (’Taito’), jossa on aluksi 9215 laskentaydintä. Supertietokoneiden käyttöjärjestelmä oli aikaisemmin yleensä Unix-pohjainen, nykyisin se on lähes aina jokin Linux-versio. Varhaisissa supertietokoneissa käytettiin vektoriprosessoreita, jotka edellyttivät ohjelmakoodilta vektoroituvuutta. Nykyisin supertietokoneet ovat rinnakkaiskoneita, jotka puolestaan edellyttävät ohjelman rinnakkaistamista. Kalleimmat supertietokoneet saattavat edelleen koostua rinnakkaisista vektoriprosessoreista, kun taas esimerkiksi Suomessa käytössä olevat laitteet perustuvat lähes samaan arkkitehtuuriin kuin henkilökohtaiset työasematkin. Oleellinen ero tulee prosessorien liittämisestä yhteen nopean kytkentäväylän avulla. Tietokoneiden tehon kasvuun liittyy useita tekijöitä. Usein viitataan Mooren lakiin, joka koskee mikropiirien sisältämän transistorimäärän kehitystä. Lain mukaan samalla hinnalla tehdyn piirin transistorimäärä kaksinkertaistuu puolessatoista vuodessa. Transistorimäärä ei ole suoraan verrannollinen laskentatehoon, mutta yleisesti ajatellaan tietokoneiden kapasiteetin kaksinkertaistuvan likimain samassa ajassa. ’Kapasiteetti’ tarkoittaa myös keskus- ja levymuistin määrää, joiden on oltava riittäviä, kun lasketaan entistä suurempia tehtäviä. Prosessoritehon jatkuva kehitys ja siitä seuraava laskentatehon hinnan aleneminen on johtanut kolmen ensin mainitun tietokoneryhmän välisten rajojen hämärtymiseen. Nykypäivän halvimmatkin mikrot ovat selvästi tehokkaampia kuin 1990luvun alun järeimmät supertietokoneet. Erot muodostuvatkin lähinnä prosessoreiden määrästä ja väyläratkaisujen nopeudesta. Kehitys on siten johtanut tilanteeseen, jossa yllä esitetyn listan mukainen luokittelu on miltei mahdotonta. Henkilökohtaiset tietokoneet kuuluvat nykyisin perinteiseen työasema-kategoriaan, vaikka ne ovat ns. PC-koneita. Työasema-nimikettä käytetäänkin nykyisin kaikista hyötykäytössä 10.2. PROSESSORIT 264 olevista koneista. Erot tulevat siitä, mikä käyttöjärjestelmä niihin asennetaan ja millaiset oheislaitteet niihin hankitaan. 10.2 Prosessorit Edellä mainittiin RISC-, CISC- ja vektoriprosessorit. Nämä termit ovat vielä toistaiseksi olemassa, mutta prosessoreissakin muut ominaisuudet ovat tulossa tärkeämmiksi ja raja-aidat ovat osittain katomassa. Maailman nopeimpien koneiden joukossa on vielä muutama perinteinen vektoritietokone. Nämä ovat japanilaisia ja hyvin kalliita. Konetyypille on ominaista se, että koodin vektoroinnista tuleva hyöty (nopeuden lisäys) voi olla monikymmenkertainen verrattuna skalaarilaskentaan. Craytietokoneet kuuluivat aiemmin tähän kategoriaan, mutta nykyisin niissäkin käytetään Intelin tai AMD:n prosessoreita. Vektorointi on nykyisin lisäominaisuutena tavallisissa mikroprosessoreissa, mutta niissä vain melko lyhyet silmukat vektoroidaan. Toisaalta yksittäisten prosessoreiden laskentanopeudet ovat kasvaneet hyvin suuriksi. Aikaisemmin tämä tapahtui lähinnä kellotaajuuden kasvun myötä, nykyisin nopeuden kasvu perustuu rinnakkaislaskentaan. Laskentanopeuden kasvu ja hyvin tehokkaat näytönohjaimet ovat pudottaneet kalliit RISC-koneet lähes kokonaan markkinoilta. Niiden valmistajat ovat siirtyneet tai siirtymässä Intelin tai AMD:n prosessoreihin. Merkittäviä RISCprosessoreita ovat (v. 2013) IBM:n Power ja Sunin Sparc. Kaikki prosessorit suorittavat useita liukulukuoperaatiota sekunnissa. Prosessorin kannalta oikeastaan tyyppiä y =a∗x+b (10.1) olevaa toimitusta vastaa yksi liukulukuoperaatio. Prosessorien laskentanopeuteen vaikuttaa tehtyjen liukulukuoperaatioiden lukumäärä kellojaksoa kohden, mikä on otettava huomioon valinnassa. Perinteinen RISC-koneiden etu oli 64-bittisyys. Ennen suurin osa tietokoneista oli 32-bittisiä, jolloin niiden osoiteavaruus oli maksimissaan neljä gigatavua. Tämä ei ole enää suuri muistikoko virtauslaskennassa ja siksi entinen rajoitus oli suuri haitta virtauslaskennassa. Intelillä on 32- ja 64-bittiset arkkitehtuurit (IA-32 ja IA-64), joita vastaavat prosessorit ovat Pentium ja Itanium2. Näistä viimeksi mainittua käytetään jonkin verran nykyisissä supertietokoneissa. Itanium2-koneet ovat 10.2. PROSESSORIT 265 kuitenkin huomattavasti kalliimpia kuin IA-32 arkkitehtuurin Pentium ja siitä moniprosessorilaskentaan kehitetty Xeon. Tavallisiin pöytäkoneisiin on puolestaan tarkoitettu AMD64-arkkitehtuuri, joka on nyt yleistynyt myös työasemakäyttöön tarkoitetuissa koneissa ja supertietokoneissa. Intel toi markkinoille pian AMD64:n jälkeen Em64T-nimellä kulkevan laajennuksen Pentium- ja Xeon-prosessoreihin. Kun nykyään on käytössä 64-bittinen arkkitehtuuri, muistin teoreettinen yläraja on kadonnut, mutta säilyy fyysisesti riippuen muistipaikkojen määrästä ja muistikampojen koosta. Pöytäkoneeseen saa tällä hetkellä (v. 2011) ainakin 64 gigatavun muistin, mikä riittää varsin pitkälle sekä laskennassa että mahdollisesti vielä suurempien superkoneella laskettujen tehtävien jälkikäsittelyssä. Prosessorit on siis perinteisesti jaettu seuraavasti: I: Vektoriprosessorit (Nec) II: RISC-prosessorit (Power, Sparc) III: CISC-prosessorit (Pentium, Xeon, Itanium2, AMD) Tämä lista saattaa olla virtauslaskijan kannalta muuttumassa. GPU (Graphics Processing Unit) eli grafiikkaprosessori tarjoaa mahdollisuuden saavuttaa suuri laskentanopeus halvalla hinnalla. Grafiikkaprosessoreita varten ei ole juuri ollut saatavilla kääntäjiä, esimerkki näistä on Nvidian CUDA Fortran kääntäjä. Ansys julkisti 11.4.2014 uutisen, jonka mukaan Fluent 15.0 ohjelma pystyy hyödyntämään Nvidian grafiikkaprosessoreita. Intelin vastine Nvidialle on Xeon Phi -prosessori, joka on suunniteltu superkoneiden lisäksi työasemiin sopivaksi. Xeon Phi -prosessorissa on 64 ydintä ja sen huipputeho on noin 1 TFlops. Xeon Phi on ollut käytössä 2013 lähtien käytössä grafiikkaprosessorien ohella CSC:n Bull-tietokoneessa. Kuten edellä todettiin, CISC- ja RISC-prosessoreidenkin erot ovat niiden sisäisessä rakenteessa pienenemässä. Jatkossa kaikki ovat 64-bittisiä. Eroja on väylänopeuksissa ja ns. välimuistien koossa. Välimuistia on yleensä monella eri tasolla. Ykköstason (Level 1) välimuisti löytyy suoraan prosessorin sisältä ja sitä on yleensä erikseen käskykannalle ja datalle suurusluokkaa 10-100 kilotavua. Kakkostason (Level 2) välimuisti saattaa löytyä edelleen prosessorin kanssa samalta piiriltä mutta ei ole varsinaisesti enää suoraan prosessorin sisällä. Sen määrä on yleensä 1-2 megatavua. Itanium2-prosessorissa on myös kolmannen (Level 3) tason välimuistia ennen varsinaista muistia. Itanium2:ssa kolmannen tason välimuisti on integroitu prosessoriin, yleensä kolmannen tason muisti, jos sitä on, löytyy emolevyltä. 10.3. RINNAKKAISLASKENTA 266 Laskentakoodin nopeuteen vaikuttaa myös kääntäjä ja sen suorittama optimointi. Esimerkiksi Fortran90-kielen eri versioita niiden myyjät kehuvat kilvan nopeimmiksi. Kokemuksen mukaan koneen nopeutta on vaikea arvioida sen suoritusarvojen perusteella virtauslaskentasovelluksessa. Nopeus on yksinkertaisesti pakko kokeilla ja erikokoiset tehtävät saattavat vielä toimia varsin eri nopeudella. Suuri laskentanopeuteen vaikuttava tekijä on edelleen kellotaajuus. Virtausratkaisijat rinnakkaistuvat yleensä hyvin, joten laskentaytimien lukumäärää kasvattamalla saadaan nopeus moninkertaiseksi. Periaatteessa kahden ytimen prosessorin voisi kuvitella jopa kaksinkertaistavan laskentanopeuden, mutta nopeuden kasvu hidastuu ytimien lukumäärän kasvaessa. Vain hyvin rinnakkaistuvassa tilanteessa kannattaa ytimien lukumäärää kasvattaa useisiin satoihin. Usein järkevämpi tapa on ajaa useita simulaatioita rinnan. Koneen valinta ei siis ole helppo ja yksikäsitteinen tehtävä, siihen palataan vielä kohdassa 10.10. Jos on mahdollista kokeilla erilaisia koneita, valinta on tietenkin helpompaa. Tässä yhteydessä on syytä korostaa, että eri prosessoreilla on erilaisia ominaisuuksia. Virtauslaskijalle Xeon on yleinen valinta, koska se mahdollistaa moniprosessoroinnin samassa koneessa. Erään vanhentuneen testin mukaan pienissä tehtävissä Xeon oli Pentiumia hitaampi, mutta suurissa tilanne oli päinvastainen. Prosessorit saavuttavat tyypillisesti maksiminopeuden tietyn pituisilla laskentasilmukoilla, minkä jälkeen teho voi aleta paljonkin ja tämä aleneminen näyttäisi olevan Xeonilla hitaampaa kuin Pentiumilla. Myös AMD:n ja Intelin prosessoreissa on eroja, jotka selviävät täsmällisesti vasta koeajojen avulla. Tätä kirjoitettaessa (v. 2011) Intelin uudet prosessorit ovat AMD:n vastaavia nopeampia virtauslaskennassa, mutta tilanne voi muuttua tulevaisuudessa. 10.3 Rinnakkaislaskenta Yli kymmenen vuoden ajan on rinnakkaislaskenta ollut suosituin tapa nopeuttaa laskentaa. Prosessoreiden nopeutuminen on näyttänyt jatkuvan keskeytyksettä, mutta selkein tehonlisäys suurten probleemoiden laskennassa on saavutettavissa rinnakkaislaskennan avulla. Rinnakkaislaskenta tarkoittaa sitä, että laskentatyö jaetaan osiin, joiden laskentaan käytetään useita prosessoreita. Tämän toteuttamisessa on erilaisia tapoja, joista selostetaan tässä yleisimmät. Käytettävissä olevat rinnakkais- 10.3. RINNAKKAISLASKENTA Muisti 267 Muisti Muisti Muisti Muisti Kytkentäväylä Prosessori 0 Prosessori 1 Prosessori n Kuva 10.1: Jaetun muistin arkkitehtuuri. tustavat riippuvat myös siitä millainen laiteympäristö on käytettävissä. Rinnakkaislaskentaa voidaan suorittaa monessa eri mittakaavassa. Työasemakoneen 4–6 ydintä voidaan laittaa yöksi laskemaan rinnan tai kytketään muutama pöytäkone yhteen. Erilaiset yleensä Linux-käyttöjärjestelmää käyttävät klusterit ovat yleistymässä ja monilla laitevalmistajilla on kohtuuhintaisia räkkiversiota tarjolla. Monet ns. supertietokoneet ovat samanlaisia klustereita. Myös valmistajan kiinteämmin yhteen sitomia laitteita, jotka muistuttavat enemmän perinteistä superkonetta, on saatavilla. 10.3.1 Jaetun muistin koneet Jaetun muistin koneet (Shared Memory System) ovat tietokoneita, joissa kaikki prosessorit ovat yhteisen kytkentäväylän välityksellä suorassa yhteydessä samaan muistiin kuvan 10.1 osoittamalla tavalla. Tällaisessa tilanteessa on mahdollista kirjoittaa ohjelma siten, että kaikki prosessit käsittelevät samaa muistiavaruutta ja näin olleen kaikki tieto on siis suoraan kaikille käytettävissä. Tällaisessa tapauksessa ratkaisualue jaetaan yleensä osiin, joiden virtausratkaisun määrittäminen annetaan eri prosessoreille. Ratkaisijoissa, jotka käyttävät rakenteellisia monilohkoisia laskentahiloja, tällainen työn jakaminen on luontevaa. Rakenteettomia hiloja käyttävien ratkaisijoiden tulee itse jakaa työ jollakin automaattisella tavalla. Jaetun muistin kone on SGI UV 2000, joka on saatavissa sekä Linux- että Windows käyttöjärjestelmällä. Tässä koneessa laskentasolmuja yhdistävä verkko on NUMAlink 6, jonka nopeus on 240 Gb/s. 10.3.2 Hajautetun muistin koneet Hajautetun muistin järjestelmässä (Distributed Memory System) kullakin prosessorilla on oma prosessorikohtainen muistinsa, joka ei ole muiden prosessoreiden käy- 10.3. RINNAKKAISLASKENTA 268 Kytkentäväylä Prosessori 0 Prosessori 1 Prosessori n Muisti Muisti Muisti Kuva 10.2: Hajautetun muistin arkkitehtuuri. tettävissä. Menetelmän etu on, että prosessorin ja muistin välinen liikenne voidaan järjestää nopeammaksi kuin väylän yli operoitava liikenne jaettuun muistiin. Koko muistin käyttöön ottaminen vaatii luonnollisesti työn jakamista useammalle prosessorille ja toisaalta eri prosessien täytyy kommunikoida keskenään, jotta tarvittava tieto vaihtuisi. Työn jakaminen osiin toteutuu muilta osin aivan samoin kuin jaetun muistin ympäristössä, mutta tiedon vaihtaminen vaatii eksplisiittisiä toimenpiteitä. Kuva 10.2 havainnollistaa hajautetun muistin käsitettä. Useimmat supertietokoneet, kuten edellä mainittu Cray, ovat tätä tyyppiä. Hajautetun muistin tapauksessa ei kyseessä ole oikeastaan yksi tietokone, vaan useammasta koneesta nopealla verkolla yhdistetty kokonaisuus. Joskus käytetään termiä ’klusteri’, mutta sen ja ’varsinaisen supertietokoneen’ ero on hämärtymässä. Tavallisimmin laskentasolmujen välinen verkko toteutetaan joko perinteisillä Ethernet- tai nopeammilla Infinibandkytkimillä. Yhden gigabitin verkko siirtää solmujen välillä tietoa nopeudella 1 Gb/s ja QDR-Infiniband-verkko nopeudella 40 Gb/s. Kuten aiemmin todettiin NUMAlink 6 -verkon nopeus on tätä kirjoitettaessa (v. 2014) kaikkein suurin eli 120 Gb/s. Rinnakkaistamisen teho suurella ydinmäärällä on suuresti riippuvainen kytkentäverkon nopeudesta. Ethernetiin perustuva klusteri ei todennäköisesti toimi hyvin kuin alle sadalla laskentaytimellä. On kuitenkin muistettava, että teho riippuu myös simulointitehtävästä. 10.3.3 Rinnakkaistamistekniikat Rinnakkaistamiseen on käytettävissä kaksi eri peruslähtökohtaa: Toinen on kääntäjädirektiivien käyttäminen ja toinen on rinnakkaistaminen käyttäen viestinvälityskirjastoja. Ensin mainitussa lähdekoodiin laitetaan kääntäjälle tarkoitettuja erikoiskoodeja, jotka kertovat mitkä osiot ovat ajettavissa rinnakkain ja miten. Direktiivit 10.4. KÄYTTÖJÄRJESTELMÄT 269 voivat sisältää myös tietoa datan jakamisesta eri prosessien kesken jne. Periaatteessa tämä lähestymistapa on mahdollinen myös hajautetun muistin koneessa käyttäen HighPerformance Fortran kieltä, mutta yleisemmin se on käytettävissä vain jaetun muistin koneessa. Hajautetun muistin järjestelmässä kääntäjän tulisi direktiivien perusteella päätellä mihin kohtiin lähdekoodia tulee sijoittaa viestinvälitystä. Viestinvälitystä käytettäessä prosessien välinen kommunikointi hoidetaan eksplisiittisesti ja jokainen prosessi on täysin itsenäinen. Tämä tarkoittaa sitä, että mikään muuttujan arvon vaihtuminen ei välity muille prosesseille, ellei sitä erikseen lähetetä niille. Tämän vuoksi rinnakkaistaminen viestinvälityksellä on varsin koneläheistä, koska kaikki tiedonvälitys on tehtävä eksplisiittisesti. Toisaalta se tarjoaa myös vapauksia siinä suhteessa, että prosesseja ei synkronoida, ellei niin erikseen vaadita. Ohjelmistojen rinnakkaistumisen tehoissa on eroja, joita ei niiden nopean kehityksen vuoksi voida tässä esittää. Mikäli aiotaan tehdä massiivisesti rinnakkaista laskentaa, on ohjelman tehokkuus varmistettava etukäteen. Optimaalisessa tilanteessa saadaan täydellinen skaalautuvuus eli laskentanopeus kasvaa samassa tahdissa kuin laskentaytimien määräkin. 10.4 Käyttöjärjestelmät Eräs koneiden jakotapa on tarkastella niiden käyttöjärjestelmää. 1990-luvulla käytettiin paljon Unix-käyttöjärjestelmää (Linux , Solaris, IRIX, UNICOS, AIX, jne.) tutkimuslaitosten RISC-koneissa. Se on sittemmin korvautunut lähes kokonaan Unixin kotitekoisella versiolla (Linux) ja PC-koneilla. Myös moni perinteinen valmistaja on siirtynyt Linuxin käyttöön, Sunilla on ainakin vielä oma Solaris-käyttöjärjestelmänsä. Windows-95/98/NT/XP/jne. käyttöjärjestelmä on vallitseva systeemi tavanomaisessa toimistotyössä ja mitä laajemmalle virtaussimulointien teko on levinnyt, sitä suuremmaksi on Windowsin osuus niissä tullut. Uppoutumatta sen syvemmälle käyttöjärjestelmien hienouksiin, voidaan näistä todeta seuraavaa: • Linux on toimiva perinteinen moniajojärjestelmä, jota käytetään myös maailman nopeimmissa tietokoneissa. Windows on superlaskennassa harvinaisempi vaihtoehto. 10.4. KÄYTTÖJÄRJESTELMÄT 270 • Linux-koneeseen on mahdollista ottaa ssh-yhteys ulkopuolelta esimerkiksi verkon välityksellä ja käyttää konetta aivan kuin olisi ottanut yhteyttä konsolilta. Windows-koneessa vastaava SSH-etäkäyttöohjelma on PuTTY. • Linux on suunniteltu vain järjestelmän käynnissä pitämiseen. Windows on ajateltu työntekijän integroiduksi työpöydäksi. Tätä tarkoitusta varten Linuxmaailmassa on erilliset ikkunointiohjelmistot. Monilta osin Windowskin sisältää Unixin piirteitä, mutta käytännössä järjestelmä ei ole yhtä stabiili. Ongelmat eivät sinänsä läheskään aina ole kiinni käyttöjärjestelmästä, vaan niiden päällä ajettavat sovellusohjelmat saattavat sivuvaikutuksena hyydyttää koko muun järjestelmän. Valitettavan usein niinkin arkinen sovellus kuin tekstinkäsittelyohjelma saattaa jumiutua ja sivuvaikutuksena lamauttaa koko järjestelmän. Periaatteessa sama saattaa tapahtua Linuxissakin, mutta ainakin toistaiseksi Linux tarjoaa paremmat työkalut ongelmista toipumiseen. Windowsin eräs kiusallinen piirre ovat virukset, jotka aiheuttavat paljon lisätyötä. Unix-pohjaisista käyttöjärjestelmistä puhuttaessa nykyisin yleensä tarkoitetaan Linux-käyttöjärjestelmää. Se on PC-koneisiin kehitetty ilmainen Unix, jonka suosio on kasvanut erityisesti laskentapalvelimissa ja teknisissä sovelluksissa vuoden 1996 jälkeen. Se tarjoaa mahdollisuuden yhdistää mikro- ja työasemamaailmojen parhaat puolet, koska sen voi asentaa käytännöllisesti katsoen mihin tahansa PC-koneeseen, mutta siinä ei ole eräitä Windowsin rasitteita. Haittapuolena on vastuun ottavan kaupallisen organisaation puute, tämä näkyy erityisesti ohjelmisto- ja ajuritarjonnassa. Linuxiin saa kaikista virtaussimuloinnissa tarvittavat ohjelmat, mutta esimerkiksi taulukkolaskentaohjelma on LibreOfficessa (entinen OpenOffice) vieläkin heikompi kuin Excel. Myös epäyhteensopivuus muun konttorikonekannan kanssa hankaloittaa Linuxin käyttöä. Linux on kuitenkin varteenotettava vaihtoehto harkittaessa virtauslaskentaympäristön rakennetta. Peruslaitteistoon pääsee kiinni varsin pienillä hankintakustannuksilla ja useasta Linux-työasemasta on helppo toteuttaa työasemaklusteri, jossa rinnakkaislaskenta on suhteellisen vaivatonta. Linux-ympäristön selkeä etu on kohtuullisen laaja ilmaisohjelmien saatavuus. Linuxin käyttöönottokynnys on madaltunut merkittävästi valmispakettien kehityksen myötä. Tätä nykyä kuka vain voi kohtuullisen pienellä vaivalla asentaa itselleen täysiverisen Linux-järjestelmän, joka pitää sisällään tekstinkäsittelyohjelmiston (GNU-Emacs, TEX / LATEX), toimistoohjelmat (LibreOffice), C- ja/tai Fortran-kääntäjän ja erilaisia graafisia työkalu- 10.5. TIETOKONEEN PERUSVARUSTUS ja (xv, okular, gsview/ghostscript). 271 Virtauslaskentaohjelmaksi voi ladata ilmai- sen OpenFOAM-ohjelmiston, jolle on saatavissa myös esi- ja jälkikäsittelyohjelmia. Tällainen Linux-pohjainen järjestelmä on erittäin suositeltava vaihtoehto, koska kokemuksen mukaan tutkimusmaailmassa on henkisesti helpompaa operoida Windows-maailman ulkopuolella. Kaupallisista ohjelmista on saatavissa versiot kaikille yleisesti sovellettaville käyttöjärjestelmille. Sekä Linux että Windows soveltuvat henkilökohtaisessa työasemassa käytettäväksi, kyse on lähinnä henkilökohtaisista tottumuksista ja siitä minkälaisia vitsauksia on tottunut kestämään. Windowsin kanssa tulee monenlaista ongelmaa ja sen käyttäjä on usein ns. IT-ammattilaisten armoilla. Jotkin vikatilanteet voivat kestää päiväkausia. Linux-käyttäjä pääsee monessa suhteessa vähemmällä, mutta joutuu sietämään epäyhteensopivuuksia toimisto-ohjelmissa ja hankittu uusi hieno näyttö saattaakin jäädä mustaksi. IT-väki ei yleensä ole riesana, mutta käyttäjällä on syytä olla itsellään käyttöjärjestelmän perustuntemus, muuten hän on todennäköisesti erittäin pahassa pulassa. Tietojenkäsittelymaailmaa ei tällä hetkellä voi pitää valmiiksi rakennettuna. Mielenkiintoinen vaihtoehto saattaa olla Mac, jossa on Unix-pohjainen käyttöjärjestelmä. MacIntosh-koneita ei kuitenkaan juuri ole virtauslaskennassa käytössä. 10.5 Tietokoneen perusvarustus Hankittaessa konetta virtaussimulaatioita varten, on koneen kapasiteetti mitoitettava kaikin puolin vastaamaan asetettua vaatimustasoa. Muistia on syytä olla riittävästi ja vastaavasti levytilaa on oltava sujuvan työnteon edellyttämä määrä. Näytönohjain on yllättävän tärkeä visualisoitaessa suuria tehtäviä. Se mitä koneen vaatimukset numeroiksi puettuna ovat, riippuu ratkaisevasti ajateltujen virtauslaskujen laajuudesta. Toinen seikka, joka myös vaikuttaa asiaan, on käytetty virtausratkaisija. Seuraavat arviot tarvittavasta kapasiteetista on tämän vuoksi otettava suuruusluokka-arvioina, ei absoluuttisena totuutena. Ne perustuvat FINFLO-virtausratkaisijan tilavarauksiin erilaisissa virtaustilanteissa. Tietokoneen hintaa ajatellessa kannattaa suhteuttaa se muihin kuluihin, kuten ohjelmistolisenssien hintaan tai palkkoihin. Lisäksi on hyvä muistaa, että jonkin verran kalliimpi laitteisto on myös pidempään käyttökelpoinen. Jonkinlaisena karkeana nyrkkisääntönä voidaan pitää, että miljoonan laskentatilavuuden tietokoneajo vaatii vähintään yhden gigatavun verran muistia. Tämä riip- 10.6. OHEISLAITTEET 272 puu tietenkin paitsi ohjelmasta, tehtävän luonteesta ja valitusta ratkaisumenetelmästä. Fluentilla tiheys- ja painepohjaiset ratkaisut vaativat eri määrän muistia. Neljään gigatavuun rajautuvalla 32-bittisellä koneella voitiin siis jo laskea kohtalaisen kokoisia tehtäviä, mutta tällä hetkellä muistia kannattaa hankkia moninkertainen määrä. Varsinkin, jos koneessa on useampia prosessoreita, muistia tarvitaan enemmän. Levytila on nykyään halpaa ja sitä on paljon tarjolla. Järeän luokan työasemakoneisiin jopa teratavuluokkaa. Levyjä voi olla useita kappaleita, mikä saattaa olla järkevää, jos halutaan säilyttää systeemilevy vain käyttöjärjestelmälle ja kotihakemistolle varattuna ja pitää paljon dataa sisältävä työlevy erillisenä. Eräänä nyrkkisääntönä on kuitenkin se, ettei levytilaa loppujen lopuksi ole koskaan tarpeeksi. Virtauslaskijan työasemaan on varattava usean sadan gigatavun kokoinen levy tai levyjä. Jos työasemalla tehdään samanaikaisesti simulointia ja muuta työtä, on tarkoituksenmukaista hankkia kahdella prosessorilla ja mahdollisimman monella ytimellä varustettu malli. Konetta voidaan tällöin käyttää rinnakkaislaskennassa tai ajaa useampaa tehtävää kerralla. Jos muistia on riittävästi, konetta voidaan käyttää laskennan aikana esimerkiksi visualisointiin. Järjestely on todettu erittäin hyvin toimivaksi ja siitä annetaan vielä historiallinen esimerkki kohdassa 10.10.2. Tietokoneen eräs tärkeimmistä osista on näytönohjain, jonka rajat tulevat suuria tehtäviä visualisoitaessa vastaan. 1990-luvulla käytettiin RISC-työasemia, joiden graafiset ominaisuudet olivat siihen aikaan ylivoimaisia. Sen jälkeen on PCkoneissa käytetty erikoisnäytönohjaimia (esimerkiksi Wildcat), kuten luvun 10.10.2 käytännön esimerkissä. Runsas pelikäyttö on nopeuttanut näytönohjaimien kehitystä ja ajanut esimerkiksi 3DLabsin Wildcatin kaltaisten erikoisohjaimien ohi. Virtaussimulointia varten ohjain on kuitenkin hankittava valikoiman kalliimmasta päästä ja mieluiten insinöörisovelluksia varten tarkoitettu malli. Peliohjaimissa korostetaan nopeutta tarkkuuden kustannuksella, visualisointikäytössä tarvitaan molempia. 10.6 Oheislaitteet Pelkän tietokoneen avulla ei virtauslaskentaympäristö ole vielä valmis. Jotta laskennan tuloksista saataisiin mitään mustaa valkoiselle, tarvitaan vähintäänkin jonkinlainen tulostin. Käytännössä järkevä hankinta nykypäivänä on PostScript lasertulostin, koska useimmat sovellusohjelmistot tuottavat mm. PostScript formaattia. 10.7. OHJELMISTOT 273 Miellyttävä — nykyisin ehkä välttämätön — lisävaruste on korkeatasoinen väritulostin. Hyvin usein tuloksista on kohtuullisen vaivatonta generoida värikuvia, mutta ne on syytä voida myös tulostaa paperille. Tähänkin tarkoitukseen PostScripttulostin on hyvä vaihtoehto. Värikuvien ajateltu käyttötarkoitus vaikuttaa siihen minkä tyyppinen väritulostin on paras. Tärkeä osa mitä hyvänsä tietokoneympäristöä on varmuustallennuslaitteisto. Näin mm. siksi, että tietokonejärjestelmän muuttuvasta datasta on syytä voida ajaa varmuuskopiot määrävälein. Toinen syy on tietojen siirtäminen muualle uuteen laitteistoon, sillä aina verkko ei ole oikea ratkaisu, ja joskus se ei ole edes vaihtoehto. Edullinen ratkaisu tähän tarkoitukseen on ns. DAT-nauhuri (Digital Audio Tape), mutta kapasiteetiltaan ja nopeudeltaan merkittävästi parempia vaihtoehtoja ovat ns. DLT-nauhuri (Digital Linear Tape) ja LTO-nauhuri (Linear Tape Open). Valitettavasti laatu ja luotettavuus näkyvät myös tuotteiden hinnoissa. Pakollinen arkistointiväline on polttava CD- tai DVD-asema, jonka avulla tiedostojärjestelmän osista on mahdollista tehdä kopioita CD- tai DVD-levylle. Yleistymässä on Blu-ray, jonka tallennuskapasiteetti on edellisiä suurempi. Levyille voidaan arkistoida probleemakokonaisuuksia dokumentaatioineen siten, että koko arkistoitu tiedostojärjestelmä on käsiteltävissä suorasaantitiedostona. Kokemus on nimittäin osoittanut, ettei kovalevytilaa ole koskaan liikaa, harvoin edes tarpeeksi. Tämän vuoksi kokonaisten hakemistorakenteiden tallettaminen helposti saatavissa olevaan muotoon on koneen käyttäjäkunnan yhteinen etu. 10.7 Ohjelmistot Laitteiston mukana hankittavat ohjelmistot määräytyvät jossakin määrin hankitun laitteiston tyypin ja käyttöjärjestelmän perusteella. Tässä ei kuitenkaan ole aikomus luetella tyypillisiä konttoriohjelmistoja vaan niitä, jotka voivat merkittävästi edistää virtauslaskentaympäristön toimivuutta. Jos lähtökohtana on oman virtauslaskentaohjelmiston kehittäminen ja käyttäminen, on jonkinlaisen kehitysympäristön perustaminen välttämätöntä. Tähän palataan lähemmin kohdassa 10.8. Virtausratkaisijan lisäksi tarvitaan esikäsittelijät geometriamallin luomiseen ja jälkikäsittelijät tulosten visualisointiin. Sellaiset ovat yleensä integroituna kaupalliseen virtauslaskentaohjelmistoon, mutta lähes aina eteen tulee tilanteita, joissa ne eivät kuitenkaan generoi kaikkia haluttuja suureita. Tällaisissa tilanteissa omat esi- 10.8. KEHITYSYMPÄRISTÖ 274 ja jälkikäsittelyohjelmistot ovat pistämätön apu. Niiden kirjoittamiseen tarvitaan väistämättä kääntäjä, mutta alkuvaiheessa tällainen ei siis ole ehdottoman välttämätöntä. Usein on niin, että ratkaisijaan integroidut esi- ja jälkikäsittelijät täyttävät ns. perustarpeet, mutta kokemuksen mukaan niiden rajoittuneisuus tulee kuitenkin vielä nykytilanteessa helposti vastaan monimutkaisissa virtaustapauksissa. Tämän vuoksi usein pitkän päälle toimivin ratkaisu on hankkia erilliset ohjelmistot, jotka on suunniteltu geometrian mallinnukseen ja toisaalta tulosten visualisointiin. Näin kussakin työvaiheessa käytetään tehokkaita välineitä eikä aikaa hukata puutteellisten ohjelmistojen kanssa rimpuiluun. Näihin valintoihin palataan vielä kohdassa 10.9. Riippuen siitä millainen laskentaympäristö perustetaan, saattaa olla tarpeellista hankkia joitakin ohjelmistoja koneiden välisen verkottamisen helpottamiseksi. Yksi tällainen on NFS (Network File System), jolla tiedostojärjestelmiä voidaan jakaa verkon yli. Joissakin käyttöjärjestelmissä NFS tulee mukana, mutta joihinkin se täytyy hankkia erikseen. Toinen mahdollisesti tarvittava ohjelmisto on MPI (Message Passing Interface), jonka avulla rinnakkaislaskenta verkon yli on mahdollista. MPI:stä on olemassa ilmaisia toteutuksia, mutta useimmat laitteistotoimittajat tarjoavat myös omaa toteutustansa korvausta vastaan. 10.8 Kehitysympäristö Jos lähtökohtana on joko oman virtauslaskentaohjelmiston tai simulointiin liittyvien apuohjelmien kehittäminen ja käyttäminen, on laitteiston mukana syytä hankkia kääntäjät mieluiten sekä C- että Fortran-kielelle. Kuten aiemmin ilmeni, Linuxympäristöön on saatavilla ilmaiset C- (gcc) ja f90-kääntäjät. Vaikka aikomus olisikin vain käyttää kaupallista valmisohjelmaa, voi tämän lisäksi piakkoin tulla eteen jonkun kääntäjän hankkiminen, jotta omia jälkikäsittelyohjelmia voisi kätevästi kirjoittaa. Toinen käytännön tilanne, jossa kääntäjän hankkiminen voi osoittautua välttämättömäksi, on esimerkiksi oman konvertterin kirjoittaminen. Lopputulos on se, että toimiva kääntäjä ja siihen liittyvät kehitystyökalut on hyvä hankkia. Näillä tarkoitetaan lähinnä toimivaa debuggeria ja lähdekoodianalysaattoria. Usein yksinkertaiset tällaiset työkalut tulevat kääntäjän mukana, joten erillistä työkalua ei välttämättä tarvitse hankkia. Lisävarusteena kehitysympäristössä on hyvä olla profilointiohjelmisto, jolla voidaan analysoida kirjoitetun ohjelman 10.9. JÄLKIKÄSITTELY-YMPÄRISTÖ 275 Esikäsittelijä / hilan generointi Virtausratkaisija Konversio−ohjelmisto Visualisointi ja analysointi Lopulliset tulokset Kuva 10.3: Virtaussimulaatioprosessin eri vaiheet. proseduurien viemää aikaa. 10.9 Jälkikäsittely-ympäristö Varsin keskeinen osa virtauslaskentaa on tulosten jälkikäsittely, jota tarkastellaan lähemmin seuraavassa luvussa. Se pitää sisällään kaiken mikä tapahtuu sen jälkeen kuin varsinainen virtausratkaisu on laskettu. Tyypillisiä toimenpiteitä ovat paineja nopeusjakaumien tarkastelu, mutta hyvin pian kiinnostaviksi muodostuvat monimutkaisemmat toimenpiteet kuten virtaviivojen laskenta, virtauskentän mielivaltaisten poikkileikkausten tarkastelu tai eri suureiden perusteella määritettyjen tasaarvopintojen tarkastelu. Kuvassa 10.3 on esitetty virtaussimulaation eri vaiheet, joista useampi voi tapahtua yhden integroidun työkalun avulla. Jälkikäsittelyn apuna ja tulosten käsittelemisessä voidaan käyttää taulukkolas- 10.9. JÄLKIKÄSITTELY-YMPÄRISTÖ 276 kentaohjelmistoja sekä niiden piirto-ominaisuuksia, mutta niiden kanssa ongelmaksi saattaa muodostua datan siirtäminen sopivassa formaatissa. Oletetaan nyt kuitenkin, että formaattiongelmat on saatu tavalla tai toisella ratkaistuksi. Tällöin taulukkolaskentaohjelmistolla, kuten Excelillä tai vastaavalla, voi kohtuullisen vaivattomasti piirtää käyriä datasta siinä muodossa kuin se on ratkaisusta saatu ulos. Yleensä tämä tarkoittaa suureiden arvoja laskentahilan solmupisteissä, jotka taas eivät välttämättä ole tasavälisesti tai edes samalla suoralla. Jonkinlaisia jakaumakuvia voidaan näin kuitenkin tehdä, ja lisäsuureiden laskeminen aritmeettisin kaavoin tunnetusta ratkaisusta on Excelillä helpohkoa. Taulukkolaskentaohjelmiston rajat tulevat kuitenkin vastaan nopeasti, eikä kaikkea haluttua saada näkyviin. Kaiken vähänkään 3D-visualisointiin viittaavan tekeminen ilman kunnollisia visualisointityökaluja on hyvin työlästä. Kaikki tasoleikkaukset ja suureiden interpoloinnit mielivaltaisiin pisteisiin ovat äärimmäisen vaativia operaatioita. Eräs vaihtoehtoinen lähestymistapa Excel-tyyppiselle jälkikäsittelylle on kirjoittaa omia jälkikäsittelyohjelmistoja, jotka laskevat datasta haluttuja suureita ja tulostavat ne sopiviin tiedostoihin. Näitä voidaan sitten käyttää lähtötiedostoina yleisille käyränpiirto-ohjelmille, joita on jopa saatavilla ilmaiseksi. Tällaisia ovat esimerkiksi gnuplot ja DISLIN. Myös Python-ohjelmointikieli sisältää kuvien piirtoon sopivia työkaluja. Tämän lähestymistavan etu on, että halutut laskelmat koskien johdannaissuureita voidaan tehdä erillisellä ohjelmalla, joka ei riipu mitenkään käytetystä piirto-ohjelmasta. Tällöin piirto-ohjelman ei tarvitse tietää mitään siitä miten numerot on luotu ja se voidaan optimoida tekemään oma työnsä mahdollisimman tehokkaasti. Vaativia visualisointeja varten on käytettävä kaupallista ohjelmistoa, jonka ominaisuudet on räätälöity ajatellen virtaussimulaatioiden jälkikäsittelyä. Tällaisia ovat mm. EnSight ja FIELDVIEW. Paraview on vapaan lähdekoodin ohjelma, jota käytetään erityisesti OpenFOAMin yhteydessä. Tällaiset ohjelmat osaavat yleensä tehdä kaikkia niitä jälkikäsittelyoperaatioita, joista virtauslaskija on kiinnostunut kuten esimerkiksi virtaviivojen laskenta, tasa-arvopintojen ja -käyrien laskenta, tasolla leikkaaminen ja tavanomaisimpien johdannaissuureiden laskeminen. Lisäksi ne osaavat lukea yleisimpiä datan tallennusformaatteja, joten mikäli käytössä oleva virtausratkaisija tuottaa datat jossakin yleisesti tunnetussa formaatissa, on varsin todennäköistä, ettei väliin enää tarvita konversio-ohjelmaa. Näin on tilanne esimerkiksi EnSightin kohdalla, joka osaa lukea mm. PLOT3D-formaatissa olevia tiedos- 10.10. VIRTAUSLASKENNAN TYÖVÄLINEET 277 toja. TKK:n CFD-ryhmän kehittämä FINFLO tuottaa tuloksensa tässä formaatissa, minkä ansiosta mitään konvertteria ei tarvita. Kaupallisissa virtauslaskentaohjelmistoissa on integroituna melko korkeatasoiset visualisointityökalut. Näin on esimerkiksi FLUENTissa ja ANSYS CFX:ssä. Aina ei aivan kaikkia haluttuja asioita ei pystytä visualisoimaan näillä työkaluilla ja joudutaan turvautumaan omiin jälkikäsittely- ja piirto-ohjelmiin. Tämä vaihe voikin sitten olla hankala, koska ohjelmiston tuottamien tiedostojen formaattia ei välttämättä ole dokumentoitu julkisesti. 10.10 Virtauslaskennan työvälineet 10.10.1 Esimerkkejä simulointiympäristöistä Tässä luvussa aiemmin esitetyn materiaalin perusteella ja perustuen kirjoittajan omiin kokemuksiin esitetään nyt kannanotto siihen millainen kalusto tarvitaan virtauslaskentaa varten. Ensin esitetään minimivaatimustaso eli ns. "köyhän miehen laitteisto"(kts. kuva 10.4), ja seuraavaksi laajemman työryhmän laiteympäristö, joka on tässä tapauksessa laadullisesti TKK:n CFD-ryhmän laitteiston kuvaus (kuva 10.5). CFD-ryhmän laitteisto ei sinällään vastaa täysin todellisuutta, mutta edustaa tässä tutkimusryhmälle soveltuvaa kokonaisuutta. On lisäksi huomautettava, että laitteisto on varsin kohtuuhintainen. "Köyhän miehen laitteisto" • Kohtuullisen tehokas työasema. Prosessoritason referenssiarvona voinee pitää n. 3 GHz AMD- tai Xeon-prosessoria. Suositeltavaa valita kahden prosessorin malli ja riittävä määrä laskentaytimiä. Vapaata levytilaa käyttäjän datoja varten yli 1 TB ja keskusmuistia mielellään vähintään 8 Gt. Näytönohjaimen ja monitorin olisi syytä olla muuta kuin tavaratalon halvin malli. • Tulostin. • DAT- tai vastaava edullinen nauhuri. • Virtauslaskentaohjelmisto. • Alan kirjallisuus • Virtausmekaniikkaa, tietokoneita ja ohjelmointia harrastava taitava käyttäjä. 10.10. VIRTAUSLASKENNAN TYÖVÄLINEET 278 Kuva 10.4: Virtauslaskijan perustyövälineet vuonna 2000. "CFD-ryhmän laitteisto" • Tehokas laskentapalvelin varsinaisia tuotantoajoja varten. TKK:n CFD-ryhmällä oli v. 2006 klusteri-tyyppinen tietokone, joka koostui 6 erillisestä tietokoneesta. Tietokoneet olivat 5 cm korkeita, joten niitä mahtui kaappiin useita päällekkäin. Jokaisessa tietokoneessa oli 2 kappaletta 64-bittisiä 3,4 GHz kellotaajuudella toimivia Intel Xeon-prosessoreja. Prosessorien väylänopeus oli 800 MHz ja niissä oli 2 Mt välimuisti. Jokaisessa koneessa oli DDR2tyyppistä keskusmuistia 3 Gt ja 160 Gt kiintolevy. Käyttöjärjestelmänä oli Redhat Linux 4 ES. Vastaava laitteisto on nykyään tehokkaampi ja halvempi. • Jokaisella tutkijalla henkilökohtaisena tehokas graafinen työasema, jossa paikallista laskentatehoa kohtuullisesti. Keskusmuistia 10 Gt ... 20 Gt ja kiintolevyjen koot yli 500 Gt. • Korkealuokkainen väritulostin (PostScript). • Korkealuokkainen mustavalkotulostin (PostScript). • Varmuuskopiointiin DLT-nauhuri. • Virtauslaskentaohjelmisto 10.10. VIRTAUSLASKENNAN TYÖVÄLINEET 279 Kuva 10.5: Esimerkki virtauslaskentaa harrastavan tutkimusryhmän laitteistosta vuonna 2006 (TKK:n CFD-ryhmä). • Esi- ja jälkikäsittelyohjelmistoja (omia ja kaupallisia). TKK:n CFD-ryhmällä on perinteisesti ollut käytössä mm. EnSight, IGG, Pointwise ja FIELDVIEW, joiden lisäksi itse tehdyt convergence, finplo ja draw. Nykyisin käytetään myös OpenFOAM- ja Paraview-ohjelmia. • Riittävä määrä kääntäjiä ja ohjelmakirjastoja. TKK:n CFD-ryhmällä on käytössä DISLIN ja gnuplot. • Virtausmekaniikkaa, tietokoneita ja ohjelmointia harrastavia taitavia käyttäjiä. Edellä esitetyn listan kohdista on keskusteltu aiemmin tässä luvussa. Monet asiat ovat mieltymys- ja valintakysymyksiä, eikä yksikäsitteistä ohjetta ole mahdollista kirjoittaa. Jos käyttäjää kiinnostaa touhuta tietokoneiden kanssa, Linux- 10.10. VIRTAUSLASKENNAN TYÖVÄLINEET 280 perustainen ratkaisu on erittäin houkutteleva. Toisaalta taas PC/Windows-maailmassa viihtyvälle käyttäjälle on todennäköisesti järkevää hankkia samaan ympäristöön sopivat työkalut. 10.10.2 Käytännön esimerkki Tarkastellaan seuraavaksi käytännön esimerkkinä simulointiympäristön luomista lähtien lähes puhtaalta pöydältä. Kyseinen tapaus on todellinen ja liittyy Turun Aluetyöterveyslaitoksen aloittamaan projektiin sisäilmastoinnin tutkimiseksi mm. virtauslaskennan avulla. Projekti aloitettiin jo vuonna 1998, joten nykyään on samalla panostuksella saatavissa aivan eri tasoisia laitteistoja. Vastaava tietokonetyyppi on edelleen markkinoilla, mutta nyt siihen hankittaisiin n. 3 GHz moniydinprosessoripari ja näytönohjaimeksi jokin muu kuin Wildcat. Tässä luvussa käytetyn terminologian mukaan hankittu tietokone oli ns. PC (Intergraph TDZ GX1). Prosessoreita oli kaksi (Pentium II Xeon 450 MHz) ja muistia 1 Gt. Näytönohjain oli jossain vaiheessa PC-puolen tehokkaimpiin kuulunut Wildcat 3d. Kaksiprosessorinen kone oli erittäin hyvä laskentakäytössä. Ajon pyöriminen toisella prosessorilla ei näy koneen nopeudessa samanaikaisessa jälkikäsittelytai muussa työssä. Nykyisin saadaan vielä suurempi tehokkuus moniydin-tekniikalla. Tuloksia ei myöskään tarvitse siirrellä koneelta toiselle raportointia varten. Tässä yhteydessä kannattaa kiinnittää huomiota muistin määrään, jota varattiin olosuhteet ja ajankohta huomioon ottaen riittävästi. Oheislaitteina on ollut käytössä HP Deskjet 970 Cxi ja Lexmark värilaser. Käyttöjärjestelmänä koneessa oli Windows NT 4. Käytössä oli CFX-ohjelma, joka poikkeaa FLUENTista eräissä suhteissa. Aikoinaan ohjelmistopaketti sisälsi erilliset ohjelmaversiot rakenteellisille ja rakenteettomille hiloille. Mukana oli lisäksi pyöriville virtauslaitteille tehty erityisohjelma TASCflow. Esikäsittelijä oli CFX Build. Rakenteellisen ohjelmaversion jälkikäsittelijä on CFX View, joka oli melko yksinkertainen. Rakenteettoman ohjelman jälkikäsittelijä oli puolestaan CFX Visualise. Jälkikäsittelijän tukena käytettiin Exceliä ja Originia. Edellä olevalla laitteistolla voitiin ajaa jo kohtuullisen vaativia tehtäviä, jotka 1990-luvun alkupuoliskolla olisivat vaatineet supertietokoneen tehoa. Rakenteellisella ohjelmalla tehdyistä ajoista voidaan antaa seuraavat esimerkit: 12-lohkoinen hila 60 000 laskentakoppia, k − ǫ-turbulenssimalli vaati noin 5000 iteraatiokierrosta. Laskenta-aikaa tähän kului 20 tuntia (käkikello) ja muistin kulutus oli 80 mega- 10.11. VIRTAUSSIMULOINNIN SUORITTAJAT 281 tavua. Hieman tarkempi ajo (480 000 laskentatilavuutta) vaati niinikään 5000 kierrosta ajoajan ollessa 85 tuntia ja muistin kulutuksen 400 megatavua. Käytetyllä laitteistolla CFX-ohjelmalla pystyi ajamaan noin miljoonan kopin ajon, jolloin 5000 kerrosta vaati likimain viikon laskenta-aikaa. On huomattava, että käytännössä ajot kannattaa suorittaa lyhyemmissä pätkissä ja tarkastella tuloksia kunkin osa-ajon jälkeen, jolloin voi paljastua meneekö jotain vinoon. Jopa usean miljoonan kopin simulointia voidaan vuorokaudessa suorittaa kohtuullinen pätkä ja tietokonelaitteistojen osalta tilanne muuttuu koko ajan paremmaksi. 1990-luvun alkupuolella olisivat vastaavat ajot olleet mahdollisia supertietokoneella, mutta koska yhteiskäytössä olevasta koneesta ei ole helppoa saada suuria resursseja irti, ajon suorittaminen olisi saattanut silloisissa oloissa hyvinkin kestää pari viikkoa (kalenteriaika). Edellä oleva esimerkkikokoonpano on ensimmäisiä, jolla ns. pöytätietokoneella voitiin ajaa RANS-simulointi riittävällä resoluutiolla. Sen jälkeen kehitys on mennyt huimasti eteenpäin, mutta useat valmistajat tarjoavat edelleen järeitä Xeonpohjaisia työasemia, jotka ovat sopivia virtaussimulointiin ja tulosten jälkikäsittelyyn. Vastaavalla kokoonpanolla voidaan nyt ajaa yli kymmenen miljoonan laskentatilavuuden simulointeja edellyttäen, ettei simuloinnin kestoaika ole kovin kriittinen. 10.11 Virtaussimuloinnin suorittajat Virtaussimuloinnin suorittaminen on vaativa tehtävä ja ainakaan tämän kirjoittajan kokemuksien mukaan sitä ei voida verrata esimerkiksi rakenneanalyysin suorittamiseen. Kummallakin alueella kouluttamaton ja asiantuntematon henkilö voi saada aikaan pahaa jälkeä, mutta virtauslaskennassa todennäköisyys tähän on paljon suurempi. Tämä johtuu siitä, ettei virtausprobleema miltään osin ole kunnolla määritelty moniin muihin laskentatehtäviin verrattuna. Olemme aikaisemmin todenneet esimerkiksi reunaehtojen osalta FLUENTin valikoiman sekä puutteelliseksi että olemassa olevien vaihtoehtojen osalta epärobustiksi (esimerkiksi ulosvirtauksessa virtauksen kääntymisen aiheuttamat ongelmat). Reunaehtojen osalta tilanne ei ole oleellisesti erilainen muissakaan yleisohjelmissa. TASCflow:n kaltaisissa yhteen tarkoitukseen suunnatuissa ohjelmissa tilanne on ollut tässä suhteessa ehkä parempi. Toisena ongelmana on fysikaalisen tilanteen kuvaus. Usein aineominaisuudet tunnetaan huonosti tai joudutaan tekemään approksimaatioita esimerkiksi faasimuu- 10.11. VIRTAUSSIMULOINNIN SUORITTAJAT 282 tosten osalta. Myös virtauksen numeerinen laskenta on ongelmallista eikä tilanne taida siltäkään osalta saavuttaa pitkään aikaan, jos koskaan, samanlaista kypsynyttä tasoa kuin rakenneanalyysissä on saavutettu viime vuosikymmeninä. Ja lopuksi vielä kaikkien ongelmien äiti, joka pitää huolen siitä, etteivät virtauslaskijalta huolet lopu: turbulenssi ja sen mallinnus. Virtauslaskenta koostuu siis monista erilaisista osatekijöistä ja on selvä, ettei kukaan voi kaikkia alueita hallita hyvin. Mutta vaikka tehtäisiinkin vain ns. käytännön laskuja valmisohjelmalla, kunnollinen lopputulos vaatii valitettavasti tietoja ja taitoja monilta eri alueilta. Koska näitä alueita on useita, parasta olisi, että virtauslaskennan parissa työskentelisi kokonainen ryhmä, jolloin laajemman kokonaisuuden hallinta onnistuu. Tällä kurssilla samoin kuin Shaw’n kirjassa ’Using Computational Fluid Dynamics’ on pyritty antamaan jonkinlainen yleiskuva virtaussimuloinnista. Ohjelman käyttöä opetetaan ohjelmistotalojen pitämillä kursseilla. Hyvin yleinen käsitys alan ammattilaisilla on kuitenkin se, etteivät tämänkaltaiset esitiedot ole riittäviä, vaikka ohjelmistotalot nykyisin pyrkivät luomaan mielikuvan ohjelmien helppokäyttöisyydestä ja yleispätevyydestä. Shaw’n mukaan virtaussimuloinnin suorittajilla pitäisi olla seuraavat esitiedot: • matemaattiset taidot. Analyysien tekijän olisi ymmärrettävä laskentaohjelmassa käytettävien numeeristen menetelmien ja ratkaistavien yhtälöiden ominaisuudet. • laskennalliset taidot tarkoittavat kaikkia niitä tilanteita, joiden eteen tietokonetta käytettäessä joutuu. Hyvin usein käy niin, että tuloksia on tavalla tai toisella käsiteltävä. Ne on siis uutettava ohjelmistosta ulos ja on ehkä kirjoitettava omia ohjelman pätkiä tulosten käsittelyä varten. Ohjelmien kanssa joutuu myös liemeen käyttöjärjestelmien ja installoinnin osalta. Kokonaisuudessaan voidaan todeta, että vaikka esitteissä luvattaisiin ’helppokäyttöisyyttä ennennäkemättömällä tavalla’, niin virtauslaskijalta tai joltain ryhmän jäseneltä edellytetään huomattavasti paremmat tietokoneen käsittelytaidot kuin jonkin muun alan simulointia harrastavalta. • hyvät kommunikointitaidot tarvitaan siinä, että yleensä simulointitulosten hyödyntäjät ja tilaajat eivät ole virtauslaskennan asiantuntijoita ja tällöin virtauslaskentatehtävästä muodostuu ’projekti’, jossa asioita joudutaan setvimään ja selvittämään perin pohjin. Laskijalle ei analysoitava tilanne useinkaan ole tuttu, mikä aiheuttaa uskottavuusongelmia tilaajan puolelta. 10.12. VIRTAUSSIMULOINNIN INTEGROINTI SUUNNITTELUYMPÄRISTÖÖN 283 • insinööritaidot. Koska virtauslaskenta on hankalaa, tuloksen hyvyyden ratkaisee lopulta se, ymmärtääkö simuloinnin suorittaja tilanteen fysiikkaa, kemiaa ja simuloitavien laitteiden toimintaa. Laivojen ja lentokoneiden virtausjakaumien laskenta ei todennäköisesti johda minkäänlaiseen käyttökelpoiseen lopputulokseen, ellei niitä ole suorittamassa henkilö, jolla on riittävät perustiedot alalta. Sama koskee vielä suuremmassa määrin tilanteita, joihin liittyy monimutkaisia mallinnettavia ilmiöitä, kuten palamista. Uusien CFD-asiantuntijoiksi koulutettavien henkilöiden palkkaaminen on hankalaa, koska juuri kellään ei voida katsoa olevan kaikkia lueteltuja perustietoja. Tässä auttaa ryhmän koko. Mutta koska virtauslaskenta on lisäksi suhteellisen uusi ala, sen koulutus ei ole monessakaan maassa kunnolla järjestetty, mikä aiheuttaa lisäongelmia. Eräs tapa järjestää asia on käyttää ulkopuolisia konsultteja. Suomeenkin on syntynyt ja todennäköisesti syntyy vielä lisää insinööritoimistoja, jotka ovat erikoistuneet virtauslaskentaan. On myös mahdollista hyödyntää alan tutkimuslaitoksia ja korkeakouluja. Ongelmaksi tässä tulee taas kentän laajuus, minkä vuoksi tehtäviä on varsin erilaisia, mutta asiantuntijaorganisaatiot ovat kuitenkin varsin kapea-alaisia. 10.12 Virtaussimuloinnin integrointi suunnitteluympäristöön Shaw’n kirjassa (1991) todetaan, että CFD on hyödyllinen väline, mutta sen integroiminen suunnitteluprosessiin vaatii vielä huomattavasti parannuksia erityisesti esikäsittelyn osalta. Nyt yli 20 vuotta myöhemmin voimme todeta suurin piirtein asian samoin. Hyvin monella alalla on käynyt niin, ettei virtauslaskenta ole odotuksia vastaavasti lunastanut siihen asetettuja toiveita. Toisaalta laskenta on koko ajan vallannut yhä uusia alueita, joille se tuodaan samalla tavoin lupaavana tekniikkana käytännön ongelmien ratkaisuun. Aiemmin on todettu, että CFD on koko ajan menossa kustannusefektiivisempään suuntaan erityisesti tietokoneiden osalta. Enää ei tarvita supertietokoneita, vaan vaatimattomalla laitteistolla voidaan suorittaa isoja Reynolds-keskiarvotettuihin yhtälöihin perustuvia analyysejä. Laskijat ovat kuitenkin taitavia työntämään rajoja yhä pitemmälle ja suora simulointi tai LES pitävät huolen siitä, että supertietokoneita tarvitaan aina tutkimuskäytössä. 10.12. VIRTAUSSIMULOINNIN INTEGROINTI SUUNNITTELUYMPÄRISTÖÖN 284 Tietokoneiden käytön halventuessa on takaiskuja tullut turbulenssin mallintamisesta. Mitä pitemmälle kehitys on turbulenssitutkimuksessa edennyt, sitä kauemmaksi horisontin taakse on kysymyksen ns. lopullinen ratkaisu paennut. Uusia malleja kehitetään, mutta niiden käyttö vaatii yhä suurempaa ammattitaitoa. Varsinainen tulosten luotettavuus paranee täten hyvin hitaasti, mutta kuitenkin varmasti. Lähes kaikissa tilanteissa, joissa CFD:tä haluttaisiin soveltaa suunnittelutyössä, pullonkaulaksi muodostuu kuitenkin esikäsittely, geometrian luonti ja laskentahilan generointi. Tässä edistyminen on ollut toivottua hitaampaa. Eräänä syynä on jälleen erilaisten virtaustilanteiden hyvinkin erilaiset vaatimukset. Eniten kehityspanosta laitetaan nykyisin rakenteettomiin hiloihin, joita kehitetään adaptiivisiksi. Tällöin laskennan suorittajan ei periaatteessa tarvitsisi välittää laskentaverkon laatuun liittyvistä asioista mitään. Tällä hetkellä vaikuttaa, ettei tällainen utopia toteudu lähitulevaisuudessa. Ainoa ratkaisu tällä hetkellä on laskennan suorittajan ammattitaito. Jos esikäsittelijäohjelmien kaikkia piirteitä osataan hyvin käyttää, prosessiin kuluva aika putoaa murto-osaan. Jos lasketaan aina likimain samantapaista geometriaa, pystytään esikäsittelyvaihe hyvin pitkälle myös automatisoimaan. Mutta jälleen tarvitaan ammattitaitoa, jopa ’valmiin automatisoidun hilangeneroinnin’ käytössä. Valitettavan usein vielä 2000-luvullakin käy niin, että laskentaa sovelletaan demonstratiivisesti johonkin, mutta sen jälkeen se todetaan liian kalliiksi ja jopa hyödyttömäksi. Tällöin kyseessä on ammattitaidon puute, mikä näkyy jo siinä, että tuloksia on odotettu liian nopeasti. Maailmanlaajuisesti CFD on ollut osa suunnittelua eräillä alueilla jo pitkään. Esimerkkeinä voidaan mainita lentokoneiden ja kaasuturbiinien suunnittelu. Myös Suomessa on teollisuudessa useita aloja, joilla virtauslaskentaa sovelletaan. Yhteistä näille kaikille esimerkeille on riittävän suuri ja pitkäjänteinen satsaus. Mitä kauemmin laskentaa on suoritettu riittävän isolla ja osaavalla ryhmällä, sitä enemmän siitä saadaan hyötyä. Mutta kynnys uusille aluevaltauksille suunnittelutyössä on virtauslaskennan osalta suurempi kuin yleisesti halutaan uskoa. 10.13. KERTAUS 285 10.13 Kertaus • Käyttöjärjestelmän valinta dominoi monia jatkotoimenpiteitä. Valintaa tehtäessä on siksi pohdittava huolella omat tarpeet ja resurssit. • Prosessoreiden nopeudet kaksinkertaistuvat 1,5 vuodessa. Tämän vuoksi kaikkein nopeimpaan ei yleensä kannata investoida. • Muistia ei ole koskaan liikaa. Prosessoritehon kasvusta seuraa ohjelmistojen paisuminen, mikä johtaa jatkuvasti kasvavaan muistin tarpeeseen. • Kovalevyä on käytännössä aina liian vähän. Tämä on seurausta edellisistä kohdista. • Varmuustallennuslaitteiston hankinta on syytä tehdä heti eikä ensimmäisen levyvaurion jälkeen. • CD- tai DVD-laitteisto on välttämätön. • Kalleinkin laitteisto on hyödytön ilman ammattitaitoista käyttäjää. • tietokoneiden jatkuva kehittyminen on tehnyt niiden perinteisen luokittelun mahdottomaksi. • Unix-käyttöjärjestelmästä on useita versioita ja lisäksi ilmaisversio Linux • Linuxin käyttö on hyvin toimiva vaihtoehto virtaussimuloinneissa • tietokone tarvitsee myös oheislaitteita • supertietokoneet ovat nykyisin aina rinnakkaiskoneita, jotka koostuvat yleensä skalaariprosessoreista, joskus vektoriprosessoreista • rinnakkaislaskennalla saadaan laskentatehoa nostetuksi tehokkaasti • rinnakkaiskoneet ovat joko jaetun tai hajautetun muistin koneita • rinnakkaislaskennassa tarvitaan viestinvälityskirjastoja 10.13. KERTAUS 286 • virtauslaskijan työasemassa on hyvä olla kaksi prosessoria • suositus (vuonna 2011) ainakin 8 Gt keskusmuistia • levytilaa yli 1 Tt • nopea näytönohjain • virtauslaskenta on hankalaa, koska hyvin monet sen osa-alueista ovat huonosti määriteltyjä • laskennalla on helposti mahdollista saada uskottavan näköisiä kuvia, joilla ei ole paljon tekemistä todellisuuden kanssa • ongelmien pohjalla: turbulenssi ja sen mallinnus • virtauslaskija tarvitsee tietoja ja taitoja monelta eri osa-alueelta • CFD-ihmisten löytäminen on vaikeaa ja koulutus huonosti järjestetty • virtauslaskenta vaatii enemmän satsauksia ja henkisiä resursseja kuin yleisesti halutaan myöntää • ne alueet, joilla laskenta on osa suunnitteluprosessia, panostavat myös voimakkaasti CFD:hen • simuloinnin hyödyt näkyvät usein melko hitaasti, mutta ajan mittaan ne ovat merkittäviä Päivitetty 18.3.2014