diff --git a/.regressionignore b/.regressionignore index 43285f509ca962d6d99f7d202d64479b67ee2288..44aced51723929d2b68509f61dd2e192ef30f2d9 100644 --- a/.regressionignore +++ b/.regressionignore @@ -13,8 +13,10 @@ Param_Sets_GR4J RunOptions_Cal Param_Sets_GR4J RunOptions_Val * OutputsModel$Param * OutputsModel$WarmUpQsim +* OutputsModel$StateEnd Param_Sets_GR4J OutputsModel_Val RunModel_Lag InputsModel +RunModel_Lag OutputsModel RunModel_Lag OutputsModelDown SeriesAggreg SimulatedMonthlyRegime * InputsCrit$FUN_CRIT diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R index 8fd3022a680a5500cfd0271201ad0eeb41818de6..8f5235bb0ae82ad478defd0a99fa0231a5f2f5af 100644 --- a/R/CreateRunOptions.R +++ b/R/CreateRunOptions.R @@ -303,6 +303,9 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, ##Outputs_all Outputs_all <- c("DatesR", unlist(FortranOutputs), "WarmUpQsim", "StateEnd", "Param") + if (FeatFUN_MOD$IsSD) { + Outputs_all <- c(Outputs_all, "QsimDown", "Qsim_m3") + } ##check_Outputs_Sim if (!is.vector(Outputs_Sim)) { diff --git a/R/RunModel_Lag.R b/R/RunModel_Lag.R index dea36093c0ba94564c16d8e721963847bc2751b8..e6b8fe565ae05b296527222d1b18b3366b08bc92 100644 --- a/R/RunModel_Lag.R +++ b/R/RunModel_Lag.R @@ -116,14 +116,21 @@ RunModel_Lag <- function(InputsModel, RunOptions, Param, QcontribDown) { ## OutputsModel - OutputsModel$Qsim_m3 <- Qsim_m3[IndPeriod2] + if ("Qsim_m3" %in% RunOptions$Outputs_Sim) { + OutputsModel$Qsim_m3 <- Qsim_m3[IndPeriod2] + } if ("Qsim" %in% RunOptions$Outputs_Sim) { # Convert back Qsim to mm - OutputsModel$Qsim <- OutputsModel$Qsim_m3 / sum(InputsModel$BasinAreas, na.rm = TRUE) / 1e3 + OutputsModel$Qsim <- Qsim_m3[IndPeriod2] / sum(InputsModel$BasinAreas, na.rm = TRUE) / 1e3 # message("Qsim: ", paste(OutputsModel$Qsim, collapse = ", ")) } + if ("QsimDown" %in% RunOptions$Outputs_Sim) { + # Convert back Qsim to mm + OutputsModel$QsimDown <- QsimDown[IndPeriod2] + } + # Warning for negative flows or NAs only in extended outputs if (length(RunOptions$Outputs_Sim) > 2) { if (any(OutputsModel$Qsim[!is.na(OutputsModel$Qsim)] < 0)) { @@ -149,7 +156,7 @@ RunModel_Lag <- function(InputsModel, RunOptions, Param, QcontribDown) { # message("StateEnd: ", paste(OutputsModel$StateEnd$SD, collapse = ", ")) } if ("WarmUpQsim" %in% RunOptions$Outputs_Sim) { - OutputsModel$WarmUpQsim <- Qsim_m3[seq_len(length(RunOptions$IndPeriod_WarmUp))] + OutputsModel$WarmUpQsim <- Qsim_m3[seq_len(length(RunOptions$IndPeriod_WarmUp))] / sum(InputsModel$BasinAreas, na.rm = TRUE) / 1e3 } if ("Param" %in% RunOptions$Outputs_Sim) { diff --git a/tests/testthat/test-RunModel_Lag.R b/tests/testthat/test-RunModel_Lag.R index 374a797e7fa741b2e98515f133e0c6bdfb8d013f..23889967f71f1fef5983d51c86c92931481842fd 100644 --- a/tests/testthat/test-RunModel_Lag.R +++ b/tests/testthat/test-RunModel_Lag.R @@ -81,6 +81,14 @@ test_that("'QcontribDown$Qim' should have the same lenght as 'RunOptions$IndPeri ) }) +test_that("OutputsModel must have a item 'QsimDown' equal to GR4J Qsim contribution", { + expect_equal(OutputsGR4JOnly$Qsim, + RunModel_Lag(InputsModel = InputsModel, + RunOptions = RunOptions, + Param = 1, + QcontribDown = OutputsGR4JOnly)$QsimDown) +}) + test_that("RunModel(FUN=RunModel_Lag) should give same result as RunModel_Lag", { QcontribDown <- OutputsGR4JOnly Output_RunModel_Lag <- RunModel_Lag(InputsModel = InputsModel,