SplashTool restart

Die Ausgabe von Dateien enthält jetzt eine kleine Logdatei mit wesentlichen Informationen zur Wasserbilanz. Der Clou bei der Sache: Die Datei kann als „restart“-Datei genutzt werden. Bei dieser Option verwendet die Iteration den Zustand der letzten Logdatei im Ausgabeordner, um die Iteration zu konfigurieren und macht mit diesem Zustand weiter!

Veröffentlicht am
Kategorisiert in Entwicklung

Multithreading Part 2

Im bisherigen Entwurf zu Multithreading werden die zu berechnenden Kacheln jedes Mal neu erstellt und die Ergebnisse in den Hauptarray zurückgespielt. Dies erzeugt zusätzliche Lese- und Schreibvorgänge und verlangsamt somit die Iteration. Im nächsten Schritt werden daher die Kacheln permanent gemacht. Alle Rechengrößen werden in den Kacheln gepeichert und die Kacheln parallel berechnet. Nach Berechnung… Multithreading Part 2 weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Visualisierung des Iterationsverlaufs

Der Iterationsverlauf hat keine physikalisch korrekte zeitliche Komponente. Dennoch kann die Visualisierung des Iterationsverlaufes vom Anfang bis zu einem annähernd stationären Zustand hilfreich für das Systemverständnis der Iteration sein. Hierzu gibt es die Option „create frequent output“. Warnung: Es werden sehr viele TIF-Dateien geschrieben und man benötigt sehr viel Speicherplatz! Mit häufig geschriebenen Ausgabedateien lässt… Visualisierung des Iterationsverlaufs weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Funktionsupdates: Wasserlevel aus tif und Ablauf aus Senken

Initiales Wasserlevel als Effektivniederschlag in Abhängigkeit von der Landnutzung. Dunklere Rottöne entsprechen einem höheren Effektivniederschlag

Nach dem Multithreading stehen noch einzelne Funktionsupdates an. Wasserlevel Das initiale Wasserlevel konnte bisher lediglich als fixer Wert vorgegeben werden, welcher für alle Zellen gleich ist. Durch dieses Update kann das Wasserlevel alternativ auch als TIF Datei eingelesen werden, sodass jede Rasterzelle einen individuellen initialen Wasserstand erhalten kann. Somit können ungleichmäßige Belastungen, aber auch zum… Funktionsupdates: Wasserlevel aus tif und Ablauf aus Senken weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Verbesserungen unter der Haube

GDAL Logo (Quelle)

TIF LZW Komprimierung Die Ausgabedateien können viel Speicherplatz einnehmen. Glücklicherweise bietet gdal direkt eine Option, TIF Dateien mit dem verlustfreien LZW Komprimierungsalgorithmus zu komprimieren. Dies ist die neue Standardeinstellung für die TIF Ausgabe: Automatische Threadanzahl Die Anzahl an Threads zur Berechnung kann je nach verfügbarer CPU automatisch gesetzt werden. Die optimale Threadanzahl wurde auf verschiedenen… Verbesserungen unter der Haube weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Mehrkernunterstützung

Die Berechnung erfolgt aktuell auf Basis eines einzelnen Arrays je Rechengröße. Für die Berechnung mit mehreren Kernen bietet sich Multithreading an. Es gibt mehrere Frameworks, welche – zum Teil mit unterschiedlichem Fokus – Parallelisierung von Numpy Berechnungen ermöglichen. Numba ist ein guter Kandidat, unterstützt jedoch aktuell keine maskierten Arrays. Dask ist ein ebenfalls sehr interessantes… Mehrkernunterstützung weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Feinarbeit und git

git Logo (Quelle und Lizenz)

Nach Implementierung von irregulären Geometrien über maskierte Numpy arrays stehen einige Pflegearbeiten an. Die Variablenbezeichnungen sind uneinheitlich, zudem fehlen Kommentare und doctrings zur Dokumentation der Funktionen. Der Code enthält zu diesem Zeitpunkt drei Dateien: main.py: die Hauptdatei für die Basiskonfiguration manager.py: für Datei Ein- und Ausgabe, sowie zur Steuerung des Iterationsverlaufs model.py: Das Modell. Der… Feinarbeit und git weiterlesen

Irreguläre Einzugsgebiete

DGM mit irregulärer Geometrie

In der jetzigen Entwicklungsstufe berechnet die Software nur rechteckige Gebiete, in welchen jede Rasterzelle berechnungsrelevant ist. Für reale Anwendungen müssen jedoch beliebige Einzugsgebiete berechnet werden können. Die einfachste Methode hierfür ist die Nutzung von maskierten Numpy arrays über numpy.masked. Zusätzlich zu den Daten enthalten diese Arrays eine „Maske“, welche definiert, ob eine Zelle betrachtet werden… Irreguläre Einzugsgebiete weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Ein Abbruchkriterium muss her

Der Prototyp der Software iteriert und erzeugt in einem Testgebiet die gewünschten Ausgabedateien für Wassertiefe und Abflussakkumulation, jedoch läuft der Algorithmus aktuell noch so lange weiter, bis er manuell unterbrochen wird. Da nur Iterationsschritte und keine Zeitschritte betrachtet werden, gibt es keinen definierten Abbruch. Für eine effiziente Nutzung müssen Kriterien definiert werden, bei welchen Ausgabedateien… Ein Abbruchkriterium muss her weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung

Start der Entwicklung

Numpy Logo (Quelle und Lizenz)

Die Idee für SplashTool stand im Raum, ebenso die wesentlichen Bibliotheken für die Umsetzung. Das Projekt soll in der Programmiersprache Python umgesetzt werden. Diese bietet über zahlreiche Bibliotheken Funktionen zur effizienten Umsetzung. Als Standardskriptsprache sowohl in QGIS als auch in ArcGIS ist sie zudem im Bereich Starkregenanalysen weit verbreitet. Relativ schnell war auch klar, dass… Start der Entwicklung weiterlesen

Veröffentlicht am
Kategorisiert in Entwicklung