From aad9d1db53219ba9af6f3c18decfbc28db63007b Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@inrae.fr> Date: Thu, 17 Jun 2021 11:56:29 +0200 Subject: [PATCH] feat: add WarmUpQsim item in OutputsModel - add the item in the OutputsModel object - optimisation of CreateRunOptions on Outputs_Sim and Outputs_Cal items. - add exception in SeriesAggreg.OutputsModel Refs #123 --- R/CreateRunOptions.R | 37 ++++++----------------------------- R/SeriesAggreg.OutputsModel.R | 2 +- R/UtilsRunModel.R | 18 +++++++++-------- 3 files changed, 17 insertions(+), 40 deletions(-) diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R index 39caf909..d43e99b7 100644 --- a/R/CreateRunOptions.R +++ b/R/CreateRunOptions.R @@ -295,31 +295,7 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, ##check_Outputs_Cal_and_Sim ##Outputs_all - Outputs_all <- NULL - if (identical(FUN_MOD, RunModel_GR4H) | identical(FUN_MOD, RunModel_CemaNeigeGR4H)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR4H")$GR) - } - if (identical(FUN_MOD, RunModel_GR5H) | identical(FUN_MOD, RunModel_CemaNeigeGR5H)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR5H")$GR) - } - if (identical(FUN_MOD, RunModel_GR4J) | identical(FUN_MOD, RunModel_CemaNeigeGR4J)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR4J")$GR) - } - if (identical(FUN_MOD, RunModel_GR5J) | identical(FUN_MOD, RunModel_CemaNeigeGR5J)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR5J")$GR) - } - if (identical(FUN_MOD, RunModel_GR6J) | identical(FUN_MOD, RunModel_CemaNeigeGR6J)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR6J")$GR) - } - if (identical(FUN_MOD, RunModel_GR2M)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR2M")$GR) - } - if (identical(FUN_MOD, RunModel_GR1A)) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = "GR1A")$GR) - } - if ("CemaNeige" %in% ObjectClass) { - Outputs_all <- c(Outputs_all, .FortranOutputs(GR = NULL, isCN = TRUE)$CN) - } + Outputs_all <- c("DatesR", unlist(FortranOutputs), "WarmUpQsim", "StateEnd") ##check_Outputs_Sim if (!is.vector(Outputs_Sim)) { @@ -332,9 +308,9 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, stop("'Outputs_Sim' must not contain NA") } if ("all" %in% Outputs_Sim) { - Outputs_Sim <- c("DatesR", Outputs_all, "StateEnd") + Outputs_Sim <- Outputs_all } - Test <- which(!Outputs_Sim %in% c("DatesR", Outputs_all, "StateEnd")) + Test <- which(!Outputs_Sim %in% Outputs_all) if (length(Test) != 0) { stop(paste0( "'Outputs_Sim' is incorrectly defined: ", paste(Outputs_Sim[Test], collapse = ", "), " not found")) @@ -342,7 +318,7 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, Outputs_Sim <- Outputs_Sim[!duplicated(Outputs_Sim)] - ##check_Outputs_Cal + ##check_Outputs_Cal if (is.null(Outputs_Cal)) { if ("GR" %in% ObjectClass) { Outputs_Cal <- c("Qsim") @@ -366,10 +342,9 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, } } if ("all" %in% Outputs_Cal) { - Outputs_Cal <- c("DatesR", Outputs_all, "StateEnd") - + Outputs_Cal <- Outputs_all } - Test <- which(!Outputs_Cal %in% c("DatesR", Outputs_all, "StateEnd")) + Test <- which(!Outputs_Cal %in% Outputs_all) if (length(Test) != 0) { stop(paste0("'Outputs_Cal' is incorrectly defined: ", paste(Outputs_Cal[Test], collapse = ", "), " not found")) diff --git a/R/SeriesAggreg.OutputsModel.R b/R/SeriesAggreg.OutputsModel.R index 3bf0d8ae..d065182b 100644 --- a/R/SeriesAggreg.OutputsModel.R +++ b/R/SeriesAggreg.OutputsModel.R @@ -2,6 +2,6 @@ SeriesAggreg.OutputsModel <- function(x, Format, ...) { SeriesAggreg.list(x, Format, ConvertFun = NA, - except = "StateEnd", + except = c("WarmUpQsim", "StateEnd"), ...) } diff --git a/R/UtilsRunModel.R b/R/UtilsRunModel.R index c5f861fb..b79809f6 100644 --- a/R/UtilsRunModel.R +++ b/R/UtilsRunModel.R @@ -18,15 +18,11 @@ IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries FortranOutputs <- RunOptions$FortranOutputs$GR - if ("all" %in% RunOptions$Outputs_Sim) { - IndOutputs <- as.integer(1:length(FortranOutputs)) - } else { - IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim) - } + IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim) OutputsModel <- list() - if("DatesR" %in% RunOptions$Outputs_Sim) { + if ("DatesR" %in% RunOptions$Outputs_Sim) { OutputsModel$DatesR <- InputsModel$DatesR[RunOptions$IndPeriod_Run] } @@ -36,11 +32,17 @@ OutputsModel <- c(OutputsModel, lapply(seqOutputs, function(i) RESULTS$Outputs[IndPeriod2, i])) - if(!is.null(CemaNeigeLayers)) { + if (!is.null(CemaNeigeLayers)) { OutputsModel$CemaNeigeLayers <- CemaNeigeLayers } - if("StateEnd" %in% RunOptions$Outputs_Sim) { + if ("WarmUpQsim" %in% RunOptions$Outputs_Sim) { + OutputsModel$WarmUpQsim <- RESULTS$Outputs[seq_len(length(RunOptions$IndPeriod_WarmUp)), + which(FortranOutputs == "Qsim")] + class(OutputsModel$WarmUpQsim) <- c("WarmUpOutputsModelItem", class(OutputsModel$WarmUpQsim)) + } + + if ("StateEnd" %in% RunOptions$Outputs_Sim) { OutputsModel$StateEnd <- RESULTS$StateEnd } -- GitLab