Projects

Softwareentwicklungs-Projekte

Auf dieser Seite stelle ich meine (größeren) Softwareentwicklungsprojekte mit jeweils einer Kurzbeschreibung vor. Die meisten sind direkt über mein github-repo erreichbar, hier aber nochmal kurz beschrieben.

Die große Mehrzahl meiner Softwareprojekte sind Open-Source-Projekte, an denen ich schon seit den frühesten Anfängen um 1997 im KDE-Edutainment Team mitwirke. Ich stehe auch voll hinter dem Konzept der frei zugänglichen Software, und ehrlich gesagt wären eigentlich alle meine Softwareprojekte ohne Open-Source nicht möglich gewesen. Also an dieser Stelle ein Dankeschön an all die tollen Entwickler da draußen, die Open-Source-Software entwickeln.

Bei einigen der spezielleren Programme im Ingeniers-/Wissenschaftsbereich ist eine solide Finanzierung für den Fortbestand des Projekts zwingend notwendig, daher bin ich seit einigen Jahre auch in den Softwarefirmen Bauklimatik Dresden Software GmbH und VICUS Software GmbH tätig. Aber wann immer es geht, lege ich meine Projekte unter Open-Source-Lizenz ab und mache sie auf GitHub erreichbar.

Inhaltsverzeichnis

Simulationsprogramme / Software im Bereich Ingenieurwesen


DELPHIN 6

DELPHIN SplashScreen

DELPHIN ist ein Modellierungs- und Simulationsprogramm für die Simulation des hygrothermischen/reaktiven Transports in 1D, 2D und 3D Geometrien. Ursprünglich im Kontext der Bauphysik und Bewertung von Innendämmsystemen und Konstruktionsdetails entwickelt, kann man mit dem (sehr frei parametrierbaren) Modell inzwischen schon sehr viel rechnen:

  • Gebäudekonstruktionen und Konstruktionsdetails (stationär und dynamisch),
  • Tanks,
  • Erdkollektoren,
  • Kabeltrassen,
  • Bioreaktoren,
  • eigentlich jede Form der dynamischen Wärmeleitungsberechnung in 1D/2D/3D Geometrien,
  • und je nach Kreativität noch viel mehr…

Die aktuelle Version 6 ist schon die zweite Programmversion, welche ich seit 2003 entwickelt habe (eigentlich schon die Dritte, wenn man DSix, den Prototyp für ein neues Bedienkonzept mitzählt, was aber dann als unpraktikabel verworfen wurde). Version 5 hatte ich noch im Rahmen meiner Doktorarbeit entwickelt, wobei die aktuelle Version 6 im Rahmen der ausgegründeten Firma Bauklimatik Dresden Software GmbH entstanden ist:

Die DELPIHN Wikipedia-Seite zu DELPHIN hat noch ein paar mehr Hintergründe über die Entwicklungsgeschichte. Am Projekt DELPHIN habe ich insgesamt am längsten gearbeitet (und pflege die Software immer noch weiter).


VICUS Building & Districts

VICUS Screenshot

VICUS ist eigentlich zwei Programme in einem:

  • eine top-notch Gebäudeenergiesimulation (mit wirklich moderner 3D Eingabeoberfläche) und
  • eine Energienetzsimulation auf Quartiersebene.

Das Programm ist anfänglich auch an der TU Dresden konzipiert worden, war anfänglich eine Open-Source Entwicklung und ist seit 2024 in der ausgegründeten Firma VICUS Software GmbH beheimatet. In diesem Projekt hab ich mich erstmals an OpenGL/3D-Programmierung gewagt und die Grafikengine für die Software geschrieben. Außerdem ist der Rechenkern im Wesentlichen von mir geschrieben worden… entsprechend sind auch in dieses Projekt sehr viele Stunden geflossen.


PostProc 2

PostProc SplashScreen

PostProc 2 ist eine kostenfrei verfügbares Analyse- und Visualisierungsprogramm, primär für die Ergebnisdarstellung von dynamischen Simulationsprogrammen, also Zeitintegrations-Solvern. Die Software zeichnet sich unter anderem durch die Trennung von Daten und Visualisierungsbeschreibung aus, wodurch noch während der Laufzeit von Simulationsprogrammen die Ergebnisse fortlaufend visualisiert und aktualisiert werden können. Durch das offene Dateiformat (xml-Dateien) kann man das auch hervorragend skripten. Und die generierten Diagramme sehen dazu noch ziemlich geil aus… was will man mehr? :-)


MasterSim

MasterSim SplashScreen

MasterSim ist ein Co-Simulations-Masterprogramm, welches den FMI-Standard (Functional Mock-Up Interface) unterstützt. Es implementiert das Functional Mock-Up Interface for Co-Simulation in Version 1.0 and 2.0. Mit der 2.0er Funktionalität sind verschiedene fortgeschrittene Iterationsalgorithmen implementiert, welche FMU Slave-Zustände zurücksetzen und dadurch die Stabilität und Genauigkeit von gekoppelten Simulationen vergrößern.

Der eigentliche Simulationsteil ist in einer Bibliothek gekapselt, sodass der Co-Simulations-Masterteil von MasterSim auch in eigene Software integriert werden kann.


FMICodeGenerator

FMICodeGenerator ScreenShot

