From 65c221eadfd745baa2d13b9e7d210a8a44ae2e2c Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@irstea.fr>
Date: Fri, 22 May 2020 14:59:26 +0200
Subject: [PATCH] v1.6.1.13: Fix (CreateInputsModel): wrong warning message for
 lumped models

Refs #34
---
 DESCRIPTION           |  4 +--
 R/CreateInputsModel.R | 83 +++++++++++++++++++++----------------------
 2 files changed, 43 insertions(+), 44 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index bd31d3f2..66d5146b 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.6.1.11
-Date: 2020-04-07
+Version: 1.6.1.13
+Date: 2020-05-22
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")),
   person("Olivier", "Delaigue", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7668-8468"), email = "airGR@inrae.fr"),
diff --git a/R/CreateInputsModel.R b/R/CreateInputsModel.R
index c55c9282..ad3635eb 100644
--- a/R/CreateInputsModel.R
+++ b/R/CreateInputsModel.R
@@ -4,73 +4,73 @@ CreateInputsModel <- function(FUN_MOD,
                               PotEvap = NULL,
                               TempMean = NULL, TempMin = NULL, TempMax = NULL,
                               ZInputs = NULL, HypsoData = NULL, NLayers = 5,
-                              QobsUpstr = NULL, LengthHydro = NULL, BasinAreas = NULL, 
+                              QobsUpstr = NULL, LengthHydro = NULL, BasinAreas = NULL,
                               verbose = TRUE) {
-    
-    
+
+
     ObjectClass <- NULL
-    
+
     FUN_MOD <- match.fun(FUN_MOD)
-    
+
     ##check_FUN_MOD
     BOOL <- FALSE
     if (identical(FUN_MOD, RunModel_GR4H) | identical(FUN_MOD, RunModel_GR5H)) {
       ObjectClass <- c(ObjectClass, "hourly", "GR")
-      
+
       TimeStep <- as.integer(60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_GR4J) |
         identical(FUN_MOD, RunModel_GR5J) |
         identical(FUN_MOD, RunModel_GR6J)) {
       ObjectClass <- c(ObjectClass, "daily", "GR")
-      
+
       TimeStep <- as.integer(24 * 60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_GR2M)) {
       ObjectClass <- c(ObjectClass, "GR", "monthly")
-      
+
       TimeStep <- as.integer(c(28, 29, 30, 31) * 24 * 60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_GR1A)) {
       ObjectClass <- c(ObjectClass, "GR", "yearly")
-      
+
       TimeStep <- as.integer(c(365, 366) * 24 * 60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_CemaNeige)) {
       ObjectClass <- c(ObjectClass, "daily", "CemaNeige")
-      
+
       TimeStep <- as.integer(24 * 60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_CemaNeigeGR4J) |
         identical(FUN_MOD, RunModel_CemaNeigeGR5J) |
         identical(FUN_MOD, RunModel_CemaNeigeGR6J)) {
       ObjectClass <- c(ObjectClass, "daily", "GR", "CemaNeige")
-      
+
       TimeStep <- as.integer(24 * 60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (identical(FUN_MOD, RunModel_CemaNeigeGR4H) | identical(FUN_MOD, RunModel_CemaNeigeGR5H)) {
       ObjectClass <- c(ObjectClass, "hourly", "GR", "CemaNeige")
-      
+
       TimeStep <- as.integer(60 * 60)
-      
+
       BOOL <- TRUE
     }
     if (!BOOL) {
       stop("incorrect 'FUN_MOD' for use in 'CreateInputsModel'")
     }
-    
+
     ##check_arguments
     if ("GR" %in% ObjectClass | "CemaNeige" %in% ObjectClass) {
       if (is.null(DatesR)) {
@@ -167,7 +167,7 @@ CreateInputsModel <- function(FUN_MOD,
         HypsoData <- as.numeric(rep(NA, 101))
         ZInputs   <- as.numeric(NA)
         NLayers   <- as.integer(1)
-        
+
       }
       if (is.null(ZInputs)) {
         if (verbose & !identical(HypsoData, as.numeric(rep(NA, 101)))) {
@@ -183,12 +183,11 @@ CreateInputsModel <- function(FUN_MOD,
         NLayers <- as.integer(NLayers)
       }
     }
-    
+
     ## check semi-distributed mode
     if (!is.null(QobsUpstr) & !is.null(LengthHydro) & !is.null(BasinAreas)) {
       ObjectClass <- c(ObjectClass, "SD")
-    }
-    if (verbose & sum(is.null(QobsUpstr) | is.null(LengthHydro) | is.null(BasinAreas)) %in% 1:2) {
+    } else if (verbose & !all(c(is.null(QobsUpstr), is.null(LengthHydro), is.null(BasinAreas)))) {
       warning("Missing argument: 'QobsUpstr', 'LengthHydro' and 'BasinAreas' must all be set to run in a semi-distributed mode. The lumped mode will be used")
     }
     if ("SD" %in% ObjectClass) {
@@ -217,10 +216,10 @@ CreateInputsModel <- function(FUN_MOD,
         stop("'QobsUpstr' cannot contain any NA value")
       }
     }
-    
+
     ##check_NA_values
     BOOL_NA <- rep(FALSE, length(DatesR))
-    
+
     if ("GR" %in% ObjectClass) {
       BOOL_NA_TMP <- (Precip  < 0) | is.na(Precip)
       if (sum(BOOL_NA_TMP) != 0) {
@@ -272,9 +271,9 @@ CreateInputsModel <- function(FUN_MOD,
     if (sum(BOOL_NA) != 0) {
       WTxt <- NULL
       WTxt <- paste(WTxt, "\t Missing values are not allowed in 'InputsModel'", sep = "")
-      
+
       Select <- (max(which(BOOL_NA)) + 1):length(BOOL_NA)
-      
+
       if (Select[1L] > Select[2L]) {
         stop("time series could not be trunced since missing values were detected at the last time-step")
       }
@@ -290,18 +289,18 @@ CreateInputsModel <- function(FUN_MOD,
           TempMax <- TempMax[Select]
         }
       }
-      
+
       DatesR <- DatesR[Select]
-      
+
       WTxt <- paste0(WTxt, "\t -> data were trunced to keep the most recent available time-steps")
       WTxt <- paste0(WTxt, "\t -> ", length(Select), " time-steps were kept")
-      
+
       if (!is.null(WTxt) & verbose) {
         warning(WTxt)
       }
     }
-    
-    
+
+
     ##DataAltiExtrapolation_Valery
     if ("CemaNeige" %in% ObjectClass) {
       RESULT <- DataAltiExtrapolation_Valery(DatesR = DatesR,
@@ -317,8 +316,8 @@ CreateInputsModel <- function(FUN_MOD,
         }
       }
     }
-    
-    
+
+
     ##Create_InputsModel
     InputsModel <- list(DatesR = DatesR)
     if ("GR" %in% ObjectClass) {
@@ -331,15 +330,15 @@ CreateInputsModel <- function(FUN_MOD,
                                          ZLayers              = RESULT$ZLayers))
     }
     if ("SD" %in% ObjectClass) {
-      InputsModel <- c(InputsModel, list(QobsUpstr = QobsUpstr, 
+      InputsModel <- c(InputsModel, list(QobsUpstr = QobsUpstr,
                                          LengthHydro   = LengthHydro,
-                                         BasinAreas = BasinAreas)) 
+                                         BasinAreas = BasinAreas))
     }
-    
+
     class(InputsModel) <- c("InputsModel", ObjectClass)
-    
+
     return(InputsModel)
-    
-    
-    
+
+
+
 }
-- 
GitLab