Architektur¶
Systemübersicht¶
flowchart TB
subgraph Eingabe
DB["MySQL-Datenbanken\n(wq_general, worldqual_*,\nwatergap_unf)"]
UNF["UNF-Rasterdaten\n(Hydrologie, Klima)"]
OPT["OPTIONS.DAT\n(Konfiguration)"]
end
subgraph Vorverarbeitung
FRC["find_river_cells\n→ Flusszellen identifizieren"]
LOAD["wq_load\n→ Nährstoffeinträge berechnen"]
TEMP["water_temperature\n→ Wassertemperatur berechnen"]
end
subgraph Simulation
WQ["worldqual\n→ Instream-Transport\n→ Konzentrationsberechnung"]
end
subgraph Nachverarbeitung
STAT["wq_stat\n→ Statistische Auswertung"]
MAP["MapRiverQuality\n→ Kartierung"]
end
DB --> Vorverarbeitung
UNF --> Vorverarbeitung
OPT --> Vorverarbeitung
Vorverarbeitung --> WQ
WQ --> Nachverarbeitung
¶
flowchart TB
subgraph Eingabe
DB["MySQL-Datenbanken\n(wq_general, worldqual_*,\nwatergap_unf)"]
UNF["UNF-Rasterdaten\n(Hydrologie, Klima)"]
OPT["OPTIONS.DAT\n(Konfiguration)"]
end
subgraph Vorverarbeitung
FRC["find_river_cells\n→ Flusszellen identifizieren"]
LOAD["wq_load\n→ Nährstoffeinträge berechnen"]
TEMP["water_temperature\n→ Wassertemperatur berechnen"]
end
subgraph Simulation
WQ["worldqual\n→ Instream-Transport\n→ Konzentrationsberechnung"]
end
subgraph Nachverarbeitung
STAT["wq_stat\n→ Statistische Auswertung"]
MAP["MapRiverQuality\n→ Kartierung"]
end
DB --> Vorverarbeitung
UNF --> Vorverarbeitung
OPT --> Vorverarbeitung
Vorverarbeitung --> WQ
WQ --> NachverarbeitungVererbungshierarchie (Options-Klassen)¶
Alle Module erben von einer gemeinsamen Basis-Optionsklasse:
classDiagram
class optionsClass {
+loadFromFile(filename)
+getOption(key)
+setOption(key, value)
}
optionsClass <|-- options_wqClass
optionsClass <|-- options_wq_loadClass
optionsClass <|-- options_wqstatClass
optionsClass <|-- options_waterTempClass
optionsClass <|-- options_findRiverCellsClass
optionsClass <|-- options_mapRiverQualityClass
optionsClass <|-- options_scenClass
Jede abgeleitete Klasse erweitert die Basis um modulspezifische Parameter (Pfade, IDs, Berechnungsoptionen).
Datenfluss im Hauptprogramm (worldqual)¶
- Initialisierung – OPTIONS.DAT einlesen, Datenbankverbindung herstellen, Run-Parameter aus
_runlistladen - Routing-Aufbau – Flussnetzwerk aus
routing-Tabelle laden, Routing-Reihenfolge bestimmen - Zeitschleife (Jahre × Monate):
- UNF-Daten laden (Fließgeschwindigkeit, Seespeicher, Temperatur)
- Nährstoffeinträge aus
load-Tabelle lesen - Transport entlang des Flussnetzwerks berechnen (Routing-Reihenfolge)
- Biochemischen Abbau anwenden (temperaturabhängig)
- Konzentrationen in
wq_out_{kontinent}schreiben
- Abschluss – Datenbankverbindung schließen
Datenfluss in wq_load¶
- Initialisierung – OPTIONS.DAT einlesen, Parameter-ID und Szenario bestimmen
- Zelleniteration (alle Zellen der Region):
- Länderdaten und Zellparameter aus DB laden
- UNF-Rasterdaten lesen (Abfluss, Vieh, Klima, Düngung, etc.)
- Punktquellen berechnen (häuslich, industriell)
- Diffuse Quellen berechnen (Dünger, Vieh, Atmosphäre, Verwitterung, Erosion)
- Ergebnisse in
wq_load_{kontinent}schreiben
- Aggregation – Monatliche Einträge pro Zelle summieren
UNF-Dateiformat¶
UNF (Unformatted Binary) ist das Binärformat des WaterGAP-Modells:
- Rasterdaten auf 0.5° oder 5' Auflösung
- Verschiedene Datentypen: UNF0 (Float), UNF1 (Byte), UNF2 (Short), UNF4 (Integer)
- Zeitreihen: Monatliche Werte als
Dateiname_{year}.12.UNF{typ} - Statische Dateien: Einmalige Werte als
Dateiname.UNF{typ}