Implementierung des Konzepts

Modell-Parameter

snow_melt_rate:[3..10] Rate of snow melt in \(\frac{mm}{day °C}\)
infiltration_w0:
 [0.501..0.989] \(W_0\) saturation index
soil_capacity:[28.8..1e+04] Capacity of rooted zone in \(mm\)
ETV1:[0.101..0.898] Fraction of soil capacity where ET starts to be limited
percolation_Q0:[0.708..999] Percolation rate in \(mm/day\) when the soil stores contains:math:V_0 cdot C [mm] water
percolation_V0:[0.0102..0.998] Normal soil water content in terms of soil water capacity
percolation_Vres:
 [0.000234..0.999] Residual water content of the soil water
percolation_beta:
 [0.501..5] Curve shape parameter of the power law function
groundwater_residence_time:
 [1.37..999] Residence time of the groundwater in days
LAI:[0.505..5.99] Effective leaf area index
canopy_closure:[1.32e-05..0.999] Fraction of rainfall that stays in the canopy

Die Modell-Klasse

class models.philipp.Modell[Quellcode]

Ein einfaches Lumped-Modell, dass 2 Subsurface-Speicher besitzt.

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

Connects the canopy with the rainfall and the surface depending on vegetation parameters

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

Creates the connections and parameterizes the storages of the model

create_snow_connections(p: models.philipp.Parameters)[Quellcode]

Divides snowfall and rainfall based on temperature and calculates the snow melt rate using a simple temperature index melting model :param p: The model parameters, here only p.snow_melt_rate is used

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

Models infiltration with a mixed saturation / infiltration excess model and routes all runoff directly without timelag to the outlet

evaluation()[Quellcode]

Returns the evaluation data

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

Calls create_connections and inital_values to shape the model using the parameter set p and returns an iterator that advances the model over the whole data period

mm_to_m3(vol)[Quellcode]

Calculates volume in m³ from the normalized volume in mm :param vol: The volume in mm :return: The volume in m³

objectivefunction(simulation, evaluation)[Quellcode]

Calculates the goodness of the simulation

Calculates
  • \(NSE_c\): the Nash-Sutcliffe Efficiancy
    for the calibration period (self.begin:self.end)
  • \(PBIAS_c\): the procentual bias between model and observation
    for the calibration period (self.begin:self.end)
  • \(NSE_v\): the Nash-Sutcliffe Efficiancy
    for the validation period (self.end:self.data.end)
  • \(PBIAS_v\): the procentual bias between model and observation
    for the validation period (self.end:self.data.end)

and returns these objectives as a list in that order

output(t)[Quellcode]

Defines what the ouput of the model is :param t: Time step of the model :return: A value representing the model output

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

Integrates the model over the whole data period :return: cmf.timeseries including the model output

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

Sets the upper soil capacity

simulation(vector)[Quellcode]

This function is only important for spotpy, otherwise it is equivalent with „run“ :param vector: :return:

Das CMF-Projekt

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

Project nodes:
  • {outlet}:
    • waterbalance connection({Surface water of cell #0}<->{outlet})
    • LinearStorageConnection({GW}<->{outlet})
Cells:
  • cell #0(0,0,0):
    • {Snow of cell #0}:
      • Simple T-Index snow melt({Snow of cell #0}<->{Surface water of cell #0})
      • Snowfall({Rainfall from Grebenau avg}<->{Snow of cell #0})
    • {Canopy of cell #0}:
      • Penman Monteith (canopy) get_evaporation({Canopy of cell #0}<->{Evaporation of cell #0})
      • Rutter interception({Canopy of cell #0}<->{Surface water of cell #0})
      • Intercepted rain({Rainfall from Grebenau avg}<->{Canopy of cell #0})
    • {Soil}:
      • simple infiltration({Surface water of cell #0}<->{Soil})
      • power law({Soil}<->{GW})
      • HargreaveET({Soil}<->{Transpiration of cell #0})
    • {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