From dd7ef429e5257e8f530e23c5c14f4ff570baf267 Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@inrae.fr>
Date: Mon, 21 Jun 2021 12:13:36 +0200
Subject: [PATCH] feat: add `Param` to `OutputsModel`

Refs #111
---
 R/CreateRunOptions.R       | 2 +-
 R/RunModel_CemaNeigeGR4H.R | 1 +
 R/RunModel_CemaNeigeGR4J.R | 1 +
 R/RunModel_CemaNeigeGR5H.R | 1 +
 R/RunModel_CemaNeigeGR5J.R | 1 +
 R/RunModel_CemaNeigeGR6J.R | 1 +
 R/RunModel_GR1A.R          | 3 ++-
 R/RunModel_GR2M.R          | 3 ++-
 R/RunModel_GR4H.R          | 3 ++-
 R/RunModel_GR4J.R          | 3 ++-
 R/RunModel_GR5H.R          | 3 ++-
 R/RunModel_GR5J.R          | 3 ++-
 R/RunModel_GR6J.R          | 3 ++-
 R/UtilsRunModel.R          | 6 ++++++
 14 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R
index 8821935b..b91342b5 100644
--- a/R/CreateRunOptions.R
+++ b/R/CreateRunOptions.R
@@ -295,7 +295,7 @@ CreateRunOptions <- function(FUN_MOD, InputsModel,
   ##check_Outputs_Cal_and_Sim
 
   ##Outputs_all
-  Outputs_all <- c("DatesR", unlist(FortranOutputs), "WarmUpQsim", "StateEnd")
+  Outputs_all <- c("DatesR", unlist(FortranOutputs), "WarmUpQsim", "StateEnd", "Param")
 
   ##check_Outputs_Sim
   if (!is.vector(Outputs_Sim)) {
diff --git a/R/RunModel_CemaNeigeGR4H.R b/R/RunModel_CemaNeigeGR4H.R
index 51318c1f..7bba7814 100644
--- a/R/RunModel_CemaNeigeGR4H.R
+++ b/R/RunModel_CemaNeigeGR4H.R
@@ -167,5 +167,6 @@ RunModel_CemaNeigeGR4H <- function(InputsModel, RunOptions, Param) {
                      RunOptions,
                      RESULTS,
                      LInputSeries,
+                     Param,
                      CemaNeigeLayers)
 }
diff --git a/R/RunModel_CemaNeigeGR4J.R b/R/RunModel_CemaNeigeGR4J.R
index 34f15d5e..28eceb59 100644
--- a/R/RunModel_CemaNeigeGR4J.R
+++ b/R/RunModel_CemaNeigeGR4J.R
@@ -166,5 +166,6 @@ RunModel_CemaNeigeGR4J <- function(InputsModel, RunOptions, Param) {
                      RunOptions,
                      RESULTS,
                      LInputSeries,
+                     Param,
                      CemaNeigeLayers)
 }
diff --git a/R/RunModel_CemaNeigeGR5H.R b/R/RunModel_CemaNeigeGR5H.R
index a78946b6..8cb99dc0 100644
--- a/R/RunModel_CemaNeigeGR5H.R
+++ b/R/RunModel_CemaNeigeGR5H.R
@@ -177,5 +177,6 @@ RunModel_CemaNeigeGR5H <- function(InputsModel, RunOptions, Param) {
                      RunOptions,
                      RESULTS,
                      LInputSeries,
+                     Param,
                      CemaNeigeLayers)
 }
diff --git a/R/RunModel_CemaNeigeGR5J.R b/R/RunModel_CemaNeigeGR5J.R
index cdc4faae..1b42b04f 100644
--- a/R/RunModel_CemaNeigeGR5J.R
+++ b/R/RunModel_CemaNeigeGR5J.R
@@ -164,5 +164,6 @@ RunModel_CemaNeigeGR5J <- function(InputsModel, RunOptions, Param) {
                      RunOptions,
                      RESULTS,
                      LInputSeries,
+                     Param,
                      CemaNeigeLayers)
 }
