Zeniitti

Tähtiharrastuksen verkkolehti

HaloRay – Haloilmiöt tietokoneessa

HaloRay – Haloilmiöt tietokoneessa

Samuli Vuorinen:

Haloilmiöt ovat jo pitkään kiehtoneet niin ilmakehäharrastajien kuin tutkijoidenkin mieltä. Ne syntyvät, kun valo kulkee pilvissä tai jääsumussa olevien pienenpienten jääkiteiden läpi, muodostaen taivaalle erilaisia kaaria ja laikkuja.

Haloilmiöt ovat siis luonteeltaan hyvin samankaltaisia kuin sateenkaaret, mutta pyöreiden vesipisaroiden sijaan valo kulkee jääkiteiden läpi. Vesi muodostaa luonnostaan kuusikulmaisia jääkiteitä, ja alla olevassa kuvassa näkyvät ideaaliset kuusikulmaiset jääkiteet selittävätkin suurimman osan havaituista haloilmiöistä.

Kuva: Lauri Kangas

 

 

 

 

 

 

 

 

 

 

 

 

 

Haloilmiöihin vaikuttavat kaikkein eniten jääkiteiden muoto ja leijailuasento. Hyvin litteitä kuusikulmaisia kiteitä kutsutaan laattakiteiksi, ja ne usein asettuvat ilmavirtauksissa vaakasuoraan asentoon. Laattakiteet muodostavat muiden muassa sivuaurinkoja, zeniitinympäristön kaaria ja horisonttirenkaita.

Pitkulaisia, lyijykynää muistuttavia kiteitä kutsutaan pylväskiteiksi. Ne asettuvat usein leijailemaan pitkä akseli vaakasuorassa, ja muodostavat esimerkiksi yllä- ja allasivuavia kaaria. Harvinaisemmat haloilmiöt selittyvät hieman eksoottisemmilla kidemuodoilla tai erityisillä kideasennoilla, joita ei esiinny usein.

Kaikkein yleisin halomuoto, eli 22 asteen rengas, muodostuu kun kiteet eivät asetu mihinkään yhtenäiseen asentoon, vaan kaikki kiteet leijailevat sattumanvaraisissa asennoissa. Usein kiteet eivät myöskään ole aivan ideaalisia kuusikulmaisia kiteitä, vaan saattavat olla monen kiteen ryppäitä.

Halojen tietokonesimulointi

Halojen syntymiseen sopivien olosuhteiden tuottaminen laboratoriossa on äärimmäisen haastavaa, joten haloja on tutkittu pääasiassa luonnossa sekä tietokonesimulaatioiden avulla. Tietokonesimulaatiot ovat pääasiassa akateemisten tutkijoiden sekä innokkaiden haloharrastajien kehittämiä. Tällä hetkellä yleisimmin käytetyt simulaattorit ovat Les Cowleyn ja Michael Schroederin kehittämä HaloSim3 sekä suomalaisen Jukka Ruoskasen HaloPoint 2.0.

HaloPoint 2.0

 

HaloSim3 on päivitetty viimeksi vuonna 2004 ja HaloPoint vuonna 2010, joten kumpikaan ei ole teknisesti enää aivan viimeisintä huutoa, eivätkä simulaattorit osaa hyödyntää kaikkia nykytietokoneiden tarjoamia resursseja. Haloilmiöiden simulointi onkin hyvin laskentaintensiivistä, ja tämän vuoksi perinteisesti ollut hyvin hidasta. Hyvälaatuisten simulaatioiden laskenta on saattanut kestää kymmeniä minuutteja tai peräti tunteja.

Halosimuloinnin perusperiaatteet on verrattain helppo ymmärtää. Ensiksi arvotaan jääkide halutunlaisesta kidepopulaatiosta, jonka jälkeen seurataan millaista reittiä auringon suunnasta tuleva valonsäde seuraisi jääkiteen läpi. Kun valonsäde poistuu jääkiteestä, voidaan päätellä mistä suunnasta tuon jääkiteen läpi kulkenut valo näyttäisi tulevan havaitsijan näkökulmasta. Näin voidaan taivaanpallolle piirtää yksi valopiste. Nyt sama toistetaan miljoonia ja taas miljoonia kertoja, jolloin taivaanpallo alkaa olla täynnä valopisteitä, ja niiden jakautumisesta nähdään missä päin taivasta näkyy halomuotoja ja missä ei.

Kuten voi ymmärtää, näinkin monimutkaisen operaation toistaminen miljoonia kertoja vie aikaa. Voisiko tätä prosessia kuitenkin nopeuttaa jotenkin?

