hydro:inghy:exchange
- en
- en
Table of Contents
Ingenieurhydrologie Modellierung
Lineare Regression rechnen
- |Lin-Regr.r
#' --- #' title: "Lineae Regression" #' author: "C. Kuells" #' date: "9. Mai, 2015" #' --- x <- c(-2, -1, -0.8, -0.3, 0, 0.5, 0.6, 0.7, 1, 1.2) y <- c(1.9, 0.6, 0.5, 0.8, -0.4, -0.9, -0.7, -0.1, -1.7, -0.2) fm <- lm(y ~ x) #+ fig.width=5, fig.height=5 plot(x, y, xlim = c(-3, 3), ylim = c(-3, 3), pch = 19) fitted.values(fm) residuals(fm) #+ fig.width=5, fig.height=5 plot(x, y, xlim = c(-3, 3), ylim = c(-3, 3), pch = 19) abline(fm, col = "red")
Datein einlesen
wd <- getwd() setwd("C:\HydroPro\R+") klima <- read.csv(file="c:/HydroPro/R+/fuhlsbuettel.txt", header=TRUE, sep=";", na.string="-999") summary(klima) attach(klima)
Kontrollstrukturen
if (bed1 < eps) { a3 <- a1 + a2 else { a3 <- 0 }
for (i in 1:length(N)) { if (N[i] <= Va) { Nc[i] <- 0.0 } else { Nc[i] <- N[i]-Va } }
Erstes Modell
#' --- #' title: Hydrologisches Modell #' author: "C. Kuells" #' date: "9. Mai, 2015" #' --- setwd("C:\\HydroPro\\R+") klima <- read.csv(file="fuhlsbuettel.txt", header=TRUE, sep=";", na.strings=" -999") # Fehlwerte richtig einlesen: man muss na.strings=" -999" eingeben - mit den zwei Leerzeichen davor! summary(klima) attach(klima) N <- NIEDERSCHLAGSHOEHE Nc <- N Flaeche <- 640 # km2 A <- 0.08 # Abflusskoeffizient Va <- 3 # mm Anfangsverlust bei 1 bis 3 mm pro Tag # return kann weggelassen werden! for (i in 1:length(N)) { if (N[i] <= Va) { Nc[i] <- 0.0 } else { Nc[i] <- N[i]-Va } } Q <- Nc*A*(Flaeche*1000000)*1/1000*1/86400 # Einheitenumwandlung Flaeche m2 -> km2, Volumen l-> qm, Zeit Tag -> Sekunde plot(Q, ylim = c(0, 10))
Das Stanford Modell, das Xinanjiang-Modell und das VIC Modell beruhen auf mehr oder weniger der selben Theorie. Diese ist in Zhao et al. 1972 beschrieben. Die Theorie habe ich für Sie in einem Text zusammengefasst, dazu gibt es eine Präsentation mit den wichtigen Formeln und dem R-Code.
Für das Modell gibt es einen R-Code:
# Modelldokumentation # Das Modell wurde von C. Kuells entwickelt # # Version 1.0 in 2017 # Verwendung von R 3.1.13 # Bibliotheken library(tcltk2) # For themed message boxes; library(tcltk) is fine too here library(grid) library(gridExtra) library(tkrplot) PlotDataWindow <- function(x,y){ hscale <- 1.5 # Horizontal scaling vscale <- 1.5 # Vertical scaling plotTk <- function(x,y) { plot(x, y, main = "A parabola") } win1 <- tktoplevel() tktitle(win1) <- "Graph" win1$env$plot <- tkrplot(win1, fun = plotTk, hscale = hscale, vscale = vscale) tkgrid(win1$env$plot) return(tkgrid) } # Funktionen des Modelles OpenClimateFile <- function(){ # Einlesen der Niederschlagsdatei # Die Niederschlagsdatei soll im CSV Format vorliegen N <- tclvalue(tkgetOpenFile()) # Open file if (!nchar(filename)) { tkmessageBox(message = "No file was selected!") } else { tkmessageBox(message = paste("The file selected was", filename)) } Ndf <- data.frame(N) return(Ndf) } # Parameter initialisieren A <- seq(0.0,1,0.05) # Flaeche hier als Anteil zwischen 0 und 1 im <- 1.0 # maximale Speicherung, hier als Bereich 0 bis 1 io = 0.5 # aktuelle Feuchte b <- 0.5 # Formfaktor # Parameter-abhaengige Functionen # Flaeche vs. Saettigung Defizit <- function(A,b,io,im){ i <- im*(1-(1-A)^{1/b}) d <- A*0.0 # Defizit initialisiert for (n in 1:(length(A))) { if (i[n]>io) { d[n] <- (i[n]-io) } else { d[n] <- 0.0 } } return(d) } # Menu des Programmes mit Tcltk2 winFHL <- tktoplevel() winFHL$env$menu <- tk2menu(winFHL) # Create a menu tkconfigure(winFHL, menu = winFHL$env$menu) # Add it to the 'winFHL' window winFHL$env$menuFile <- tk2menu(winFHL$env$menu, tearoff = FALSE) tkadd(winFHL$env$menuFile, "command", label = "Load", command = function() OpenClimateFile()) tkadd(winFHL$env$menuFile, "command", label = "Quit", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menu, "cascade", label = "Data", menu = winFHL$env$menuFile) winFHL$env$menuRun <- tk2menu(winFHL$env$menu, tearoff = FALSE) tkadd(winFHL$env$menuRun, "command", label = "Run Model", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menu, "cascade", label = "Run", menu = winFHL$env$menuRun) winFHL$env$menuResults <- tk2menu(winFHL$env$menu, tearoff = FALSE) tkadd(winFHL$env$menuResults, "command", label = "Result Runoff", command = function() PlotDataWindow(A,d)) tkadd(winFHL$env$menuResults, "command", label = "Result Water Budget", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menuResults, "command", label = "Result Fit", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menu, "cascade", label = "Results", menu = winFHL$env$menuResults) winFHL$env$menuHelp <- tk2menu(winFHL$env$menu, tearoff = FALSE) tkadd(winFHL$env$menuHelp, "command", label = "Help", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menuHelp, "command", label = "R", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menuHelp, "command", label = "About", command = function() tkdestroy(winFHL)) tkadd(winFHL$env$menu, "cascade", label = "Help", menu = winFHL$env$menuHelp) # Darstellung der Modellstruktur (Bild) # Festlegen der Parameter des Modelles # Menu mit editierbarer Tabelle # Lesen aus und schreiben in eine Datei # Berechnung des Modelles: # Berechnung des freien Speichers oder Defizits # fertig: s.o. # Berechnung der gesaettigten Flaeche # fertig: s.o. # Berechnung des Abflusses # Berechnung der Infiltration # Berechnung der potentiellen Verdunstung # Berechnung der aktuellen Verdunstung # Berechnung der Tiefensickerung # Berechnung der speicherinhaltes des tieferen Speichers # Berechnung der Perkolation # Berechnung des Abflusses aus dem tieferen Speicher # Routing des Abflusses mit der Muskinghum-Cunge Methode # Next: Neuer Zeitschritt # Schreiben der Ergebnis-Datei
/usr/www/users/uhydro/doku/data/pages/hydro/inghy/exchange.txt · Last modified: 2024/04/10 10:03 by 127.0.0.1