Post 3, Veldig spennende gassboks (jeg lover)

Vi har fått satt oss ned i de komfortable setene på PC-rommet, og vi kan endelig starte å simulere en rakettmotor. Dette er faktisk rocket science.

Av Sigurd Bråthen, Benjamin Øverli
Publisert 11. sep. 2026

\

Først skal vi se på hvordan partikler oppfører seg i en gassboks, og vi skal finne ut hvor mange partikler som kommer seg ut av denne gassboksen og bidrar til å skape en kraft som løfter raketten vår. Deretter vil vi finne ut blant annet hvor mye drivstoff som brukes, hvor tung raketten er, og hvor mye fart raketten får. Når vi har fått gode nok resultater, kan vi simulere selve oppskytingen. Når dette igjen går bra, kan vi starte og bygge raketter. Heldigvis har vi roboter og materiell for å lage mange testraketter før vi selv skal sette oss inn.

Da kan vi starte å simulere denne gassboksen vår. Startverdiene for posisjon er en tilfeldig trukket verdi mellom 0 og L, for x, y, og z. For farten drar vi verdier fra en sannsynlighetsfordeling. Farten til gasspartikler følger det som kalles en Maxwell-Boltzmann fordeling (en enkel figur av dette var vist på Post 2). For å repetere vil dette si at verdiene for fart blir tilfeldig "trekt", hvor det er lite sannsynlig at man får en partikkel med veldig lav eller veldig høy fart, og mer sannsynlig at man får verdier som ligger rundt det høyeste punktet på kurven.

Først må vi simulere hvordan gassen spretter rundt inne i boksen. Siden vi antar at alle kollisjonene mellom gass og vegg er elastiske er det totale drivet bevart. For å sjekke om en partikkel har kollidert med veggen ser vi på posisjonen til hver enkelt partikkel. Om enten x, y eller z er større enn L eller mindre enn 0, betyr det at denne partikkelen er ute av boksen. 

 

Bilde som illustrerer gassboksen
Figuren viser gassboksen med sidelengde L og visualisering av et sprett.

For å simulere et sprett ser vi fra symmetrien i systemet at p0 = p (kun størrelse, ikke retning). Siden massen ikke endrer seg betyr det at farten før og etter er lik. Med dette i bakhodet dekomponerer vi farta. Før og etter sprettet og ser at både størrelsen og retning for Vy er bevart, mens størrelsen for Vx er bevart, men retningen er snudd (studer illustrasjonen).

Se for deg at når x-komponenten til partikkelens posisjon blir L, spretter den. Det eneste som skjer i sprettet er at vi bytter fortegn på x-komponenten til farten, mens farten i y- og z-retning er lik. Dette gjelder for alle sider når x, y eller z når posisjonen L eller 0, og slik simulerer vi at en partikkel spretter.

For å simulere selve bevegelsen til alle partiklene bruker vi noe som kalles "Euler's metode". Dette innebærer at vi har en startposisjon \(\vec{r} = [x,y,z] \) og en fart \(\vec{v} = [v_x, v_y, v_z] \). I disse tre dimensjonene er bevegelsen ganske enkel. Strekningen en partikkel beveger seg iløpet av tiden \(\Delta \)t er \(\Delta \vec{r} = \vec{v} \Delta t \). Dette er akkurat det samme som å regne med fartstrekanten hvor s = vt. Når vi har regnet ut denne endringen er den nye posisjonen \( \vec{r}_{i+1} = \vec{r}_i + \Delta \vec{r}\). Når vi simulerer bevegelsen gjør vi det på denne måten, med en veldig liten \(\Delta\)t og regner ut utrolig mange tidssteg slik at bevegelsen blir ganske nøyaktig. På data skjer dette heldigvis veldig fort.

Siden vi nå har gjort et forsøk på å simulert partiklenes bevegelse, sjekker vi om verdier fra simulasjonen stemmer overens med det vi forventer fra formlene vi fant tidligere. Vi ser først på farten til partiklene. På slutten av simulasjonen har hver partikkel en gitt fart v (merk at det ikke er noen vektorpil, vi bryr oss kun om størrelsen). Vi summerer opp alle disse og deler på antall partikler for å få gjennomsnittsfarten: 

