Hoi allemaal,
Ik ben bezig met het herhalen van de simulaties in dit artikel
Kort samengevat bestaat het (1D) systeem uit een wand en een zuiger (in eerste instantie met constante snelheid).
Daarin zit één deeltje waarvan ik de beweging kan volgen aangezien er geen krachten op werken.
De simulatie doorloopt een cyclus gelijkaardig aan de Carnot cyclus (uit evenwicht).
Tijdens de 'isotherme' processen wordt de warmtebad gesimuleerd door bij een botsing met de wand een nieuwe random snelheid te genereren. Tot hier zijn er geen problemen.
Mijn werkwijze is als volgt,
Ik ken de posities van de zuiger na iedere slag. Deze zitten in de array L.
De volgende stap bestaat erin om de positie van het deeltje na iedere slag te bepalen.
Deze waardes zitten in de array X.
Ik controleer nu op een botsing (met de zuiger) mbv de voorwaarde dat als X > L er moet gelden dat in de slag waarin de zuiger van L[i-1] naar L gaat een botsing optreedt. Daaruit bereken ik dan de tijd waarop gebotst wordt.
Aan de vaste wand is er verder geen enkel probleem.
Het probleem is dat na een bepaald aantal cycli met bijna 100% zekerheid een vreemd effect optreedt waardoor het deeltje op den duur buiten het systeem treedt.
Ik kan zelfs niet de exacte oorzaak van het probleem vaststellen.
De eerste keren dat dit voorkwam was dat omdat na de botsing de nieuwe snelheid zo laag was dat het deeltje tijdens de compressie terug ingehaald werd.
Waarna ik een fout maakte met de nieuwe snelheid ( v = -v+2Ucomp ).
In die uitdrukking moest ik de snelheid v gebruiken, niet -v.
Dat probleem heb ik kunnen oplossen.
Het huidige probleem is nog iets anders, ik heb er nog geen systematiek in kunnen ontdekken buiten het feit dat boven de foutmelding die ik geef, 2 keer dezelfde output gegeven wordt (alsof ik een bepaald geval niet beschouw :S).
Ik heb 2 output bestanden (out.txt en out2.txt) in de bijlage gezet alsook mijn code(Deeltje.txt) (welke nog een rommeltje is).
Als iemand me kan helpen met wat ik over het hoofd zie dan erg veel dank.
Joris