eventsep | R Documentation |
Based on daily mean discharges, a window-variance is calculated. If this variance exceeds a certain threshold, a flood event has been detected. To determine the begin of the flood event, the lag 1 differences are considered. The point, where the differences are positive for the last time before the variance exceeds the threshold, is defined as the starting point (including natural variability). The end of the flood event is defined as the point where the sum of the rising limb of the event equals approximately the sum of the falling limb.
eventsep(
dailyMQ,
monthlyHQ = NULL,
dvar = 3,
gamma = 1,
theta = 0.25,
ddur = 40,
omega = 2,
Kappa = 0.4,
eta = 0.1,
delta = 0.2,
usemed = FALSE,
medbf = 0.5,
NA_mode = NULL,
Messages = TRUE
)
dailyMQ |
A dataframe where the date is given as R-date or string (d.m.Y)) in the first and the daily mean discharges are given in the second column. |
monthlyHQ |
A dataframe where the date is given as R-date or string (d.m.Y) in the first and the monthly maximum discharge peaks are given in the second column. |
dvar |
integer: The window length of the moving variance in days. By default, it is set to three days. |
gamma |
numeric: Parameter for finding the start. |
theta |
numeric: The proportion of the sample variance of the dvar-day-window variance on the threshold. By default it is set to theta=0.25. |
ddur |
integer: The approximate minimum length of an overlaid event in days. By default it is set to ddur=40. |
omega |
integer: Threshold parameter for defining the end of a flood event. By default it is set to omega=2. |
Kappa |
numeric: Threshold parameter for defining the begin of a flood event. By default it is set to Kappa=0.4. |
eta |
numeric: Threshold parameter for defining the begin of a flood event. By default it is set to eta=0.1. |
delta |
numeric: Threshold parameter for defining the end of a flood event. By default it is set to delta=0.2. |
usemed |
logical: Should the median of relative difference between the baseflow at the end and the begin be considered to determine the end of the flood event. |
medbf |
numeric: The median of relative difference between the baseflow at the end and the begin of all separated flood events. Used to define the end of the event, if usemed=TRUE. |
NA_mode |
integer: If the timeseries does contain any NA values, NA_mode can be used to interpolate all gaps of continious NA-values by linear interpolation. Only gaps smaller or equal to NA_mode (>=0) will be interpolated. Additionally, if the timeseries contains larger gaps, the timeseries is splited into subsamples with each being seperated intependend. The resulting separation table will still be append together. |
Messages |
logical: Should messages be thrown out |
To characterize the flood regime, it is necessary to estimate single events and to separate the amount of direct runoff from the total volume. For this purposes, a procedure is developed, which is based on the following three assumptions:
• A flood event is an exceedance of the normal discharge within a time span. For every flood event beginning and end has to be specified.
• A flood event is characterized by significantly increased discharge dynamics. Especially around the flood peaks, the sample variance of daily discharges within a moving time window will be higher than for other time periods with the same length.
• For all flood events, the volume of the rising limb of the hydrograph has to be equal the volume of the falling limb.
An assumed increase of base flow during the event has to be considered. The
automatic event separation is based on the Lag one (1 day) differences of
the daily mean discharges QD_i= Q_i-Q_{i-1}
, with QD_1=0
, and
the sample variance of daily discharges within a moving window of dvar days:
Var_{d_{var}}(i)=Var(Q_{i-(d_{var}-1)},\ldots,Q_i)
Var_{d_{var}}(j)=0, for j=1,…,dvar.
The appropriated window length
depends on the reaction time of the watershed and in this way from the
catchment size. In our studies we modified it between 3 and 7 days, but 3
days were appropriated for nearly all catchments. To indicate the time span
of the flood event, the sample variance has to exceed a certain threshold.
We defined this threshold with the mean plus 0.25 \sigma
variance of
all sample variances which could be derived within the long discharge
series:
T{{H}_{var}}=\overline{{{V}_{{{d}_{var}}}}}+0.25\cdot
\sqrt{Var({{V}_{{{d}_{var}}}})}.
The peak is located within the time span, where the sample variance exceeds this threshold. The starting point of the flood event was defined as the time step in front of the peak for which the lag one-difference QD is negative for the last time:
t_{start}=\max\lbrace 1\leq i < t_{peak} | QD_i <0 \rbrace.
From this
point on, discharges increase until the peak is reached. However, this
increase does not always indicate the true start of the flood event.
Instead, the natural variability in discharge can lead to an increase. To
consider this, a temporal decrease between two discharges in succession of
10 percent was accepted. In such cases, the starting point was shifted
further in the future (Q_{t_{start}}= Q_{t_{start}+1}
) until the
following condition was fulfilled:
|({{Q}_{{{t}_{s}}_{tart}}}-{{Q}_{{{t}_{start}}+1}})/{{Q}_{{{t}_{start}}+1}}|<0.1.
The rising limb of a flood event is not steady, often pre-floods occured. We
handled this by setting t_{start}=t_{start}-2
, if
(Q_{t_{start}-1}-Q_{t_{start}-2})> 0.4 (Q_{t_{peak}}-Q_{t_{start}})
.
This condition ensures that the rising limb is included in total in the
flood event. For the case where the rising limb of the two days before the
peak has been larger than 40\%
of the actual limb we included these
days in the flood event since they define a pre-flood. To define the end of
the flood event we needed to find the time for which the differences between
the volumes of the rising limb (SI) and the falling limb is approximately
zero. Since also a possible increase of the baseflow during the flood event
has to be considered, we define the end by
{{t}_{end}}= \min \left\{
{{t}_{peak}}+1\le t\le n|\left( {{\beta }_{B;k}}\le median({{\beta }_{B}})
\right)\vee \left( \left( \sum\limits_{i={{t}_{peak}}+1}^{t}{Q}{{D}_{i}}\le
{{Q}_{{{t}_{start}}}} \right)\wedge \\ \left( 0.2\left(
SI-\sum\limits_{i={{t}_{peak}}+1}^{t}{Q}{{D}_{i}} \right)\ge
(Q{{D}_{t+1}}+Q{{D}_{t+2}}) \right) \right) \right\},
where
\beta_{B;k}
is the slope of the baseflow of the event. This includes
two criteria: the volume of the falling limb is smaller than the baseflow at
the beginning of the flood and the following two days the difference between
the volume of the rising limb and the falling limb is not reduced by more
than 20\%
. Alternatively, also the slope of the baseflow between start
and end of the hydrograph is smaller than the median of the slope of the
baseflow for all other flood events of the considered gauge. The number of
peaks of the flood event then can be estimated by the number of time periods
of exceedance of the variance threshold.
A special case that cannot be addresses directly by the procedure described
above are flood events with multiple peaks. Here, we want to divide into two
main cases: the superposition of two flood events and superimposed floods.
In the first case, a second flood event begins before the recession of the
first event has ended. This leads to an enhancement of the second event. The
second case corresponds to a time period of an already increased baseflow,
e.g. due to snowmelt. If flood events occur during this period, they are
superimposed on this increased baseflow. Of course, not every flood event
with multiple peaks belong to either of this cases. We define that a flood
event consists potentially of superpositioned events of the originally
separated event has a duration of less than 40 days. This parameter can be
chosen according to the catchment size. Since the Mulde basin only consist
of mesoscale catchments, this threshold is sufficient for our purpose. We
then apply the independence criterion by Klein (2009) to validate if there
are independent peaks within this event, i.e. two peaks - That deviate by
less than five times the smaller peak - For which the larger peak is more
than 2.5 times as large as the smallest discharge between both peaks - For
which 70\%
of the smaller peak are larger than the smalles discharge
between two peaks.
This criterion ensures that both peak are large enough to be separate flood event and that the recession of the first event is large enough to state them as independent. For all peaks that fulfill this criterion we choose the two peaks with the largest recession in between. According to this, two sub-events are defined, the first one with starting point equal to the original event begin. The end of this event is estimated by the lowest discharge between both peaks to which the recession of the original event is added (that are all discharge values smaller than the values of the valley) to reconstruct the overlaid recession of the first event. The second events begins with the smallest discharge value between both peaks and end with the original ending. Superimposed events can occur if the originally separated event has a duration larger than 40 days. Again, all peaks are checked for independence and are separated again. Since the separation of multiple peak events, especially of superimposed events is rather difficult, a manual check afterwards is recommended.
A dataframe is returned with the following columns, where each row is a flood event:
Begin |
date (d.m.Y) of the begin of the flood event |
End |
date (d.m.Y) of the end of the flood event |
Peak_date |
date (d.m.Y) of the maximum daily discharge during the flood event |
DailyMQ |
maximum daily mean discharge [m³/s] during the flood event |
Volume |
volume [Mio. m³] of the flood event calculated by the sum of all daily mean discharges during the flood event |
dir_Volume |
direct volume [Mio. m³] calculated by the difference of the volume and the baseflow. The baseflow is estimated by a straight line between the discharge at the beginning and the end of the flood event. |
baseflow_peak |
baseflow [m³/s] at the day of the flood peak, calculated by the straight-line method. |
baseflow_begin |
baseflow [m³/s] at the beginning of the flood event, equal to the daily mean discharge of the beginning of the flood event. |
baseflow_end |
baseflow [m³/s] at the end of the flood event, equal to the daily mean discharge of the end of the flood event. |
No_peaks |
number of peaks during the flood event |
HQ |
peak discharge [m³/s] of the flood event taken from the monthly maximum discharges. If no monthly maximum discharge is available for the flood event, it is set to NA. |
HQ_dir |
direct peak discharge, claculated by the difference of HQ and baseflow_peak |
comments |
a short note if the event is overlaid, or first respectively second part of a double-peaked flood event. |
Important note: If a double-peaked or an overlaid event occurs, the whole event is listed in the output first, followed by the splitted partial events.
Svenja Fischer
Klein, B. (2009): Ermittlung von Ganglinien für die risikoorientierte Hochwasserbemessung von Talsperren. Schriftenreihe des Lehrstuhls Hydrologie, Wasserwirtschaft und Umwelttechnik, Ruhr-University Bochum.
Fischer, S., Schumann, A., & Bühler, P. (2019): Timescale-based flood typing to estimate temporal changes in flood frequencies. Hydrological Sciences Journal, 64(15), 1867–1892. https://doi.org/10.1080/02626667.2019.1679376
## Not run:
dailyMQ<-data.frame(Date=seq(from=as.Date("01.01.2000", format="%d.%m.%Y"),
to=as.Date("01.01.2004", format="%d.%m.%Y"), by="days"),
discharge=rbeta(1462,2,20)*100)
monthlyHQ<-data.frame(Date=seq(from=as.Date("01.01.2000", format="%d.%m.%Y"),
to=as.Date("01.01.2004", format="%d.%m.%Y"), by="months"),
discharge=dailyMQ$discharge[(0:48)*12+1]+rnorm(49,5,1))
eventsep(dailyMQ, monthlyHQ)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.