ELS <- function(N=50,C=0.1,K=7,ta=0,te=10,tm=30,dt=1){ errorflag <- FALSE # Prüfe if (N<0.0){ error <- "N ist < 0.0" errorflag <- TRUE } if(C < 0.0 | C > 1.0){ error <- "C nicht zwischen 0.0 und 1.0" errorflag <- TRUE } if(K <= 0.0){ error <- "K nicht >= 0" errorflag <- TRUE } if (ta<0.0){ error <- "ta ist < 0.0" errorflag <- TRUE } if (ta>=te){ error <- "ta ist > te" errorflag <- TRUE } if (ta>=tm){ error <- "ta ist > tm" errorflag <- TRUE } if (dt<=0.0){ error <- "dt ist <= 0.0" errorflag <- TRUE } if (dt>te){ error <- "dt ist > te" errorflag <- TRUE } # Erzeuge die Zeitreihe tv <- seq(ta,tm,by=dt) # Zeitvariable in Tagen # Berechne die Länge in Tagen Lt <- length(tv) # Initialisiere die Abflussserie mit 0, Einheit mm Qt <- replicate(Lt,0) # Erzeuge Variable für letzten Wert der Schleife QL <- 0.0 # last discharge # i ist die Integer Laufvariable, t ist die Zeit i <- 1 t <- ta while (i<=Lt) { if(t<=te){ # Anstieg (t < te) Qt[i] <- (N*C)*(1-exp(-t/K)) QL <- Qt[i] } else { # Rückgang Qt[i] <- QL*exp(-(t-te)/K) } # Gehe einen Zeitschritt dt weiter für t und setze Index i um +1 hoch t <- t + dt i <- i + 1 } # plot if (errorflag){ print(error) } else{ plot(tv,Qt, col=2, xlab="Zeit (Tage)", ylab="Q (l/s)", type = "o") } }