Implementierung des Konzepts

Modell-Parameter

infiltration_w0:
 [0.5..0.99] \(W_0\) Sättigungsindex des Bodens
soil_capacity:[14.9..1e+04] Wasserkapazität des Bodens
ETV1:[0.1..0.897] Anteil des Bodenwassers auf den die Evapotranspiration nur noch limitiert wirkt
percolation_Q0:[1.71..1000] Versickerungsrate des Bodenwassers in den Auslass in \(mm/day\) wenn der Bodenspeicher:math:V_0 cdot C [mm] Wasser enthält
percolation_Q1:[0.155..998] Versickerungsrate des Bodenwassers in das Grundwasser in \(mm/day\) wenn der Bodenspeicher:math:V_0 cdot C [mm] Wasser enthält
percolation_V0:[0.0129..0.999] Referenzwert des Bodenwassergehalts in Bezug auf die Bodenwasserkapazität
percolation_Vres0:
 [0.000234..1] Restwassergehalt des Bodens, ab dem keine Perkloation in den Auslass mehr stattfindet
percolation_Vres1:
 [0.000204..0.998] Restwassergehalt des Bodens, ab dem keine Perkloation in den das Grundwasser mehr stattfindet
percolation_beta0:
 [0.524..5] Parameter für dir Kurvenform der Potenzgesetz-Funktion, welche die Verbindung von Bodenspeicher und Auslass beschreibt
percolation_beta1:
 [0.502..4.99] Parameter für dir Kurvenform der Potenzgesetz-Funktion, welche die Verbindung von Bodenspeicher und Grundwasser beschreibt
groundwater_residence_time:
 [1.57..999] Verweilzeit im Grundwasser in Tagen
LAI:[0.507..6] Der effektive Blattflächenindex
canopy_closure:[0.00264..1] Der prozentuale Anteil des Niederschlags, welcher an der Vegtationsoberfläche verbleibt
surfacewater_residence_time:
 [2..999] Verweilzeit im Oberflächenwasser in Tagen

Die Modell-Klasse

class models.dennis.Modell[Quellcode]

Erzeugt die Klasse Modell, welche unterschiedliche Methoden enthält. Es wird ein einfaches 2-Speicher lumped Modell, Vegetationsspeicher und Oberflächenwasser, mit zwei Layern, Boden und Grundwasser erzeugt. :numref: ‚figconcept‘ zeigt das Modell-Konzept

create_canopy_connections(p: models.dennis.Parameters)[Quellcode]

Verteilt den Niederschlag auf die Vegetationoberfläche und das Oberflächenwasser in Abhängigkeit von den Vegetationsparametern, Blatflächenindex (LAI) und Vegetationsoberfläche (canopy_closure). Es findet keine Interzeption statt. Der Anteil des Niederschlages, der auf der Vegetationsoberfläche landet verdunstet dort auch wieder.

create_connections(p: models.dennis.Parameters = None)[Quellcode]

Verbindet und paramtrisert die Speicher des Modells Für die Verbindung zwischen Boden- und Grundwasserspeciher (Sickerwasser) sowie für die Verbindung von Bodenwasserspeicher zum Outlet (Zwischenabfluss) wird eine Potenzgesetz-Funktion genutzt. Die benötigten Parameter des Parametersets p sind für den Zwischenabfluss percolation_beta1, percolation_Vres1, percolation_V0 und percolation_Q1, bzw. percolation_beta0, percolation_Vres0, percolation_V0 und percolation_Q0 für den Basisabfluss. Zwischen Grundwasser und Outlet bzw. Oberflächenwasser und Outlet bestehen jeweils Linear Storage Connections welche als Parameter die jeweiligen Verweilzeiten (groundwater_residence_time und surfacewater_residence_time) benötigen.

create_surface_runoff(p: models.dennis.Parameters)[Quellcode]

Modelliert die Infiltration mit einer Mischung aus Sättigungs und Infiltrations Überschuss Modell. Trifft Niederschlag auf schon gesättigten Boden wird er direkt, mit zeitlicher Verzögerung zum Auslass geleitet. Als Parameter werden die infiltration_w0 und surfacewater_residence_time des Parametersets p verwendet.

evaluation()[Quellcode]

Gibt die Evaluationsdaten aus

iterate(p: models.dennis.Parameters)[Quellcode]

