From 9e9619a958d7b88c8135748fcc14f1543223641f Mon Sep 17 00:00:00 2001 From: David <david.dorchies@inrae.fr> Date: Thu, 5 Dec 2024 03:17:39 +0100 Subject: [PATCH] feat(RunModel_Lag): allow to run it with non SD InputsModel Especially for Diversion on upstream nodes Fix #175 --- R/RunModel_Routing.R | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/R/RunModel_Routing.R b/R/RunModel_Routing.R index 461b870..1694e37 100644 --- a/R/RunModel_Routing.R +++ b/R/RunModel_Routing.R @@ -40,7 +40,7 @@ RunModel_Lag_enhanced <- function(InputsModel, RunOptions, Param, QcontribDown) stop("'InputsModel' must be of class 'InputsModel'") } if (!inherits(InputsModel, "SD")) { - stop("'InputsModel' must be of class 'SD'") + warning("'InputsModel' may better be of class 'SD'") } if (!inherits(RunOptions, "RunOptions")) { stop("'RunOptions' must be of class 'RunOptions'") @@ -181,14 +181,16 @@ RunModel_Lag_enhanced <- function(InputsModel, RunOptions, Param, QcontribDown) } if ("StateEnd" %in% RunOptions$Outputs_Sim) { - SD <- lapply(seq(NbUpBasins), function(x) { - lastTS <- RunOptions$IndPeriod_Run[length(RunOptions$IndPeriod_Run)] - InputsModel$Qupstream[(lastTS - floor(PT[x])):lastTS, x] - }) - if (is.null(OutputsModel$StateEnd)) { - OutputsModel$StateEnd <- list(SD = SD) - } else { - OutputsModel$StateEnd$SD <- SD + if (NbUpBasins > 0) { + SD <- lapply(seq(NbUpBasins), function(x) { + lastTS <- RunOptions$IndPeriod_Run[length(RunOptions$IndPeriod_Run)] + InputsModel$Qupstream[(lastTS - floor(PT[x])):lastTS, x] + }) + if (is.null(OutputsModel$StateEnd)) { + OutputsModel$StateEnd <- list(SD = SD) + } else { + OutputsModel$StateEnd$SD <- SD + } } # message("StateEnd: ", paste(OutputsModel$StateEnd$SD, collapse = ", ")) } -- GitLab