Dieses Python-Programm hilft dabei, einen Rohbau einer FMU komplett fertig mit Ein- und Ausgabevariablendefinition, modelDescription.xml und C/C++ Boilerplate-Code zu generieren. Man muss nur noch die eigene Programmlogik in die vorbereitete Funktion schreiben, das build-Script aufrufen und erhält eine hochperformante compilierte FMU (sowohl ModelExchange als auch Co-Simulation). Das Tool hab ich eigentlich nur deshalb in Python geschrieben, um dabei die Qt Anbindung mittels PyQt zu testen. Fazit: kann man machen, aber würde ich nie für größere Projekte einsetzen. Insgesamt wäre ich mit einer klassischen C++ Programmierung viel schneller zum Ziel gekommen und man könnte so eine Anwendung auch viel einfacher auf verschiedenen Systemem installieren.

Klares Ziel für FMICodeGenerator 2.0: Re-Implementierung in C++


OpenHAM

OpenHAM ist ein open-source Heat, Air and Moisture transport model, welches ich zu meinen Zeit am Institut für Bauklimatik der TU Dresden entwickelt habe. Es ist als Open-Source Referenzimplementierung der standardisierten Bilanzgleichungen / Berechnungsformeln des HAMSTAD Modells und des Eurocode DIN EN 15026 Standards gedacht. Das Programm simuliert 1D Geometrien (Wände/Decken/Fußböden) und enthält eine automatische Gittergenerierung.

Der Quelltext basiert auf meiner Doktorarbeit und verwendet die standartisierten und dokumentierten Eingabe- und Ausgabedateiformate des (viel mächtigeren und vielseitigeren) kommerziellen Simulationsprogramms DELPHIN simulation software.


CXTSimFit

CXTSimFit

Bei der Durchströmung von porösen Medien verändern sich die Konzentrationen der Lösungen durch Diffusion/Dispersion, oder durch Einlagerung im Porensystem. Für einfache Tracer-Tests, bei denen ein Stufenpuls (Konzentrationssprung) aufgeprägt wird, gibt es ein altes Programm namens CXTFit. Dieses implementiert eine analytische Lösung, welche für eine idealisierte Sprungbedingung und ansonsten konstante Prozessbindungen gültig ist.

Wenn man jedoch mit realen Labordaten und damit veränderlichen Upsteam-Konzentrationen arbeitet, kann man diese analytische Lösung nur noch bedingt verwenden. Oder wenn im Porensystem nicht-lineare Austauschbedingungen herrschen. Dann kann man CXTSimFit verwenden, welches den Konzentrationverlauf der Durchbruchskurve mittels numerischer Simulation berechnet und die Modellparameter via inverser Modellierung an die Messdaten fittet.


Utilities

JacobianMatrixViewer

JacobianMatrixViewer

Wenn man Simulationsprogramme schreibt, bei denen man komplexe Besetzungsstrukturen von schwach besetzten Matrizen generiert, dann lohnt es sich, diese Strukturen zu prüfen. Ein Newton-Verfahren, welches mit einer unvollständigen oder falschen Jacobi-Matrix läuft, wird in der Regel schlecht oder vielleicht gar nicht konvergieren. Der Fall, dass das Verfahren schlecht konvergiert, ist sogar die schlimmere Variante, da man hier als Programmierer ja ein richtiges Ergebnis bekommt, aber einfach sehr ineffizient arbeitet. Solche Fehler in Jacobi-Matrizen kann man identifizieren, wenn man z.B. eine Matrix durch ein langsamers, aber gründliches Finite-Differenzen-Quotiont-Approximationsverfahren generiert und dann mit der handgestrikten/optimierten Jacobimatrix vergleicht.

So einen Vergleich kann man dann sehr gut mit dem JacobianMatrixViewer machen:


QrcChecker

QrcChecker

Qt Resourcendateien (*.qrc-Dateien) können bei größeren Projekten gerne mal ungültige oder nicht mehr existierende (Bild-)Dateien referenziert werden.

Wenn man im Quelltext darauf mit

1
QPixmap icon(":/gfx/icon/bullet.png");

zugreift, das Bild aber nicht mehr existiert, so bekommt man keinen Fehler angezeigt. Man sieht das Problem eigentlich erst, wenn das Bild nicht mehr angezeigt wird. Das ist bei größeren Projekten blöd, weil man das mitunter gar nicht mitbekommt.

Der QrcChecker hilft einem dabei, fehlende Ressourcendateien zu identifizieren, oder noch nicht hinzugefügte Dateien in der Ressourcen-Verzeichnisstruktur zu finden.


Sonstiges

Rechenmeistertrainer

Rechenmeistertrainer

Wer sein Kopfrechnen (oder das seiner Kinder) verbessern möchte, kann hier den Rechenmeistertrainer ausprobieren. Bei dem Programm bekommt man das Ergebnis einer 1x1-Aufgabe angezeigt und muss in einem 10x10 Schachbrett die mögliche Ursprungsaufgabe anklicken. Das Ziel ist es, innerhalb von 5 Minuten alle 100 Aufgaben korrekt zuzuordnen. Wird also 48 angezeigt, so kann man in Spalte 6 und Zeile 8 das Feld anklicken, oder in Spalte 8 und Zeile 6 (natürlich wird die Zahl 48 dann auch 2 Mal angezeigt, und die 20 sogar 4 mal).

Die Software hat eine personalisierte Highscore, damit man sich in der Familie gegenseitig übertreffen kann.