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 geschrieben werden und die Iteration beendet wird.

Ziehen Sie den Slider im Bild, um den Stand der Iteration nach 1.000 und nach 14.000 Schritten zu vergleichen:

[ics-comparison-slider id=2]

In jedem Iterationsschritt erhöht sich die Abflussakkumulation auf den Rasterzellen. Als relevante Größe wird der Anteil der Wassermenge gewählt, welcher innerhalb eines Iterationsschrittes in Bewegung ist. Zu Beginn wird in jedem Iterationsschritt noch recht viel Wasser abfließen, in steilen Gebieten wird mehr als 10% des Wassers in jedem Iterationsschritt die Zelle wechseln. Sobald sich kaum noch Wasser von Zelle zu Zelle bewegt, hat sich ein annähernd stationärer Zustand eingestellt. Wasserstände und Abflussakkumulation ändern sich kaum noch.

Über Tests in mehreren Gebieten wurden mögliche Kriterien getestet.

  • Bei 2% Bewegung sind die wesentlichen Fließpfade und Geländesenken bereits erkennbar
  • Bei 1% Bewegung ist Wasser von steilen Bereichen abgeflossen
  • Bei 0,5 % Bewegung ist Wasser von den meisten Bereichen abgeflossen
  • bei 0,1 % Bewegung ist auch Wasser von flachen Bereichen weitgehend in die Tiefpunkte geflossen und es hat sich ein annähernd stationärer Zustand eingestellt
OUTPUT_TRIGGERS = [0.001, 0.002, 0.005, 0.01, 0.02]
 while len(OUTPUT_TRIGGERS) > 0:
     i+=1
     self.MODEL.update_hh()
     if i % 100 == 0:
         accsum = self.MODEL.get_accsum()
         sv = self.MODEL.SPLASHVOLUME
         of = self.MODEL.get_outflow()
         wv = self.MODEL.get_water_volume()
         accsum_delta = (accsum-accsum_old)/(i-i_old)/sv

Das Abbruchkriterium ist detaillierter in der Dokumentation beschrieben.