Hauptseite des Projekts
**[[ss16:Physiksimulation|Physiksimulation]]/** =====Dokumentation===== ====Einführung==== Dieses Projekt hat das Ziel, die Bewegungen von Körpern unter Berücksichtigung von Gravitationskräften zwischen ihnen möglichst realitätsnah zu simulieren.\\ Wir haben uns entschieden, das User Interface in Python zu schreiben, welches mehr Programmierkomfort bietet. Da die Berechnungen sehr rechenaufwändig sind, führen wir diese mithilfe des schnelleren C++ durch. Um den Austausch von Daten zwischen beiden Teilen zu ermöglichen, verwenden wir Cython. ====Verwendete Software und Formeln==== * [[https://wiki.python.org/moin/PyQt4|PyQt]] für das GUI * [[http://cython.org|Cython]] für das Interface zwischen Python und C++ * [[http://vpython.org|VPython]] für die Animation und Ausgabe * [[https://de.wikipedia.org/wiki/Klassisches_Runge-Kutta-Verfahren|Runge-Kutta-Verfahren]] für die Berechnungen ====Struktur des Programms==== Der Startpunkt für das gesamte Programm ist //Main.py//. Einen ersten Überblick über den weiteren Programmverlauf kann man dem folgenden UML-Diagramm entnehmen: ---- {{:ss16:physiksimulation_struktur2107.png?nolink|}} **durchgezogene Pfeile:** [Pfeilende] importiert bzw. inkludiert [Pfeilspitze]\\ **gestrichelte Pfeile:** [Pfeilende] greift auf [Pfeilspitze] zu ---- Zuerst wird das GUI erzeugt. In diesem kann der Benutzer Objekte erstellen und Parameter für die Berechnung eingeben. Die Ergebnisse der Berechnung werden aktuell in eine Textdatei geschrieben. Nachdem diese abgeschlossen ist, ruft die Main.py den Visualizer auf. Dieser initialisiert ein VPython-Fenster, in dem die Ergebnisse angezeigt werden.\\ Der C++-Teil enthält keine main-Funktion. Er wird vor dem Programmstart von Cython zu einer .so-Datei kompiliert und gelinkt, die wie jedes andere Modul in Python importiert werden kann. Welche Funktionen Python nutzen kann, wird im PyCInterface.pyx festgelegt. ====Details zu den Programmkomponenten==== Eine gegliederte Auflistung aller Komponenten zusammen mit einer Beschreibung ihrer Funktionen und Quellcodes befindet sich [[ss16:physiksimulation_doc_components|hier]]. ====Verlauf des Projekts==== Einblicke in den Verlauf unserer Projektarbeit kann man [[ss16::Physiksimulation_Process|hier]] erhalten. ====Unsere Erfahrungen==== ausstehend: * Speedup Pure Python <=> unser Programm ====Zum Selbernutzen==== Wer dieses Programm selbst nutzen möchte, sollte folgenden Schritten nachgehen: - alle o.g. Software-Komponenten installieren - die Projektdateien aus unserem [[https://github.com/merkrafter/gravitation|Git-Repository]] herunterladen - alle Dateien in einen gemeinsamen Ordner verschieben - ggf. //setup.py// erneut ausführen (Details sind auf der entsprechenden Dokumentationsseite zu finden) - //Main.py// ausführen, um das Programm zu starten Wer sich nur mal ein Ergebnisbeispiel ansehen möchte, der: - braucht lediglich VPython zu installieren - muss nur folgende Komponenten aus dem Python-Ordner herunterladen: * Visualizer_lite.py * Reader.py * Parser.py * results.txt - startet dann den Visualizer_lite ====Ausblick/To-Do==== In Zukunft soll Folgendes noch getan werden: * verbesserte Namensgebung //(vor allem bei sämtlichen //"Interface"//-Dateien)// * Verweise, die die Ordersturktur unterstützen //(aktuell müssen sich alle Dateien im selben Ordner befinden)// * Kollision von Objekten //(aktuell fliegen sie durcheinander hindurch)//