hydro:inghy:exchange
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
hydro:inghy:exchange [2017/06/12 15:46] – [Datein einlesen] ckuells | hydro:inghy:exchange [2024/04/10 10:03] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | |||
====== Ingenieurhydrologie Modellierung ====== | ====== Ingenieurhydrologie Modellierung ====== | ||
<code rsplus |Blaney-Criddle.r> | <code rsplus |Blaney-Criddle.r> | ||
Zeile 9: | Zeile 10: | ||
===== Lineare Regression rechnen ===== | ===== Lineare Regression rechnen ===== | ||
- | <code rsplus |Blaney-Criddle.r> | + | <code rsplus |Lin-Regr.r> |
#' --- | #' --- | ||
Zeile 31: | Zeile 32: | ||
< | < | ||
- | klima <- read.csv(file=" | + | wd <- getwd() |
+ | setwd(" | ||
+ | klima <- read.csv(file=" | ||
summary(klima) | summary(klima) | ||
attach(klima) | attach(klima) | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== Kontrollstrukturen ==== | ||
+ | |||
+ | < | ||
+ | if (bed1 < eps) { | ||
+ | a3 <- a1 + a2 | ||
+ | else { | ||
+ | a3 <- 0 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | for (i in 1: | ||
+ | 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(" | ||
+ | |||
+ | klima <- read.csv(file=" | ||
+ | # Fehlwerte richtig einlesen: man muss na.strings=" | ||
+ | |||
+ | 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: | ||
+ | if (N[i] <= Va) { | ||
+ | Nc[i] <- 0.0 | ||
+ | } else { | ||
+ | Nc[i] <- N[i]-Va | ||
+ | } | ||
+ | } | ||
+ | Q <- Nc*A*(Flaeche*1000000)*1/ | ||
+ | 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 {{ de: | ||
+ | |||
+ | 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, | ||
+ | hscale <- 1.5 # Horizontal scaling | ||
+ | vscale <- 1.5 # Vertical scaling | ||
+ | | ||
+ | plotTk <- function(x, | ||
+ | plot(x, y, main = "A parabola" | ||
+ | } | ||
+ | | ||
+ | win1 <- tktoplevel() | ||
+ | tktitle(win1) <- " | ||
+ | | ||
+ | win1$env$plot <- tkrplot(win1, | ||
+ | | ||
+ | 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(" | ||
+ | } | ||
+ | Ndf <- data.frame(N) | ||
+ | return(Ndf) | ||
+ | } | ||
+ | |||
+ | # Parameter initialisieren | ||
+ | A <- seq(0.0, | ||
+ | im <- 1.0 # maximale Speicherung, | ||
+ | io = 0.5 # aktuelle Feuchte | ||
+ | b <- 0.5 # Formfaktor | ||
+ | |||
+ | # Parameter-abhaengige Functionen | ||
+ | |||
+ | # Flaeche vs. Saettigung | ||
+ | Defizit <- function(A, | ||
+ | i <- im*(1-(1-A)^{1/ | ||
+ | d <- A*0.0 # Defizit initialisiert | ||
+ | for (n in 1: | ||
+ | if (i[n]> | ||
+ | d[n] <- (i[n]-io) | ||
+ | } else { | ||
+ | d[n] <- 0.0 | ||
+ | } | ||
+ | } | ||
+ | return(d) | ||
+ | } | ||
+ | |||
+ | # Menu des Programmes mit Tcltk2 | ||
+ | winFHL <- tktoplevel() | ||
+ | winFHL$env$menu <- tk2menu(winFHL) | ||
+ | tkconfigure(winFHL, | ||
+ | winFHL$env$menuFile <- tk2menu(winFHL$env$menu, | ||
+ | tkadd(winFHL$env$menuFile, | ||
+ | command = function() OpenClimateFile()) | ||
+ | tkadd(winFHL$env$menuFile, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menu, | ||
+ | |||
+ | winFHL$env$menuRun <- tk2menu(winFHL$env$menu, | ||
+ | tkadd(winFHL$env$menuRun, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menu, | ||
+ | |||
+ | winFHL$env$menuResults <- tk2menu(winFHL$env$menu, | ||
+ | tkadd(winFHL$env$menuResults, | ||
+ | command = function() PlotDataWindow(A, | ||
+ | tkadd(winFHL$env$menuResults, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menuResults, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menu, | ||
+ | |||
+ | winFHL$env$menuHelp <- tk2menu(winFHL$env$menu, | ||
+ | |||
+ | tkadd(winFHL$env$menuHelp, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menuHelp, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menuHelp, | ||
+ | command = function() tkdestroy(winFHL)) | ||
+ | tkadd(winFHL$env$menu, | ||
+ | |||
+ | # 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/attic/hydro/inghy/exchange.1497275211.txt.gz · Zuletzt geändert: 2024/04/10 10:15 (Externe Bearbeitung)