Commit f35cfd17 authored by David's avatar David
Browse files

fix: Missing attributes for some RunModel

Use complete_OutputsModel for all

Refs #177
Showing with 26 additions and 24 deletions
+26 -24
#' Run of a rainfall-runoff model on a sub-basin #' Run of a rainfall-runoff model on a sub-basin
#' #'
#' Run ONLY the rainfall-runoff model, upstream flow routing and Diversions are
#' not processed.
#'
#' @details #' @details
#' This function runs [airGR::RunModel] and add an item `Qsim_m3` to the returned #' This function runs [airGR::RunModel] (without lag) and add an item `Qsim_m3`
#' *OutputsModel* object. #' to the returned *OutputsModel* object.
#' #'
#' @param x \[object of class `InputsModel`\] `InputsModel` for [airGR::RunModel] #' @param x \[object of class `InputsModel`\] `InputsModel` for [airGR::RunModel]
#' @param RunOptions \[object of class *RunOptions*\] see [airGR::CreateRunOptions] for details #' @param RunOptions \[object of class *RunOptions*\] see [airGR::CreateRunOptions] for details
...@@ -28,8 +31,7 @@ RunModel.GR <- function(x, RunOptions, Param, ...) { ...@@ -28,8 +31,7 @@ RunModel.GR <- function(x, RunOptions, Param, ...) {
FUN_MOD <- match.fun(x$FUN_MOD) FUN_MOD <- match.fun(x$FUN_MOD)
OutputsModel <- FUN_MOD(x, RunOptions = RunOptions, OutputsModel <- FUN_MOD(x, RunOptions = RunOptions,
Param = Param[iFirstParamRunOffModel:length(Param)]) Param = Param[iFirstParamRunOffModel:length(Param)])
# Add Qsim_m3 in m3/timestep OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
OutputsModel$Qsim_m3 <- OutputsModel$Qsim * sum(x$BasinAreas) * 1e3
return(OutputsModel) return(OutputsModel)
} }
...@@ -62,17 +62,7 @@ RunModel.InputsModel <- function(x = NULL, ...@@ -62,17 +62,7 @@ RunModel.InputsModel <- function(x = NULL,
OutputsModel <- calcOverAbstraction(OutputsModel, FALSE) OutputsModel <- calcOverAbstraction(OutputsModel, FALSE)
OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE) OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE)
} }
OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
if (is.null(OutputsModel$Qsim_m3)) {
# Add Qsim_m3 in m3/timestep
OutputsModel$Qsim_m3 <-
OutputsModel$Qsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
}
if ("WarmUpQsim" %in% RunOptions$Outputs_Sim &&
is.null(OutputsModel$RunOptions$WarmUpQsim_m3)) {
OutputsModel$RunOptions$WarmUpQsim_m3 <-
OutputsModel$RunOptions$WarmUpQsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
}
if (x$hasDiversion && !x$isReservoir) { if (x$hasDiversion && !x$isReservoir) {
OutputsModel <- RunModel_Diversion(x, RunOptions, OutputsModel) OutputsModel <- RunModel_Diversion(x, RunOptions, OutputsModel)
} }
......
...@@ -20,20 +20,15 @@ RunModel_Routing <- function(x, RunOptions, Param, QcontribDown = NULL, ...) { ...@@ -20,20 +20,15 @@ RunModel_Routing <- function(x, RunOptions, Param, QcontribDown = NULL, ...) {
x$BasinAreas[length(x$BasinAreas)] <- 1E-6 x$BasinAreas[length(x$BasinAreas)] <- 1E-6
} }
OutputsModel <- RunModel_Lag_enhanced(x, OutputsModel <- RunModel_Lag_enhanced(x,
RunOptions = RunOptions, RunOptions = RunOptions,
Param = Param[1], Param = Param[1],
QcontribDown = QcontribDown) QcontribDown = QcontribDown)
if (is.null(OutputsModel$DatesR)) { if (is.null(OutputsModel$DatesR)) {
OutputsModel$DatesR <- x$DatesR[RunOptions$IndPeriod_Run] OutputsModel$DatesR <- x$DatesR[RunOptions$IndPeriod_Run]
} }
if ("WarmUpQsim" %in% RunOptions$Outputs_Sim) { OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
OutputsModel$RunOptions$WarmUpQsim_m3 <-
OutputsModel$RunOptions$WarmUpQsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
}
OutputsModel <- calcOverAbstraction(OutputsModel, FALSE) OutputsModel <- calcOverAbstraction(OutputsModel, FALSE)
OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE) OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE)
OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep
return(OutputsModel) return(OutputsModel)
} }
......
...@@ -149,3 +149,18 @@ add_OutputsModel_attributes <- function(InputsModel, OutputsModel, IndPeriod_Run ...@@ -149,3 +149,18 @@ add_OutputsModel_attributes <- function(InputsModel, OutputsModel, IndPeriod_Run
attr(OutputsModel, "TimeStep") <- attr(InputsModel, "TimeStep") attr(OutputsModel, "TimeStep") <- attr(InputsModel, "TimeStep")
return(OutputsModel) return(OutputsModel)
} }
complete_OutputsModel <- function(OutputsModel, RunOptions, BasinAreas) {
OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep
if (is.null(OutputsModel$Qsim_m3)) {
# Add Qsim_m3 in m3/timestep
OutputsModel$Qsim_m3 <-
OutputsModel$Qsim * sum(BasinAreas, na.rm = TRUE) * 1e3
}
if ("WarmUpQsim" %in% RunOptions$Outputs_Sim &&
is.null(OutputsModel$RunOptions$WarmUpQsim_m3)) {
OutputsModel$RunOptions$WarmUpQsim_m3 <-
OutputsModel$RunOptions$WarmUpQsim * sum(BasinAreas, na.rm = TRUE) * 1e3
}
return(OutputsModel)
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment