diff --git a/R/RunModel.Supervisor.R b/R/RunModel.Supervisor.R index a258a78865e288d578c2f9edc1da8f54195fe6bf..1c400bc6e5384012b3a7a45172e314d47838bd50 100644 --- a/R/RunModel.Supervisor.R +++ b/R/RunModel.Supervisor.R @@ -49,28 +49,36 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) { } # Initialization of model states by running the model with no supervision on warm-up period - RunOptionsWarmUp <- RunOptions - for (id in names(x$InputsModel)) { - RunOptionsWarmUp[[id]]$IndPeriod_Run <- RunOptionsWarmUp[[id]]$IndPeriod_WarmUp - RunOptionsWarmUp[[id]]$IndPeriod_WarmUp <- 0L - RunOptionsWarmUp[[id]]$Outputs_Sim <- c("StateEnd", "Qsim") - if (x$InputsModel[[id]]$isReservoir) { - RunOptionsWarmUp[[id]]$Outputs_Sim <- c(RunOptionsWarmUp[[id]]$Outputs_Sim, "Qsim_m3") + if (RunOptions[[1]]$IndPeriod_WarmUp != 0L) { + RunOptionsWarmUp <- RunOptions + for (id in names(x$InputsModel)) { + RunOptionsWarmUp[[id]]$IndPeriod_Run <- RunOptionsWarmUp[[id]]$IndPeriod_WarmUp + RunOptionsWarmUp[[id]]$IndPeriod_WarmUp <- 0L + RunOptionsWarmUp[[id]]$Outputs_Sim <- c("StateEnd", "Qsim") + if (x$InputsModel[[id]]$isReservoir) { + RunOptionsWarmUp[[id]]$Outputs_Sim <- c(RunOptionsWarmUp[[id]]$Outputs_Sim, "Qsim_m3") + } } + OM_WarmUp <- suppressMessages( + RunModel.GRiwrmInputsModel(x$InputsModel, + RunOptions = RunOptionsWarmUp, + Param = Param) + ) + } else { + OM_WarmUp <- NULL } - OM_WarmUp <- suppressMessages( - RunModel.GRiwrmInputsModel(x$InputsModel, - RunOptions = RunOptionsWarmUp, - Param = Param) - ) # Adapt RunOptions to step by step simulation and copy states SD_Ids <- getSD_Ids(x$InputsModel, add_diversions = TRUE) names(SD_Ids) <- SD_Ids for (id in SD_Ids) { RunOptions[[id]]$IndPeriod_WarmUp <- 0L - RunOptions[[id]]$Outputs_Sim <- c("Qsim_m3", "StateEnd") - x$OutputsModel[[id]]$StateEnd <- serializeIniStates(OM_WarmUp[[id]]$StateEnd) + RunOptions[[id]]$Outputs_Sim <- c("Qsim_m3", "StateEnd", "Param") + if (!is.null(OM_WarmUp)) { + x$OutputsModel[[id]]$StateEnd <- OM_WarmUp[[id]]$StateEnd + } else { + x$OutputsModel[[id]]$StateEnd <- RunOptions[[id]]$IniStates + } } # Set Outputs to archive for final restitution