From 5dce7a71cd3e2af264e4472812d8c822e160d19b Mon Sep 17 00:00:00 2001
From: unknown <olivier.delaigue@ANPI1430.antony.irstea.priv>
Date: Thu, 22 Jun 2017 15:47:31 +0200
Subject: [PATCH] v1.0.9.0 bug fixed with in RunModel_CemaNeige* when
 CreateIniStates is called #4422

---
 DESCRIPTION                |  2 +-
 R/RunModel_CemaNeigeGR4J.R | 22 ++++++++++++----------
 R/RunModel_CemaNeigeGR5J.R | 14 ++++++++------
 R/RunModel_CemaNeigeGR6J.R | 14 ++++++++------
 R/RunModel_GR1A.R          |  7 ++++---
 R/RunModel_GR2M.R          | 20 ++++++++++++--------
 R/RunModel_GR4H.R          | 20 ++++++++++++--------
 R/RunModel_GR4J.R          | 19 +++++++++++--------
 R/RunModel_GR5J.R          | 20 ++++++++++++--------
 R/RunModel_GR6J.R          | 20 ++++++++++++--------
 10 files changed, 92 insertions(+), 66 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 1a0743c6..04e9dc37 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.0.8.9
+Version: 1.0.9.0
 Date: 2017-06-22
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl")),
diff --git a/R/RunModel_CemaNeigeGR4J.R b/R/RunModel_CemaNeigeGR4J.R
index 85ed537e..2001faed 100644
--- a/R/RunModel_CemaNeigeGR4J.R
+++ b/R/RunModel_CemaNeigeGR4J.R
@@ -3,8 +3,8 @@ RunModel_CemaNeigeGR4J <- function(InputsModel,RunOptions,Param){
     NParam <- 6;
     FortranOutputsCemaNeige <- c("Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt", "Temp");
     FortranOutputsMod <- c("PotEvap", "Precip", "Prod", "Pn", "Ps", "AE", "Perc", "PR", "Q9", "Q1", "Rout", "Exch",
-                        "AExch1", "AExch2", "AExch", "QR", "QD", "Qsim");
-
+                           "AExch1", "AExch2", "AExch", "QR", "QD", "Qsim");
+    
     ##Arguments_check
       if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
       if(inherits(InputsModel,"daily"      )==FALSE){ stop("InputsModel must be of class 'daily'       \n"); return(NULL); }  
@@ -45,7 +45,7 @@ RunModel_CemaNeigeGR4J <- function(InputsModel,RunOptions,Param){
       ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
       ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
 
-
+      
     ##SNOW_MODULE________________________________________________________________________________##
     if(RunOptions$RunSnowModule==TRUE){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputsCemaNeige <- as.integer(1:length(FortranOutputsCemaNeige)); 
@@ -74,8 +74,8 @@ RunModel_CemaNeigeGR4J <- function(InputsModel,RunOptions,Param){
                          )
         RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
         RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-        
 
+        
         ##Data_storage
         CemaNeigeLayers[[iLayer]] <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
         names(CemaNeigeLayers[[iLayer]]) <- FortranOutputsCemaNeige[IndOutputsCemaNeige];
@@ -121,12 +121,14 @@ RunModel_CemaNeigeGR4J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR4J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
-                                          eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR4J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
+                                            eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
+                                            verbose = FALSE)
+      }
       
       if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
 
diff --git a/R/RunModel_CemaNeigeGR5J.R b/R/RunModel_CemaNeigeGR5J.R
index b0c9206d..3f2cbdd7 100644
--- a/R/RunModel_CemaNeigeGR5J.R
+++ b/R/RunModel_CemaNeigeGR5J.R
@@ -120,12 +120,14 @@ RunModel_CemaNeigeGR5J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR5J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = NULL, UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
-                                          eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR5J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = NULL, UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
+                                            eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
+                                            verbose = FALSE)
+      }
       
       if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
 
diff --git a/R/RunModel_CemaNeigeGR6J.R b/R/RunModel_CemaNeigeGR6J.R
index b8365fce..e7c7dbbe 100644
--- a/R/RunModel_CemaNeigeGR6J.R
+++ b/R/RunModel_CemaNeigeGR6J.R
@@ -126,12 +126,14 @@ RunModel_CemaNeigeGR6J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR6J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = RESULTS$StateEnd[3L],
-                                          UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
-                                          eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeigeGR6J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = RESULTS$StateEnd[3L],
+                                            UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 1]],
+                                            eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %%2 == 0]],
+                                            verbose = FALSE)
+      }
       
       if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
 