diff --git a/R/RunModel_CemaNeigeGR6J.R b/R/RunModel_CemaNeigeGR6J.R
index 6199e417..dc011ce4 100644
--- a/R/RunModel_CemaNeigeGR6J.R
+++ b/R/RunModel_CemaNeigeGR6J.R
@@ -169,6 +169,7 @@ RunModel_CemaNeigeGR6J <- function(InputsModel, RunOptions, Param) {
                      RunOptions,
                      RESULTS,
                      LInputSeries,
+                     Param,
                      CemaNeigeLayers)
 }
 
diff --git a/R/RunModel_GR1A.R b/R/RunModel_GR1A.R
index 87ff6ace..b4ddd4f5 100644
--- a/R/RunModel_GR1A.R
+++ b/R/RunModel_GR1A.R
@@ -47,5 +47,6 @@ RunModel_GR1A <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR2M.R b/R/RunModel_GR2M.R
index dd2f696d..6b89b73d 100644
--- a/R/RunModel_GR2M.R
+++ b/R/RunModel_GR2M.R
@@ -69,5 +69,6 @@ RunModel_GR2M <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR4H.R b/R/RunModel_GR4H.R
index f70f3a1d..01caa6d7 100644
--- a/R/RunModel_GR4H.R
+++ b/R/RunModel_GR4H.R
@@ -74,5 +74,6 @@ RunModel_GR4H <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR4J.R b/R/RunModel_GR4J.R
index fab8517e..88f129d3 100644
--- a/R/RunModel_GR4J.R
+++ b/R/RunModel_GR4J.R
@@ -69,5 +69,6 @@ RunModel_GR4J <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR5H.R b/R/RunModel_GR5H.R
index 1d013974..6c5fb432 100644
--- a/R/RunModel_GR5H.R
+++ b/R/RunModel_GR5H.R
@@ -88,5 +88,6 @@ RunModel_GR5H <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR5J.R b/R/RunModel_GR5J.R
index 73e17c6c..f5d2bdc3 100644
--- a/R/RunModel_GR5J.R
+++ b/R/RunModel_GR5J.R
@@ -74,5 +74,6 @@ RunModel_GR5J <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/RunModel_GR6J.R b/R/RunModel_GR6J.R
index 659a0b5c..8175af95 100644
--- a/R/RunModel_GR6J.R
+++ b/R/RunModel_GR6J.R
@@ -79,5 +79,6 @@ RunModel_GR6J <- function(InputsModel, RunOptions, Param) {
   .GetOutputsModelGR(InputsModel,
                      RunOptions,
                      RESULTS,
-                     LInputSeries)
+                     LInputSeries,
+                     Param)
 }
diff --git a/R/UtilsRunModel.R b/R/UtilsRunModel.R
index 096aff84..846f0182 100644
--- a/R/UtilsRunModel.R
+++ b/R/UtilsRunModel.R
@@ -4,6 +4,7 @@
 #' @param RunOptions output of [CreateRunOptions]
 #' @param RESULTS outputs of [.Fortran]
 #' @param LInputSeries number of time steps of warm-up + run periods
+#' @param Param [numeric] vector of model parameters
 #' @param CemaNeigeLayers outputs of Cemaneige pre-process
 #'
 #' @return OutputsModel object
@@ -13,6 +14,7 @@
                                RunOptions,
                                RESULTS,
                                LInputSeries,
+                               Param,
                                CemaNeigeLayers = NULL) {
 
   IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries
@@ -46,6 +48,10 @@
     OutputsModel$StateEnd <- RESULTS$StateEnd
   }
 
+  if ("Param" %in% RunOptions$Outputs_Sim) {
+    OutputsModel$Param <- Param
+  }
+
   class(OutputsModel) <- c("OutputsModel", class(RunOptions)[-1])
 
   return(OutputsModel)
-- 
GitLab