Zum Inhalt

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

Vererbungshierarchie (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)

  1. Initialisierung – OPTIONS.DAT einlesen, Datenbankverbindung herstellen, Run-Parameter aus _runlist laden
  2. Routing-Aufbau – Flussnetzwerk aus routing-Tabelle laden, Routing-Reihenfolge bestimmen
  3. 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
  4. Abschluss – Datenbankverbindung schließen

Datenfluss in wq_load

  1. Initialisierung – OPTIONS.DAT einlesen, Parameter-ID und Szenario bestimmen
  2. 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
  3. 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}