diff --git a/R/RunModel_GR1A.R b/R/RunModel_GR1A.R
index 07be9d0b..81f69207 100644
--- a/R/RunModel_GR1A.R
+++ b/R/RunModel_GR1A.R
@@ -20,6 +20,10 @@ RunModel_GR1A <- function(InputsModel,RunOptions,Param){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
 
+    ##Output_data_preparation
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
     
     BOOL_Fortran <- FALSE; if(BOOL_Fortran){
     ##Call_fortan
@@ -56,9 +60,6 @@ RunModel_GR1A <- function(InputsModel,RunOptions,Param){
         
     
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
diff --git a/R/RunModel_GR2M.R b/R/RunModel_GR2M.R
index 74b8ab3a..f767bd21 100644
--- a/R/RunModel_GR2M.R
+++ b/R/RunModel_GR2M.R
@@ -30,6 +30,11 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
 
+    ##Output_data_preparation
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
+      
     ##Use_of_IniResLevels
       if(!is.null(RunOptions$IniResLevels)){
         RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
@@ -54,17 +59,16 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs [round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR2M, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = NULL, UH2 = NULL,
-                                          GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR2M, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = NULL, UH2 = NULL,
+                                            GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
+                                            verbose = FALSE)
+      }
       
 
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
diff --git a/R/RunModel_GR4H.R b/R/RunModel_GR4H.R
index eab3cc3a..81324211 100644
--- a/R/RunModel_GR4H.R
+++ b/R/RunModel_GR4H.R
@@ -35,6 +35,11 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
 
+    ##Output_data_preparation
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
+      
     ##Use_of_IniResLevels
       if(!is.null(RunOptions$IniResLevels)){
         RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
@@ -59,16 +64,15 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR4H, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = RESULTS$StateEnd[(1:(20*24))+7], UH2 = RESULTS$StateEnd[(1:(40*24))+(7+20*24)],
-                                          GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR4H, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = RESULTS$StateEnd[(1:(20*24))+7], UH2 = RESULTS$StateEnd[(1:(40*24))+(7+20*24)],
+                                            GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
+                                            verbose = FALSE)
+      }
 
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
diff --git a/R/RunModel_GR4J.R b/R/RunModel_GR4J.R
index 151032ad..c7701e60 100644
--- a/R/RunModel_GR4J.R
+++ b/R/RunModel_GR4J.R
@@ -35,6 +35,10 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param){
       LInputSeries <- as.integer(length(IndPeriod1))
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
+    ##Input_data_preparation      
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
 
     ##Use_of_IniResLevels
       if(!is.null(RunOptions$IniResLevels)){
@@ -60,16 +64,15 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR4J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR4J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
+                                            verbose = FALSE)
+      }
 
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
diff --git a/R/RunModel_GR5J.R b/R/RunModel_GR5J.R
index ac5b26b5..d12be255 100644
--- a/R/RunModel_GR5J.R
+++ b/R/RunModel_GR5J.R
@@ -36,6 +36,11 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
 
+    ##Output_data_preparation
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
+      
     ##Use_of_IniResLevels
       if(!is.null(RunOptions$IniResLevels)){
         RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
@@ -60,16 +65,15 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR5J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
-                                          UH1 = NULL, UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR5J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = NULL,
+                                            UH1 = NULL, UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
+                                            verbose = FALSE)
+      }
 
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
diff --git a/R/RunModel_GR6J.R b/R/RunModel_GR6J.R
index 6e936306..d65e80a4 100644
--- a/R/RunModel_GR6J.R
+++ b/R/RunModel_GR6J.R
@@ -40,6 +40,11 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param){
       if("all" %in% RunOptions$Outputs_Sim){ IndOutputs <- as.integer(1:length(FortranOutputs)); 
       } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim);  }
 
+    ##Output_data_preparation
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
+      
     ##Use_of_IniResLevels
       if(!is.null(RunOptions$IniResLevels)){
         RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
@@ -65,16 +70,15 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param){
                      )
       RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
       RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
-      RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR6J, InputsModel = InputsModel,
-                                          ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = RESULTS$StateEnd[3L],
-                                          UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
-                                          GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
-                                          verbose = FALSE)
+      if (ExportStateEnd) { 
+        RESULTS$StateEnd <- CreateIniStates(FUN_MOD = RunModel_GR6J, InputsModel = InputsModel,
+                                            ProdStore = RESULTS$StateEnd[1L], RoutStore = RESULTS$StateEnd[2L], ExpStore = RESULTS$StateEnd[3L],
+                                            UH1 = RESULTS$StateEnd[(1:20)+7], UH2 = RESULTS$StateEnd[(1:40)+(7+20)],
+                                            GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
+                                            verbose = FALSE)
+      }
 
     ##Output_data_preparation
-      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
-      ExportDatesR   <- "DatesR"   %in% RunOptions$Outputs_Sim;
-      ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim;
       ##OutputsModel_only
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
-- 
GitLab