Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss16:physiksimulation_log6

Hauptseite des Projekts

letzte Woche

Physiksimulation/Dokumentation/Projektverlauf/

Logbuch-Eintrag 6

Datum: 30. Juni 2016

Zusammenfassung

In dieser Woche haben wir viel geschafft:
Wir haben uns mit Cython beschäftigt und haben dabei große Fortschritte gemacht. Wir haben unsere Animation berichtigt und sie allgemeiner gestaltet. Wir haben ein einfaches Gantt-Diagramm für unsere Arbeitsplanung erstellt. Wir haben zudem in der Simulation das Runge-Kutta-Verfahren implementiert. Und wir haben jetzt endlich ein Git-Repository für unser Projekt erstellt.

Genauere Beschreibung

C++

Wie eingangs erwähnt verfügt unser Programm nun auch über die Möglichkeit, die Objektdaten mithilfe des Runge-Kutta-Verfahrens zu berechnen. Detailliertere Untersuchungen der Genauigkeit und der Geschwindigkeit folgen noch.

Cython

Unser Cython-Code ist bisher noch sehr rudimentär. Es hat ziemlich lange gedauert, sich in Cython einzulesen und -arbeiten. Außerdem haben wir mit diesem eigentlich sehr simplen setup.py-Skript zu kämpfen, bis dann alles lief.

from distutils.core import setup
from Cython.Build import cythonize
from Cython.Distutils import build_ext
from distutils.extension import Extension
 
setup(cmdclass={'build_ext':build_ext},
      ext_modules = [Extension("PyCInterface",
		["PyCInterface.pyx","universe.cpp","object.cpp","vector3d.cpp"],
		language="c++")]
)

Dieses Skript sammelt alle Ressourcen zusammen, kompiliert die PyCInterface.pyx-Datei zu einer .cpp-Datei und linkt dann alles zu einer .so-Library. Diese kann man dann in .py-Dateien importieren. Das PyCInterface läd dabei die .cpp-Dateien und redifiniert die Funktionen in einer Art internen Header-Datei. Anschließend kann man die C++-Objekte in Python-Objekte wrappen und so auch für ganz normales Python aufrufbar machen. Wie genau das aussieht, kann man sich im git-Repository angucken.

Python

Auf der Python-Seite haben wir als erstes den Fehler in der Animation gefixed. Das Problem war hier, dass wir an der update-Stelle die Positionsdaten aus dem File nicht immer neu zugewiesen haben, sondern sie aufaddiert haben. Danach haben wir den Objekten für's Erste zufällige Farben und einheitliche Größen gegeben. Diese wird der User am Ende festlegen können. Zu guter Letzt haben wir noch den Mars in unsere Berechnungen mit eingefügt und das Ganze mal zeigen lassen: Die Sonne (hier in rot) ist nun korrekterweise im Zentrum, Erde (grün) und Mond (lila) kreisen nun sauber um sie herum und auch der Mars vollzieht seine korrekte Bahn. Alle Daten über Umlaufzeiten etc. decken sich wunderbar mit den wissenschaftlich gemessenen Daten. Ansonsten haben wir versucht, die Animationen doch noch irgendwie in ein QT-Fenster einzubinden.

Ausblick

In der nächsten Woche wird natürlich weiter an dem Cython-Teil gearbeitet und dieser hoffentlich in irgendeiner Form lauffähig gemacht. Außerdem werden wir uns darum kümmern, dass das Programm als Ganzes funktioniert und nicht nur seine Teile. Wenn uns dann noch Zeit bleibt, werden wir mal versuchen, die Berechnungen in Echtzeit laufen und anzeigen zu lassen und dem Benutzer so mehr Interaktionsmöglichkeiten zu bieten.

ss16/physiksimulation_log6.txt · Zuletzt geändert: 2016/08/14 22:28 von markumnus