Ruft create_connections und inital_values um das Modell mit dem Parameter Set p zu formen und gibt einen Iterator aus, der das Modell über den gesamten Datenzeitraum weiterentwickelt.

mm_to_m3(vol)[Quellcode]

Umrechnungs des Volumens von mm zu m³ :param vol: Das Volumen in mm :return: Das Volumen in m³

objectivefunction(simulation, evaluation)[Quellcode]

Berechnet die Güte der Simulation durch die Nash-Sutcliffe Effizienz (NSE) und den prozentualen Fehler vom Model im Gegesatz zur Beobachtung

Berechnet
  • \(NSE_c\): die Nash-Sutcliffe Effizienz
    der Kalibrierperiode (1980-1985) (self.begin:self.end)
  • \(PBIAS_c\): den prozentuale Fehler vom Model im Gegesatz zur
    Beobachtung der Kalibrierperiode (1980-1985) (self.begin:self.end)
  • \(NSE_v\): die Nash-Sutcliffe Effizienz
    des Validierungszeitraums (1986-1989) (self.end:self.data.end)
  • \(PBIAS_v\): den prozentuale Fehler vom Model im Gegesatz zur
    Beobachtung des Validierungszeitraums (1986-1989) (self.end:self.data.end)

und gibt die Werte als Liste in dieser Reihenfolge aus

output(t)[Quellcode]

Definiert den Output des Modells :param t: Zeitschritt des Modells :return: Ein Wert der den Modell Output representiert

run(p: models.dennis.Parameters)[Quellcode]

Integriert das Modell über den gesamten Datenbereich :return: eine cmf.timeseries die den Output des Modells beinaltet

set_soil_capacity(p: models.dennis.Parameters)[Quellcode]

Legt die Oberbodenkapazität in Abhängigkeit von der Stärke der Bodenschicht (thickness) und des Parameters Wasserkapazität des Bodens (soil_capacity), des Parametersets p.

simulation(vector)[Quellcode]

Diese Funktion ist nur für spotpy relevant, sonst ist sie gleich wie „run“ :param vector: :return:

Das CMF-Projekt

cmf.project(1 cells, 1 meteo stations, 1 project nodes)

Project nodes:
  • {outlet}:
    • power law({Soil}<->{outlet})
    • LinearStorageConnection({GW}<->{outlet})
    • LinearStorageConnection({Surface water of cell #0}<->{outlet})
Cells:
  • cell #0(0,0,0):
    • {Canopy of cell #0}:
      • Penman Monteith (canopy) get_evaporation({Canopy of cell #0}<->{Evaporation of cell #0})
      • Intercepted rain({Rainfall from Grebenau avg}<->{Canopy of cell #0})
    • {Surface water of cell #0}:
      • LinearStorageConnection({Surface water of cell #0}<->{outlet})
      • simple infiltration({Surface water of cell #0}<->{Soil})
      • Throughfall({Rainfall from Grebenau avg}<->{Surface water of cell #0})
    • {Soil}:
      • power law({Soil}<->{outlet})
      • power law({Soil}<->{GW})
      • HargreaveET({Soil}<->{Transpiration of cell #0})
      • simple infiltration({Surface water of cell #0}<->{Soil})
    • {GW}:
      • power law({Soil}<->{GW})
      • LinearStorageConnection({GW}<->{outlet})
Meteo Stations:
  • cmf.MeteoStation(Grebenau avg,lat=51,lon=8,z= 0.0):
    Tmin: 3653 values from 1979-01-01 to 1989-01-01 step 1d:00:00:00h , min/mean/max -22.1 / 4.2157 / 18.6 Tmax: 3653 values from 1979-01-01 to 1989-01-01 step 1d:00:00:00h , min/mean/max -12.9 / 12.708 / 33.5 Tdew: ~ T: 3653 values from 1979-01-01 to 1989-01-01 step 1d:00:00:00h , min/mean/max -16.7 / 8.462 / 25.05 rHmean: ~ rHmax: ~ rHmin: ~ Sunshine: ~ Windspeed: ~ Rs: ~
Rain Stations:
  • Grebenau avg (838.23mm/year)
    3653 values from 1979-01-01 to 1989-01-01 step 1d:00:00:00h , min/mean/max 0 / 2.2965 / 56.6