diff --git a/DESCRIPTION b/DESCRIPTION index c22d773816f215d07f209cb1fe62df51ac943ae8..590717fadeee23942f310c02edeb6c7d21ac9f21 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.3.3 -Date: 2020-10-06 +Version: 1.6.3.4 +Date: 2020-10-14 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/NEWS.md b/NEWS.md index d112a86eb8ed7570e3d3627b6faf86bff144d26e..ee4bd1c01f48614350e883ccac9eda6d44b09c92 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,6 @@ ## Release History of the airGR Package -### 1.6.3.3 Release Notes (2020-10-06) +### 1.6.3.4 Release Notes (2020-10-14) #### New features diff --git a/R/RunModel_LAG.R b/R/RunModel_LAG.R index 20d858fd90eeb02cff1f24d5b31346f439e8e731..2a84d411ee31cd56c44951f1c1db86ad85a70b2b 100644 --- a/R/RunModel_LAG.R +++ b/R/RunModel_LAG.R @@ -1,27 +1,36 @@ -RunModel_LAG <- function(InputsModel,RunOptions,Param) { +RunModel_LAG <- function(InputsModel, RunOptions, Param) { NParam <- 1 ##Arguments_check - if(inherits(InputsModel,"InputsModel")==FALSE){ stop("'InputsModel' must be of class 'InputsModel'") } - if(inherits(InputsModel,"SD" )==FALSE){ stop("'InputsModel' must be of class 'SD'") } - if(inherits(RunOptions,"RunOptions" )==FALSE){ stop("'RunOptions' must be of class 'RunOptions'") } - if(!is.vector(Param) | !is.numeric(Param)){ stop("'Param' must be a numeric vector") } - if(sum(!is.na(Param))!=NParam){ stop(paste("'Param' must be a vector of length",NParam,"and contain no NA")) } - - if(is.null(InputsModel$OutputsModel)) { + if (!inherits(InputsModel, "InputsModel")) { + stop("'InputsModel' must be of class 'InputsModel'") + } + if (!inherits(InputsModel, "SD")) { + stop("'InputsModel' must be of class 'SD'") + } + if (!inherits(RunOptions, "RunOptions")) { + stop("'RunOptions' must be of class 'RunOptions'") + } + if (!is.vector(Param) | !is.numeric(Param)) { + stop("'Param' must be a numeric vector") + } + if (sum(!is.na(Param)) != NParam) { + stop(paste("'Param' must be a vector of length", NParam, "and contain no NA")) + } + if (is.null(InputsModel$OutputsModel)) { stop("'InputsModel' should contain an 'OutputsModel' key containing the output of the runoff of the downstream subcatchment") } - if(is.null(InputsModel$OutputsModel$Qsim)) { + if (is.null(InputsModel$OutputsModel$Qsim)) { stop("'InputsModel$OutputsModel' should contain a key 'Qsim' containing the output of the runoff of the downstream subcatchment") } - if(sum(!is.na(InputsModel$OutputsModel$Qsim)) != length(RunOptions$IndPeriod_Run)) { + if (sum(!is.na(InputsModel$OutputsModel$Qsim)) != length(RunOptions$IndPeriod_Run)) { stop("'InputsModel$OutputsModel$Qim' should have the same lenght as 'RunOptions$IndPeriod_Run' and contain no NA") } OutputsModel <- InputsModel$OutputsModel OutputsModel$QsimDown <- OutputsModel$Qsim - + if (inherits(InputsModel, "daily")) { TimeStep <- 60 * 60 * 24 } @@ -30,7 +39,7 @@ RunModel_LAG <- function(InputsModel,RunOptions,Param) { } # propagation time from upstream meshes to outlet - PT <- InputsModel$LengthHydro / Param[1] / TimeStep + PT <- InputsModel$LengthHydro / Param[1L] / TimeStep HUTRANS <- rbind(1 - (PT - floor(PT)), PT - floor(PT)) NbUpBasins <- length(InputsModel$LengthHydro) @@ -39,7 +48,7 @@ RunModel_LAG <- function(InputsModel,RunOptions,Param) { for (upstream_basin in seq_len(NbUpBasins)) { Qupstream <- InputsModel$Qupstream[RunOptions$IndPeriod_Run, upstream_basin] - if(!is.na(InputsModel$BasinAreas[upstream_basin])) { + if (!is.na(InputsModel$BasinAreas[upstream_basin])) { # Upstream flow with area needs to be converted to m3 by time step Qupstream <- Qupstream * InputsModel$BasinAreas[upstream_basin] * 1E3 } @@ -52,7 +61,7 @@ RunModel_LAG <- function(InputsModel,RunOptions,Param) { HUTRANS[2, upstream_basin] } # Warning for negative flows - if(any(OutputsModel$Qsim < 0)) { + if (any(OutputsModel$Qsim < 0)) { warning(length(which(OutputsModel$Qsim < 0)), " time steps with negative flow, set to zero.") OutputsModel$Qsim[OutputsModel$Qsim < 0] <- 0 }