Törmäykset - Lahti

lahti.fi

Törmäykset - Lahti

Tieteellinen laskenta 2TörmäyksetAki Kutvonen Op.nmr 013185860


SisällysluetteloOhjelman tekninen dokumentti........................................................................................................3Yleiskuvaus.................................................................................................................................3Kääntöohje..................................................................................................................................3Ohjelman yleinen rakenne..........................................................................................................4Esimerkkiajo ja käyttöohje..............................................................................................................5Tulosten analysointi.........................................................................................................................6Animointi....................................................................................................................................6Nopeuden itseisarvojen summa.........................................................................................8Nopeusjakauma.........................................................................................................................102


Ohjelman tekninen dokumenttiYleiskuvausSimuloidaan pallojen kimmoisia törmäyksiä laatikoissa toisiinsa ja laatikon reunoihin ja tulostetaanpallojen nopeusjakaumaa ajan funktiona. Käyttäjä valitsee simulaation aika-askeleen, simulaationajan, laatikon koon, nopeusjakauman energiaresoluution ja skaalan, pallojen lukumäärän, alkupaikatja nopeudet, sekä pallojen massat ja säteet. Alkutilanne syötetään ohjelmaan antamalla tiedostonnimi, jonne ominaisuudet ovat merkittynä sarakkeittain, jokainen pallo omalla rivillään.Ohjelma suorittaa simulaation ja tallentaa ajanhetken, jokaisen pallon koordinaatin ja säteentiedostoon tulokset.txt, josta esim matlabilla voidaan simuloida graafisesti pallojen liikettä. Ohjelmamyös tulostaa tiedostoon nopeusjakauma.txt ajanhetken, nopeuden ja pallojen lukumäärän, jotkaovat resoluution sisällä energiasta. Tästä voidaan havainnoida erilaisille systeemeillenopeusjakauman muutosta ajan funktiona.Ohjelma koostuu kolmesta tiedostosta, pallo.hh:sta, pallo.cc:stä sekä törmäykset.cc:stä. Pallo.ccsisältää luokan pallo ominaisuuksineen, sekä tietueen vektori, joka koostuu kahdesta doubleliukuluvusta.Tiedosto pallo.hh sisältää luokan pallo funktiot. Muut funktiot sekä varsinainenpääohjelma on tiedostossa törmäykset.cc.KääntöohjeOhjelmien tormaykset.cc ja pallo.cc tarvitsemat pallo-luokan funktiot ovat tiedostossa pallo.hh,tämä on otettu ohjelmiin mukaan komennolla #include ”pallo.hh”. Ohjelman saa käännettyä esim.komennolla c++ -lm -o tormaykset.exe tormaykset.cc pallo.cc , kun kaikki 3 tiedostoa ovat samassakansiossa jossa komento suoritetaan. Edellämainittu komento luo exe-tiedoston tormaykset.exe,josta ohjelma käynnistyy.3


Kuva 2: kuva systeemin alkutilasta, vasemmalla olevat pallot ovattörmäämässä oikeanpuoleisten pallojen rintamaan.Kuva 3: kuvan 2 systeemi myöhemmällä ajanhetkellä7


Nopeuden itseisarvojen summaOhjelman aikasemmalla versiolla tutkittiin myös pallojen nopeuksien itseisarvojen summaa ajanfunktiona.x = nopeusjakauma(:,1); y = nopeusjakauma(:,2); plot(x,y)Kuva 4: nopeussumma kun kuvan 2 esittämän tilanteen liikkuvat pallotKuva 5: nopeussumma kun kuvan 2 esittämän tilanteen liikkuvat pallotliikkuivat 0.5m/s oikealle8


Kuva 6: nopeussumma kun kuvan 2 esittämän tilanteen liikkuvat pallot liikkuivat0.5m/s oikealle9


NopeusjakaumaTutkittiin pallojen nopeusjakaumaa ajan funktiona. Kaikissa tutkittavissa systeemeissä alkutila oli500-700 palloa paikoillaan ja 5-10 palloa lähestymässä paikallaan olevia palloja. Pallojenlukumäärä 2D-kuvissa on 555.Kuva 7: nopeusjakauma ajanhetkellä 10sKuva 8: pallojen nopeusjakauma ajanhetkellä 120s10


Tiedostotilan säästämiseksi nopeussumma.txt oli muotoa simulaation aika, energia-arvo ja pallojenlukumäärä. Jos pallojen lukumäärä oli 0, ei kyseistä riviä tulostettu. Tulostiedoston koko kasvaahelposti yli sataan megabittiin, jolloin sen järkevä käsittely kotikoneella muuttuu mahdottomaksi.Lähetettiin data jälleen Matlabiin, jossa piirrettiin tuloksista 3-D kuva. Jotta kuva voitaisiin piirtäämatlabissa surf tai mesh-komennolla, pitää tulostettavat arvot muuttaa matriisimuotoon. Tähänvoitaisiin käyttää matlabin omaa griddata-komentoa, mutta hieman paremman tuloksen saa gridfitkomennolla.Komento muodostaa matriisin approksimoimalla luettavaa dataa matriisimuotoonannettujen vektorien pohjalta. Esimerkki gridfit-sovituksesta ja 3D-lukemisesta:aika=nopeusjakauma(:,1);energia=nopeusjakauma(:,2);pallojenlkm=nopeusjakauma(:,3);gx=0:4:264;gy=0:4:400;g=gridfit(aika,energia,pallojenlkm,gx,gy);figurecolormap(hot(256));surf(gx,gy,g);camlight right;lighting phong;shading interpline(x,y,z,'marker','.','markersize',4,'linestyle','none');Viimeinen rivi tulostaa myös varsinaisen datan mukaan scatted 3d-datan, tämä näkyy sinisinäpisteinä kuvassa, siitä voi verrata sovituksen ja todellisten arvojen erotusta. Jos mittauspisteitä onkuitenkin paljon niin kuvaajassa näkyy vain sininen pilvi. Seuraavista kuviin ei ole merkittyalkuperäisiä pisteitä:11

More magazines by this user
Similar magazines