Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 6,
fig.asp = 0.68,
out.width = "70%",
fig.align = "center"
)
## ----setup--------------------------------------------------------------------
library(airGRiwrm)
## ----network, echo = FALSE----------------------------------------------------
plot.mermaid("
graph LR
id95[54095]
id01[54001]
id29[54029]
id95 -->| 42 km| id01
subgraph Shared parameters from node 54032
id01 -->| 45 km| 54032
id29 -->| 32 km| 54032
end
54032 -->| 15 km| 54057
54002 -->| 43 km| 54057
classDef UpUng fill:#eef
classDef UpGau fill:#aaf
classDef IntUng fill:#efe
classDef IntGau fill:#afa
classDef DirInj fill:#faa
class id29 UpUng
class 54057,54032 IntGau
class id01 IntUng
class id95,54002 UpGau
")
## ----griwrm-------------------------------------------------------------------
data(Severn)
nodes <- Severn$BasinsInfo[, c("gauge_id", "downstream_id", "distance_downstream", "area")]
nodes$model <- "RunModel_GR4J"
nodes$model[nodes$gauge_id %in% c("54029", "54001")] <- "Ungauged"
griwrmV05 <- CreateGRiwrm(
nodes,
list(id = "gauge_id", down = "downstream_id", length = "distance_downstream")
)
griwrmV05
## ----plot_network-------------------------------------------------------------
plot(griwrmV05)
## ----obs----------------------------------------------------------------------
BasinsObs <- Severn$BasinsObs
DatesR <- BasinsObs[[1]]$DatesR
PrecipTot <- cbind(sapply(BasinsObs, function(x) {x$precipitation}))
PotEvapTot <- cbind(sapply(BasinsObs, function(x) {x$peti}))
Precip <- ConvertMeteoSD(griwrmV05, PrecipTot)
PotEvap <- ConvertMeteoSD(griwrmV05, PotEvapTot)
## ----InputsModel--------------------------------------------------------------
IM_U <- CreateInputsModel(griwrmV05, DatesR, Precip, PotEvap)
## ----RunOptions---------------------------------------------------------------
IndPeriod_Run <- seq(
which(DatesR == (DatesR[1] + 365*24*60*60)), # Set aside warm-up period
length(DatesR) # Until the end of the time series
)
IndPeriod_WarmUp = seq(1,IndPeriod_Run[1]-1)
RunOptions <- CreateRunOptions(IM_U,
IndPeriod_WarmUp = IndPeriod_WarmUp,
IndPeriod_Run = IndPeriod_Run)
Qobs <- cbind(sapply(BasinsObs, function(x) {x$discharge_spec}))
InputsCrit <- CreateInputsCrit(IM_U,
FUN_CRIT = ErrorCrit_KGE2,
RunOptions = RunOptions, Obs = Qobs[IndPeriod_Run,],
AprioriIds = c("54057" = "54032", "54032" = "54095"),
transfo = "sqrt", k = 0.15
)
CalibOptions <- CreateCalibOptions(IM_U)
## ----Calibration--------------------------------------------------------------
OC_U <- suppressWarnings(
Calibration(IM_U, RunOptions, InputsCrit, CalibOptions))
## ----param--------------------------------------------------------------------
ParamV05 <- sapply(griwrmV05$id, function(x) {OC_U[[x]]$Param})
dfParam <- do.call(
rbind,
lapply(ParamV05, function(x)
if (length(x)==4) {return(c(NA, x))} else return(x))
)
colnames(dfParam) <- c("velocity", paste0("X", 1:4))
knitr::kable(round(dfParam, 3))
## ----RunModel-----------------------------------------------------------------
OutputsModels <- RunModel(
IM_U,
RunOptions = RunOptions,
Param = ParamV05
)
## ----plot, fig.height = 5, fig.width = 8--------------------------------------
plot(OutputsModels, Qobs = Qobs[IndPeriod_Run,], which = c("Regime", "CumFreq"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.