\(\langle v \rangle = \frac{1}{N}\Sigma_{i=0}^N v_i \)

For å finne gjennomsnittsenergien til partiklene, må vi summere opp v2 på slutten av bevegelsen, siden snittfarten i annen ikke er lik snittet til farten i annen( \(\langle v \rangle^2 \neq \langle v^2 \rangle \) ). Vi bruker det for å regne ut gjennomsnittsenergien til partiklene. 

\(\langle v^2 \rangle = \frac{1}{N}\Sigma_{i=0}^N v_i^2 \)

\(\langle E \rangle = \frac{1}{2} m \langle v^2 \rangle \)

Deretter må vi beregne trykket. Vi skal se på hvor mye trykk som blir gjort på en av veggene i boksen, trykket er likt på alle veggene (det gir ikke mening at partiklene beveger seg mer mot en vegg enn en annen). Når en partikkel spretter gir den fra seg en kraft på veggen:

\( f = \frac{dp}{dt} = ma = 2p_x \)

Siden endring i driv \(\Delta p = p_x - (-p_x) = 2p_x \). Dette kan sees fra tegningen over. Størrelsene dt og dp representere uendelig små deler av p og t. Når vi skal gjøre dette numerisk blir:

\( \frac{dp}{dt} = \frac{\Delta p}{\Delta t} = \frac{2m v_x}{\Delta t} \)

for alle partiklene:

\( F = \frac{2 N m v_x }{\Delta t} \)

hvor \(v_x = \frac{v}{\sqrt3} \)

Siden vi regner ut trykket på 1 av sideveggene, er \(\Delta t \) tiden det tar for at alle partiklene treffer samme vegg 1 gang. Vi ser på det mest uheldige tilfellet, når et partikkel starter på "feil side" av boksen, og må gå frem og tilbake før den spretter på veggen.

Illustrasjon av partikkel i fart, som vi bruker for å regne ut tid til trykk.
Den mest "uheldige situasjonen" som vi ser på.

 Så i løpet av tiden \(\Delta t = \frac{2L}{v_x} \) er vi sikre på at alle partiklene har truffet samme vegg en gang. Trykk er gitt ved \( P = \frac{F}{A} \), hvor A=L2. Dette gir oss totalt sett at det trykket i gassboksen vår er:

\( P = \frac{2 N m v_x }{\frac{2L^3}{v_x} } =  \frac{N m v_x^2 }{L^3}\)

Disse tre størrelsene fra simulasjonen sammenligner vi med de svar fra formlene, fra forrige post for å skjekke om den simulerte gassboksen vår oppfører seg realistisk. Formlene var:

\begin{equation} \langle v \rangle = \sqrt{\frac{8kT}{\pi m}} \end{equation}

\begin{equation} P = \frac{NkT}{V}\end{equation}

\begin{equation} \langle E \rangle = \frac{3}{2} kT\end{equation}

Programmet gir oss forholdstallene under. Etter litt prøving og failing med antall partikler og temperatur i gassboksen får vi forholdstall vi er fornøyde med. Den største forbedringen var å øke antall partikler, mest sannsynlig siden dette gir oss en gjennomsnittsfart som er nærmere forventningsverdien fra sannsynlighetsfordelinga til farta. Forholdstallene vi får er veldig bra for både fart og energi, men på trykk ser det ut til at vi bommer litt (kanskje vi underestimerer tida eller farta?). Alt i alt sier vi oss fornøyde, og ser ut til at vi klarer å etterligne den kaotiske virkeligheten i en liten rakettmotor på datamaskin!

Bilde som viser forhold mellom analytisk og numeriske verdier.

Du lurer kanskje på hvorfor energien er utrolig liten? Du får nok en bedre forståelse for det på neste post.

 

Publisert 11. sep. 2026 13:35 - Sist endret 15. sep. 2026 14:31