diff --git a/R/RunModel.GR.R b/R/RunModel.GR.R index 234fdfe32411b5f66048cbee3cb258ddd23cf120..2c9ba196a4066a979f6831a77199d3a46d6d3035 100644 --- a/R/RunModel.GR.R +++ b/R/RunModel.GR.R @@ -1,8 +1,11 @@ #' 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 -#' This function runs [airGR::RunModel] and add an item `Qsim_m3` to the returned -#' *OutputsModel* object. +#' This function runs [airGR::RunModel] (without lag) and add an item `Qsim_m3` +#' to the returned *OutputsModel* object. #' #' @param x \[object of class `InputsModel`\] `InputsModel` for [airGR::RunModel] #' @param RunOptions \[object of class *RunOptions*\] see [airGR::CreateRunOptions] for details @@ -28,8 +31,7 @@ RunModel.GR <- function(x, RunOptions, Param, ...) { FUN_MOD <- match.fun(x$FUN_MOD) OutputsModel <- FUN_MOD(x, RunOptions = RunOptions, Param = Param[iFirstParamRunOffModel:length(Param)]) - # Add Qsim_m3 in m3/timestep - OutputsModel$Qsim_m3 <- OutputsModel$Qsim * sum(x$BasinAreas) * 1e3 + OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas) return(OutputsModel) } diff --git a/R/RunModel.InputsModel.R b/R/RunModel.InputsModel.R index 0693e4427078cbcfe79c654cfd8602ba8385d698..476445937257b72dcb4ec6bcc7a9c6ad9976d86e 100644 --- a/R/RunModel.InputsModel.R +++ b/R/RunModel.InputsModel.R @@ -62,17 +62,7 @@ RunModel.InputsModel <- function(x = NULL, OutputsModel <- calcOverAbstraction(OutputsModel, FALSE) OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE) } - 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(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 - } + OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas) if (x$hasDiversion && !x$isReservoir) { OutputsModel <- RunModel_Diversion(x, RunOptions, OutputsModel) } diff --git a/R/RunModel_Routing.R b/R/RunModel_Routing.R index 5463c6a42fa7bbe78f5fabc1141dbcd039c540a1..461b870d5c2f8077afa99d41c80cbaa801a111a0 100644 --- a/R/RunModel_Routing.R +++ b/R/RunModel_Routing.R @@ -20,20 +20,15 @@ RunModel_Routing <- function(x, RunOptions, Param, QcontribDown = NULL, ...) { x$BasinAreas[length(x$BasinAreas)] <- 1E-6 } OutputsModel <- RunModel_Lag_enhanced(x, - RunOptions = RunOptions, - Param = Param[1], - QcontribDown = QcontribDown) + RunOptions = RunOptions, + Param = Param[1], + QcontribDown = QcontribDown) if (is.null(OutputsModel$DatesR)) { OutputsModel$DatesR <- x$DatesR[RunOptions$IndPeriod_Run] } - if ("WarmUpQsim" %in% RunOptions$Outputs_Sim) { - OutputsModel$RunOptions$WarmUpQsim_m3 <- - OutputsModel$RunOptions$WarmUpQsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3 - } + OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas) OutputsModel <- calcOverAbstraction(OutputsModel, FALSE) OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE) - - OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep return(OutputsModel) } diff --git a/R/utils.RunModel.R b/R/utils.RunModel.R index 4515e2e75be54a3fb94dddddefcc83d066e983b5..dbf187bfb894844598d9b09ad1382b72f0005228 100644 --- a/R/utils.RunModel.R +++ b/R/utils.RunModel.R @@ -149,3 +149,18 @@ add_OutputsModel_attributes <- function(InputsModel, OutputsModel, IndPeriod_Run attr(OutputsModel, "TimeStep") <- attr(InputsModel, "TimeStep") 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