diff --git a/DESCRIPTION b/DESCRIPTION index 71dce2dea155259259e43d479cf12170e7e19a7e..842c7d74914727597602e6d1c669bc464aacd62f 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.2.8.11 +Version: 1.2.9.0 Date: 2019-03-12 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")), diff --git a/NEWS.rmd b/NEWS.rmd index 72926193a6078da72ab6fd9aef7212770ba0cc6b..1c9aa29793ce59419808f918fc7844ece935a1c6 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -13,7 +13,7 @@ output: -### 1.2.8.11 Release Notes (2019-03-12) +### 1.2.9.0 Release Notes (2019-03-12) @@ -60,6 +60,8 @@ output: - It is now possible to be redirected on the documantation about <code>plot.OutputsModel()</code> with <code>?plot</code>. +- It is now possible to use a character vector the function name (in addition to function objects) in all <code>FUN_*</code> arguments of the following functions: <code>Calibration()</code>, <code>Calibration_Michel()</code>, <code>CreateCalibOptions()</code>, <code>CreateIniStates()</code>, <code>CreateIniStates()</code>, <code>CreateInputsCrit()</code>, <code>CreateInputsModel()</code>, <code>CreateRunOptions()</code>, <code>ErrorCrit()</code>, <code>RunModel()</code> and <code>TransfoParam()</code>. + #### Minor user-visible changes diff --git a/R/Calibration.R b/R/Calibration.R index 162fd7d7b9a076c1fad7c9fd5f9dbdbd7b07f2a0..6c6f4980fc7ca631e66a3f2bdd1ab0cf93f64d01 100644 --- a/R/Calibration.R +++ b/R/Calibration.R @@ -1,9 +1,10 @@ Calibration <- function(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD, FUN_CRIT, FUN_CALIB = Calibration_Michel, FUN_TRANSFO = NULL, verbose = TRUE) { - if (! is.function(FUN_CALIB)) { - stop("'FUN_CALIB' must be a function") - } + FUN_MOD <- match.fun(FUN_MOD) + FUN_CRIT <- match.fun(FUN_CRIT) + FUN_CALIB <- match.fun(FUN_CALIB) + FUN_TRANSFO <- match.fun(FUN_TRANSFO) return(FUN_CALIB(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD, FUN_CRIT, FUN_TRANSFO, verbose = verbose)) } diff --git a/R/Calibration_Michel.R b/R/Calibration_Michel.R index 7649d7226167fc7bb2b11045049e300266c2a5c8..8448ab52a2f3b44c26af2e86fad68d6dacc00698 100644 --- a/R/Calibration_Michel.R +++ b/R/Calibration_Michel.R @@ -2,6 +2,13 @@ Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions FUN_MOD, FUN_CRIT, FUN_TRANSFO = NULL, verbose = TRUE) { + FUN_MOD <- match.fun(FUN_MOD) + FUN_CRIT <- match.fun(FUN_CRIT) + if (!is.null(FUN_TRANSFO)) { + FUN_TRANSFO <- match.fun(FUN_TRANSFO) + } + + ##_____Arguments_check_____________________________________________________________________ if (!inherits(InputsModel, "InputsModel")) { stop("InputsModel must be of class 'InputsModel'") diff --git a/R/CreateCalibOptions.R b/R/CreateCalibOptions.R index cc09f8c02c8fd9c1d6628fab87a1fc9407e40886..944d636098ff3869eac142c8b68b12f91f264a58 100644 --- a/R/CreateCalibOptions.R +++ b/R/CreateCalibOptions.R @@ -1,14 +1,16 @@ -CreateCalibOptions <- - function(FUN_MOD, - FUN_CALIB = Calibration_Michel, - FUN_TRANSFO = NULL, - FixedParam = NULL, - SearchRanges = NULL, - StartParamList = NULL, - StartParamDistrib = NULL) { - - ObjectClass <- NULL +CreateCalibOptions <- function(FUN_MOD, + FUN_CALIB = Calibration_Michel, + FUN_TRANSFO = NULL, + FixedParam = NULL, + SearchRanges = NULL, + StartParamList = NULL, + StartParamDistrib = NULL) { + + ObjectClass <- NULL + FUN_MOD <- match.fun(FUN_MOD) + FUN_CALIB <- match.fun(FUN_CALIB) + FUN_TRANSFO <- match.fun(FUN_TRANSFO) ##check_FUN_MOD BOOL <- FALSE diff --git a/R/CreateIniStates.R b/R/CreateIniStates.R index 92e57660992f62d83bddaeb6f6d0c2f9333ee080..234802e7d242c5c7c8df63d569ac458eecb84a29 100644 --- a/R/CreateIniStates.R +++ b/R/CreateIniStates.R @@ -11,6 +11,7 @@ CreateIniStates <- function(FUN_MOD, InputsModel, UH1n <- 20L UH2n <- UH1n * 2L + FUN_MOD <- match.fun(FUN_MOD) ## check FUN_MOD BOOL <- FALSE diff --git a/R/CreateInputsCrit.R b/R/CreateInputsCrit.R index 3d98d517bcb50a8d648537bc0639adde2d2cb08e..ea37616f96ee63c3f4d731679f91995a929dc9bc 100644 --- a/R/CreateInputsCrit.R +++ b/R/CreateInputsCrit.R @@ -15,6 +15,8 @@ CreateInputsCrit <- function(FUN_CRIT, ObjectClass <- NULL + FUN_CRIT <- match.fun(FUN_CRIT) + ## ---------- check arguments if (!missing(Qobs)) { diff --git a/R/CreateInputsModel.R b/R/CreateInputsModel.R index 6597dae497d04a79a0abc0e65d408923040c2c8b..b99a10ecd0b3b8cdf17606162e1227cc75c1ef6a 100644 --- a/R/CreateInputsModel.R +++ b/R/CreateInputsModel.R @@ -9,6 +9,8 @@ CreateInputsModel <- function(FUN_MOD, ObjectClass <- NULL + FUN_MOD <- match.fun(FUN_MOD) + ##check_FUN_MOD BOOL <- FALSE if (identical(FUN_MOD, RunModel_GR4H)) { diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R index 753ed319b323083f06701442ecc2f3597658d94b..5cc017f3cb31143fdd177faf4c9099d8ee1217ad 100644 --- a/R/CreateRunOptions.R +++ b/R/CreateRunOptions.R @@ -10,6 +10,8 @@ CreateRunOptions <- function(FUN_MOD, InputsModel, IndPeriod_WarmUp = NULL, IndP ObjectClass <- NULL + FUN_MOD <- match.fun(FUN_MOD) + ##check_FUN_MOD BOOL <- FALSE; if (identical(FUN_MOD, RunModel_GR4H)) { diff --git a/R/ErrorCrit.R b/R/ErrorCrit.R index a84230a62f8000bde61edb39bbf95ba66d93b0a5..a0f5b8cbb7a5b04269615a1d9b4d9cece5c4f0f8 100644 --- a/R/ErrorCrit.R +++ b/R/ErrorCrit.R @@ -1,5 +1,7 @@ ErrorCrit <- function(InputsCrit, OutputsModel, FUN_CRIT, warnings = TRUE, verbose = TRUE) { + FUN_CRIT <- match.fun(FUN_CRIT) + ## ---------- Arguments check if (!inherits(InputsCrit, "InputsCrit")) { diff --git a/R/RunModel.R b/R/RunModel.R index a561c1b4c27320b6524bfd40ea13a57a84b86876..80d6b370bb029c4e66ad78cea419422ad5bcb364 100644 --- a/R/RunModel.R +++ b/R/RunModel.R @@ -1,3 +1,4 @@ RunModel <- function(InputsModel, RunOptions, Param, FUN_MOD) { + FUN_MOD <- match.fun(FUN_MOD) return(FUN_MOD(InputsModel, RunOptions, Param)) } diff --git a/R/TransfoParam.R b/R/TransfoParam.R index fcc5368f4a9c4a0b2794710286506751915ac921..dcda7b088a732c5a867cb13e09d0f7d2784861ed 100644 --- a/R/TransfoParam.R +++ b/R/TransfoParam.R @@ -1,3 +1,4 @@ TransfoParam <- function(ParamIn, Direction, FUN_TRANSFO) { + FUN_TRANSFO <- match.fun(FUN_TRANSFO) return(FUN_TRANSFO(ParamIn, Direction)) }