Perinteisesti tietokoneissa kaikki laskenta on tehty suorittimilla, joita useimmissa kuluttajatietokoneissa on vain yksi. Nykysuorittimet kykenevät kyllä tekemään muutamaa asiaa yhtä aikaa, mutta tätä ei ole juuri hyödynnetty halosimulaattoreissa toistaiseksi. Käytännössä simulaattorit ovat siis laskeneet vain yhtä valonsäteen ja jääkiteen yhdistelmää kerrallaan.

HaloRay

Tietokonegrafiikkaa opiskelleena ja harrastaneena tiesin, että nykytietokoneiden näytönohjaimet ovat valtavan tehokkaita laskemaan rinnakkain suurta määrää asioita. Jo pitkään mielessäni oli pyörinyt ajatus näytönohjaimen hyödyntämisestä halojen simuloinnissa. Tietokoneen suoritin on kuin Formula 1 -auto, joka vie kuskin paikasta A paikkaan B mahdollisimman nopeasti, kun taas näytönohjain on kuin juna. Se ei kulje aivan yhtä vikkelästi kuin Formula-auto, mutta kykenee kuskin lisäksi viemään satoja ihmisiä perille kerralla. Näytönohjain sopii siis halojen simulointiin kuin nenä päähän!

Ryhdyin huhtikuussa 2019 kehittämään uutta halosimulaattoria, joka hyödyntäisi näytönohjaimen laskentakapasiteettia mahdollisimman paljon. Päätin heti alussa, että pitäisin ohjelman lähdekoodin avoimena, ja pyrkisin tukemaan sekä Windows- että Linux-käyttöjärjestelmiä. Kehitystyö eteni varsin vikkelästi, ja julkaisin ensimmäisen virallisen version ohjelmasta 16. kesäkuuta. Simulaattorille tuli nimeksi HaloRay.

HaloRay

 

Näytönohjaimen tuomat edut olivat jo kättelyssä selvät. Tein nopeusvertailua HaloPointin ja HaloRayn välillä omalla tietokoneellani, jossa on Intel i7-3770K -suoritin ja NVIDIA GTX 1070 -näytönohjain. Tällä kokoonpanolla HaloPoint kykenee simuloimaan 16 000 valonsäde-jääkide-yhdistelmää sekunnissa, kun taas HaloRaylla onnistuu 22 000 000! Nopeusero on siis 1400-kertainen!

Alla on sama näkymä simuloituna sekä HaloPointilla että HaloRaylla. Ensimmäistä kuvaa varten on simuloitu 5 miljoonaa valonsädettä. Tähän HaloPointilla meni 5 minuuttia 11 sekuntia. Jälkimmäistä kuvaa varten on simuloitu 500 miljoonaa sädettä, eli satakertainen määrä. Simulaation laskenta HaloRaylla vei 23 sekuntia.

5 miljoonan säteen simulaatio HaloPointilla

 

 

 

 

500 miljoonan säteen simulaatio HaloRaylla

 

 

HaloRay on alusta asti suunniteltu olemaan hyvin interaktiivinen. Jotakuinkin jokaista simulaatioparametria voi säädellä reaaliajassa ja kuvakulmaa käännellä vapaasti. Tämä on omiaan antamaan paremman ymmärryksen siitä miten jääkidepopulaation eri ominaisuudet vaikuttavat taivaalla näkyviin haloilmiöihin.

Todellisen halonäytöksen ja HaloRay-simulaation vertailu. Kuva: Jari Luomanen 

HaloRaylla onnistuu tällä hetkellä tavallisten kuusikulmaisten kiteiden simulointi. Lisäksi työkaluun on ennen pitkää tulossa pyramidikiteiden ja muiden eksoottisempien kidemuotojen simulointi. Olen alkukesän jälkeen pitänyt pientä taukoa kehitystyöstä muiden kiireiden vuoksi, mutta seuraavana työn alla on simulaatioparametrien tallennusmahdollisuus ja muuta hyödyllistä.

Ohjelman lataaminen onnistuu tästä linkistä:

https://github.com/naavis/haloray/releases/download/v2.4.0/haloray-v2.4.0.zip

Linkkejä

HaloRayn kotisivut: https://naavis.github.io/haloray/
HaloRayn lähdekoodi: https://github.com/naavis/haloray
Les Cowleyn ja Michael Schroederin HaloSim: https://www.atoptics.co.uk/halosim.htm
Jukka Ruoskasen HaloPoint 2.0: https://web.archive.org/web/20111120014608/http://www.jukri.net/halopoint2.html

Leave a Reply

Your email address will not be published. Required fields are marked *