diff --git a/.Rbuildignore b/.Rbuildignore
index 70124b1ed69c62ee52e346590db8b2b1d879ebca..8eedfd1b2e21a3a409e11bc20ba89c5922f96ea5 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -5,6 +5,7 @@
 ^tests/tmp/
 ^\.gitlab-ci.yml$
 ^\.regressionignore$
+^\.vignettechunkignore$
 ^\.gitlab-ci\.yml$
 ^\.vscode$
 ^Rplots\.pdf$
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index a70947c1b8f29d7bf2d47538d8df9e32673ea979..862db2e8601d1574ca0995297a017dc7cd03e192 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,3 +1,14 @@
 {
-	"image": "rocker/verse:devel"
+	"image": "rocker/geospatial:devel",
+	"customizations": {
+		"vscode": {
+			"extensions": [
+				"eamodio.gitlens",
+				"REditorSupport.r"
+			]
+		}
+	},
+	// Use 'postCreateCommand' to run commands after the container is created.
+	"postCreateCommand": "R -q -e 'install.packages(\"languageserver\");remotes::install_deps(dep = TRUE)'",
+	"postStartCommand": "R -q -e 'devtools::install()'"
 }
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 92f30fc3e462ecd8e6096e6d2281db9e451320c7..1b30772284124b53b7187d57f5458a05088e5d71 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -70,7 +70,7 @@ before_script:
 .test_all:
   stage: check
   script:
-  - R -q -e 'devtools::test(stop_on_failure = TRUE)'
+  - R -q -e 'testthat::test_local()'
 
 benchmark_devel:
   extends: .R-devel
diff --git a/.regressionignore b/.regressionignore
index 8799da12fbfe14848f13213d6a4ce07290c5d525..42a6be419669c2ca8234ed673edcbdebc9128847 100644
--- a/.regressionignore
+++ b/.regressionignore
@@ -3,3 +3,16 @@
 # The format of this file is: 5 lines of comments followed by one line by
 # ignored variable : [Topic]<SPACE>[Variable] or *<SPACE>[Variable] for every variable whatever the topic
 # Example for ignoring OutputsModel variable produced by example("RunModel_GR2M"): RunModel_GR2M OutputsModel
+* InputsCritCompo
+* InputsCritMulti
+* InputsCritSingle
+* InputsCrit
+* InputsCrit_Val
+RunModel_CemaNeige OutputsModel
+RunModel_CemaNeigeGR4J OutputsCrit
+RunModel_CemaNeigeGR4J OutputsModel
+RunModel_CemaNeigeGR5J InputsCrit
+RunModel_CemaNeigeGR5J OutputsCrit
+RunModel_CemaNeigeGR5J OutputsModel
+RunModel_CemaNeigeGR6J OutputsCrit
+RunModel_CemaNeigeGR6J OutputsModel
diff --git a/.vignettechunkignore b/.vignettechunkignore
new file mode 100644
index 0000000000000000000000000000000000000000..fc31c8f750cc9f4cfa1f37584f0fec48adbdaa09
--- /dev/null
+++ b/.vignettechunkignore
@@ -0,0 +1,7 @@
+# This file is used by the script tests/testthat/test-vignettes which test all
+# chunks including those with `eval=FALSE`
+# It serves to ignore chunks that should not be tested anyway
+# Format: `vignette file name`[space]`id of the chunk`
+V02.1_param_optim.Rmd hydroPSO1
+V02.1_param_optim.Rmd hydroPSO2
+V02.1_param_optim.Rmd resGLOB
diff --git a/DESCRIPTION b/DESCRIPTION
index 05d6645d4e1c3713c59831e0919ff5c88b339b43..04aa5d655cecd7cd6aa34a4c6e2ae00f7b574896 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.7.4.9000
-Date: 2023-10-19
+Version: 1.7.6
+Date: 2023-10-25
 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/NAMESPACE b/NAMESPACE
index c63da5247d87d1bb4c397d034ff35faf24281f0e..3772e44cc890008cabdaec18f99e3361239e311f 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -66,8 +66,8 @@ export(TransfoParam_GR4J)
 export(TransfoParam_GR5J)
 export(TransfoParam_GR6J)
 export(TransfoParam_Lag)
-export(.ErrorCrit)
-export(.FeatModels)
+#export(.ErrorCrit)
+#export(.FeatModels)
 
 
 #####################################
diff --git a/NEWS.md b/NEWS.md
index 95f74a75af1c65490c2b18c0d1fba43c137d3e86..c61edcbe5930ec89800de7c324c93ac018c10873 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2,7 +2,35 @@
 
 
 
-### 1.7.0.9000 Release Notes (2022-02-22)
+### 1.7.6 Release Notes (2023-10-25)
+
+#### Bug fixes
+
+- `CreateCalibOptions()` now uses parameter screening for `RunModel_Lag()` which are now expressed in the transformed space instead of the parameter space. ([#156](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/156))
+- `RunModel_CemaNeige*()` now takes into account the case when `dG = 0`. ([#178](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/178))
+
+
+#### Minor user-visible changes
+
+- `Calibration_Michel()` now runs faster as the `ProposeCandidatesGrid()` was improved to create the propose candidates grid. ([#157](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/157)) 
+- `TransfoParamGR5J()` now returns the correct  error message when the number of parameters is incorrect. ([#168](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/168)) 
+
+
+#### CRAN-compatibility updates
+
+- `frun_*` Fortran subroutine does not use anymore the 'DLLEXPORT' command. ([#180](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/180))
+- The 'Rmalschains' package is back on CRAN and it is again suggested (cf. the 'param_optim' vignette). ([#175](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/175))
+- The 'hydroPSO' package is no longer suggested (but the code linked to its use and is always present in the 'param_optim' vignette). ([#182](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/182))
+
+____________________________________________________________________________________
+
+
+### 1.7.4 Release Notes (2023-04-11)
+
+#### CRAN-compatibility updates
+
+- The 'Rmalschains' package is no longer suggested (but the code linked to its use and is always present in the 'param_optim' vignette). ([#172](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/172))
+- `.ErrorCrit()` and `.FeatModels` function are no more exported. ([#173](https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/issues/173))
 
 ____________________________________________________________________________________
 
diff --git a/inst/CITATION b/inst/CITATION
index 866b138224ca79d722cd2cacb4f8e72324f600ed..6df68c0be0b39b726bf17ef5a4cda0283d440de8 100644
--- a/inst/CITATION
+++ b/inst/CITATION
@@ -7,7 +7,7 @@ citHeader("To cite airGR in publications use these two references:")
 
 bibentry(bibtype     ="Article",
          title       = "The Suite of Lumped {GR} Hydrological Models in an {R} package",
-         author      = personList(as.person("L. Coron"), as.person("G. Thirel"), as.person("O. Delaigue"), as.person("C. Perrin"), as.person("V. Andréassian")),
+         author      = c(as.person("L. Coron"), as.person("G. Thirel"), as.person("O. Delaigue"), as.person("C. Perrin"), as.person("V. Andréassian")),
          journal     = "Environmental Modelling and Software",
          year        = "2017",
          pages       = {"166-171"},
@@ -25,7 +25,7 @@ bibentry(bibtype     ="Article",
 
 bibentry(bibtype     = "Manual",
          title       = "{airGR}: Suite of {GR} Hydrological Models for Precipitation-Runoff Modelling",
-         author      = personList(as.person("L. Coron"), as.person("O. Delaigue"), as.person("G. Thirel"), as.person("D. Dorchies"), as.person("C. Perrin"), as.person("C. Michel")),
+         author      = c(as.person("L. Coron"), as.person("O. Delaigue"), as.person("G. Thirel"), as.person("D. Dorchies"), as.person("C. Perrin"), as.person("C. Michel")),
          journal     = "R News",
          year        = year,
          note        = note,
diff --git a/inst/WORDLIST b/inst/WORDLIST
new file mode 100644
index 0000000000000000000000000000000000000000..97b12bde475d245652592484fb8f7f1431c8b56e
--- /dev/null
+++ b/inst/WORDLIST
@@ -0,0 +1,337 @@
+AE
+AExch
+AgroParisTech
+Alpes
+Altitudinal
+Anctil
+Baillon
+Banque
+BasinInfo
+BasinObs
+Berthet
+BoolCrit
+CRIT
+CalibOptions
+CemaNeige
+CemaNeigeGR
+CemaNeigeLayers
+Cemagref
+Cemaneige
+Clapière
+Coprs
+CreateRunOptions
+CritBestValue
+CritCompo
+CritFinal
+CritName
+CritValue
+Customisation
+DEoptim
+DOI
+DatesR
+Développement
+EI
+ENGREF
+Ei
+Embrun
+Eq
+ErrorCrit
+Exch
+ExpStore
+FME
+Ficchi
+Ficchì
+FixedParam
+Fortin
+Franchistéguy
+GAPX
+GRP
+Gelman
+Glocalmax
+GlocmaxCemaNeigeLayers
+Gratio
+Gthr
+GthrCemaNeigeLayers
+Gthreshold
+HYCAR
+Hautes
+Hervieu
+HistCrit
+HistParamR
+Hydrol
+Hydrological
+Hydrologie
+Hydromechanics
+HypsoData
+INRAE
+Imax
+IndPeriod
+IniResLevels
+IniStates
+Initialisation
+InputsCrit
+InputsModel
+Interc
+Irstea
+KGE
+Kling
+LH
+Lavenne
+LayerFracSolidPrecip
+LayerPrecip
+LayerTempMax
+LayerTempMean
+LayerTempMin
+Lerat
+Lobligeois
+Loumagne
+MODIS
+Manabe
+MatBoolCrit
+MeanAnSolidPrecip
+Mieux
+Modelling
+Modélisation
+Moine
+MultiCrit
+MultiCritNames
+MultiCritValues
+MultiCritWeights
+Multiobjective
+MyScriptBlocks
+Météo
+NGSA
+NIter
+NParam
+NRuns
+NSE
+NSIDC
+Nota
+ORCID
+Otamin
+Oudin's
+OutputsModel
+POSIXct
+POSIXlt
+POSIXt
+Param
+ParamFinalR
+ParamOut
+Paulin
+Perc
+Pliq
+PliqAndMelt
+Pn
+PotEvap
+PotMelt
+Precip
+Ps
+Psol
+QD
+QRExp
+Qd
+Qls
+Qmm
+Qobs
+QrExp
+Qsim
+Quels
+Rdata
+Regularisation
+Riboust
+Ribstein
+Rmalschains
+RunModel
+RunOptions
+SAFRAN
+SCA
+SLS
+SWE
+Safran
+SearchRanges
+Semidistributed
+SnowPack
+Soubeyroux
+StartParamDistrib
+StartParamList
+StateEnd
+SubCritNames
+SubCritValues
+Sutcliffe
+Syst
+ThermalState
+Thibault
+TransfoParam
+Turcotte
+UPMC
+USACE
+VarObs
+Vers
+Villeneuve
+WarmUp
+WarmUpQsim
+Yilmaz
+ZLayers
+addeed
+additionnal
+aggreg
+airGRdatassim
+airGRteaching
+al
+améliore
+annuel
+anthropogenic
+appliquée
+atomics
+authorised
+bassin
+bassins
+behaviour
+caRamel
+calcullation
+cemaneige
+centred
+chaîne
+cohérente
+comparaison
+conceptuels
+connaitre
+crues
+customise
+d'amélioration
+d'un
+de
+degC
+des
+disaggregated
+disaggregation
+doi
+du
+débit
+eTG
+eaufrance
+empirique
+et
+evapotranspiration
+fract
+français
+fulfil
+funcions
+genericity
+ggmcmc
+globaux
+grDevices
+gradP
+gradT
+gridded
+hess
+horaire
+http
+https
+hydroPSO
+hydrograph
+hydrographs
+hydrological
+hydrometeorological
+hypsometric
+hystereses
+hysteretic
+iLayer
+il
+illustred
+initialisation
+initialise
+initialised
+interannual
+intercatchment
+intercetion
+irrealistically
+jhydrol
+johh
+journalier
+labelling
+le
+linux
+macOS
+maximise
+maximised
+mcmc
+mco
+memetic
+mensuel
+metres
+mimina
+minimise
+minimised
+mis
+mistyped
+modelling
+modèles
+modélisation
+multiobjective
+neige
+neutralisation
+nivale
+nn
+notcomputed
+nsidc
+optim
+optimisation
+optimised
+optimises
+organised
+param
+parametrised
+pareto
+perf
+petits
+pluie
+pluies
+pluriannuel
+pluviometry
+pre
+precip
+predefining
+priori
+précipitations
+recomanded
+recommanded
+regularisation
+repectively
+representativeness
+rescale
+rescaled
+rescaling
+ruraux
+réalisme
+sd
+serie
+skilful
+snowmelt
+snowpack
+souterrain
+spatiale
+streamflow
+subcatchment
+subcatchments
+sur
+swnow
+th
+traceplot
+transfo
+un
+unajusted
+uncalibrated
+underperforming
+une
+unitless
+verifications
+versant
+versants
+visualisation
+visualised
+voie
+vu
+www
+échantillon
+évaluation
diff --git a/man/CreateCalibOptions.Rd b/man/CreateCalibOptions.Rd
index 22e16bba08e7c1053f09a19bd4efeb52186f8570..74637344b621174be7496fb7cd13237a6d514299 100644
--- a/man/CreateCalibOptions.Rd
+++ b/man/CreateCalibOptions.Rd
@@ -15,7 +15,8 @@ Creation of the \emph{CalibOptions} object required by the \code{Calibration*} f
 
 \usage{
 CreateCalibOptions(FUN_MOD, FUN_CALIB = Calibration_Michel,
-                   FUN_TRANSFO = NULL, IsHyst = FALSE, IsSD = FALSE, FixedParam = NULL,
+                   FUN_TRANSFO = NULL, IsHyst = FALSE, IsSD = FALSE,
+                   FixedParam = NULL,
                    SearchRanges = NULL, StartParamList = NULL,
                    StartParamDistrib = NULL)
 }
diff --git a/man/CreateErrorCrit_GAPX.Rd b/man/CreateErrorCrit_GAPX.Rd
index 487e42f540c040e75f02991b2df525c0f336d698..ab8ed228288d9d308e815d681f80535eb6950112 100644
--- a/man/CreateErrorCrit_GAPX.Rd
+++ b/man/CreateErrorCrit_GAPX.Rd
@@ -31,7 +31,7 @@ CreateErrorCrit_GAPX(FUN_TRANSFO)
 
 \details{
 In addition to the criterion value, the function outputs include a multiplier (-1 or +1) that allows
-the use of the function for model calibration: the product \code{CritValue * Multiplier} is the criterion to be minimised
+the use of the function for model calibration: the product \eqn{CritValue \times Multiplier} is the criterion to be minimised
 (\code{Multiplier = -1} for NSE).
 }
 
diff --git a/man/CreateIniStates.Rd b/man/CreateIniStates.Rd
index 3d29915148ba9cfc88e72dbb61e799f4d0e84327..02f23c5e94de751cb8b03766626d943009fb6642 100644
--- a/man/CreateIniStates.Rd
+++ b/man/CreateIniStates.Rd
@@ -14,8 +14,10 @@ Creation of the \emph{IniStates} object possibly required by the \code{\link{Cre
 
 
 \usage{
-CreateIniStates(FUN_MOD, InputsModel, IsHyst = FALSE, IsIntStore = FALSE,
-                ProdStore = 350, RoutStore = 90, ExpStore = NULL, IntStore = NULL,
+CreateIniStates(FUN_MOD, InputsModel,
+                IsHyst = FALSE, IsIntStore = FALSE,
+                ProdStore = 350, RoutStore = 90,
+                ExpStore = NULL, IntStore = NULL,
                 UH1 = NULL, UH2 = NULL,
                 GCemaNeigeLayers = NULL, eTGCemaNeigeLayers = NULL,
                 GthrCemaNeigeLayers = NULL, GlocmaxCemaNeigeLayers = NULL,
diff --git a/man/CreateInputsCrit.Rd b/man/CreateInputsCrit.Rd
index 8debd8f93f11e75c27e5234d256d1008da987307..518ffffe0284a113e3a12c8c1f39bd370c60b826 100644
--- a/man/CreateInputsCrit.Rd
+++ b/man/CreateInputsCrit.Rd
@@ -135,7 +135,8 @@ invisible(ErrorCrit(InputsCrit = InputsCritSingle, OutputsModel = OutputsModel))
 ## 2 efficiency criteria: RMSE and Nash-Sutcliffe Efficiency
 InputsCritMulti <- CreateInputsCrit(FUN_CRIT = list(ErrorCrit_RMSE, ErrorCrit_NSE),
                                     InputsModel = InputsModel, RunOptions = RunOptions,
-                                    Obs = list(BasinObs$Qmm[Ind_Run], BasinObs$Qmm[Ind_Run]),
+                                    Obs = list(BasinObs$Qmm[Ind_Run],
+                                               BasinObs$Qmm[Ind_Run]),
                                     VarObs = list("Q", "Q"), transfo = list("", "sqrt"),
                                     Weights = NULL)
 str(InputsCritMulti)
@@ -145,7 +146,8 @@ invisible(ErrorCrit(InputsCrit = InputsCritMulti, OutputsModel = OutputsModel))
 ##                                 both raw and log-transformed flows
 InputsCritCompo <- CreateInputsCrit(FUN_CRIT = list(ErrorCrit_NSE, ErrorCrit_NSE),
                                     InputsModel = InputsModel, RunOptions = RunOptions,
-                                    Obs = list(BasinObs$Qmm[Ind_Run], BasinObs$Qmm[Ind_Run]),
+                                    Obs = list(BasinObs$Qmm[Ind_Run],
+                                               BasinObs$Qmm[Ind_Run]),
                                     VarObs = list("Q", "Q"), transfo = list("", "log"),
                                     Weights = list(0.4, 0.6))
 str(InputsCritCompo)
diff --git a/man/ErrorCrit.Rd b/man/ErrorCrit.Rd
index f183997c7672c0e30692639d9a51903d03d58ef6..ca57b498ec901d8d2a4e720e642688e61ef20839 100644
--- a/man/ErrorCrit.Rd
+++ b/man/ErrorCrit.Rd
@@ -89,7 +89,8 @@ str(ErrorCrit(InputsCrit = InputsCritSingle, OutputsModel = OutputsModel))
 ## 2 efficiency critera:  RMSE and the Nash-Sutcliffe Efficiency
 InputsCritMulti <- CreateInputsCrit(FUN_CRIT = list(ErrorCrit_RMSE, ErrorCrit_NSE),
                                     InputsModel = InputsModel, RunOptions = RunOptions,
-                                    Obs = list(BasinObs$Qmm[Ind_Run], BasinObs$Qmm[Ind_Run]),
+                                    Obs = list(BasinObs$Qmm[Ind_Run],
+                                               BasinObs$Qmm[Ind_Run]),
                                     VarObs = list("Q", "Q"), transfo = list("", "sqrt"),
                                     Weights = NULL)
 str(ErrorCrit(InputsCrit = InputsCritMulti, OutputsModel = OutputsModel))
@@ -98,7 +99,8 @@ str(ErrorCrit(InputsCrit = InputsCritMulti, OutputsModel = OutputsModel))
 ##                                 both raw and log-transformed flows
 InputsCritCompo <- CreateInputsCrit(FUN_CRIT = list(ErrorCrit_NSE, ErrorCrit_NSE),
                                     InputsModel = InputsModel, RunOptions = RunOptions,
-                                    Obs = list(BasinObs$Qmm[Ind_Run], BasinObs$Qmm[Ind_Run]),
+                                    Obs = list(BasinObs$Qmm[Ind_Run],
+                                               BasinObs$Qmm[Ind_Run]),
                                     VarObs = list("Q", "Q"), transfo = list("", "log"),
                                     Weights = list(0.4, 0.6))
 str(ErrorCrit(InputsCrit = InputsCritCompo, OutputsModel = OutputsModel))
diff --git a/man/ErrorCrit_KGE.Rd b/man/ErrorCrit_KGE.Rd
index 2c17cb549d016d197647d9f6a15a95a429f179b0..ddbf6afb5765de6032ba2ba7ef1f8fbb658f0497 100644
--- a/man/ErrorCrit_KGE.Rd
+++ b/man/ErrorCrit_KGE.Rd
@@ -45,7 +45,7 @@ ErrorCrit_KGE(InputsCrit, OutputsModel, warnings = TRUE, verbose = TRUE)
 
 \details{
 In addition to the criterion value, the function outputs include a multiplier (-1 or +1) which allows
-the use of the function for model calibration: the product CritValue * Multiplier is the criterion to be minimised (Multiplier = -1 for KGE).\cr\cr
+the use of the function for model calibration: the product \eqn{CritValue \times Multiplier} is the criterion to be minimised (Multiplier = -1 for KGE).\cr\cr
 The KGE formula is
 \deqn{KGE = 1 - \sqrt{(r - 1)^2 + (\alpha - 1)^2 + (\beta - 1)^2}}{KGE = 1 - sqrt((r - 1)² + (\alpha - 1)² + (\beta - 1)²)}
 with the following sub-criteria:
diff --git a/man/ErrorCrit_KGE2.Rd b/man/ErrorCrit_KGE2.Rd
index 98e609b7108543f8c4206ce6d5c80834305383fc..d4ae8c033536d4875bfe9d3e0a32f694cc923702 100644
--- a/man/ErrorCrit_KGE2.Rd
+++ b/man/ErrorCrit_KGE2.Rd
@@ -45,7 +45,7 @@ ErrorCrit_KGE2(InputsCrit, OutputsModel, warnings = TRUE, verbose = TRUE)
 
 \details{
 In addition to the criterion value, the function outputs include a multiplier (-1 or +1) which allows
-the use of the function for model calibration: the product CritValue * Multiplier is the criterion to be minimised (Multiplier = -1 for KGE2).\cr\cr
+the use of the function for model calibration: the product \eqn{CritValue \times Multiplier} is the criterion to be minimised (Multiplier = -1 for KGE2).\cr\cr
 The KGE' formula is
 \deqn{KGE' = 1 - \sqrt{(r - 1)^2 + (\gamma - 1)^2 + (\beta - 1)^2}}{KGE' = 1 - sqrt((r - 1)² + (\gamma - 1)² + (\beta - 1)²)}
 with the following sub-criteria:
diff --git a/man/ErrorCrit_NSE.Rd b/man/ErrorCrit_NSE.Rd
index 47f838e24a5122981c0b927b91a7fc7cfed8ecb4..879ec7219145550ba74c62bd975b8f39b77a60f3 100644
--- a/man/ErrorCrit_NSE.Rd
+++ b/man/ErrorCrit_NSE.Rd
@@ -43,7 +43,7 @@ Function which computes an error criterion based on the NSE formula proposed by
 
 \details{
 In addition to the criterion value, the function outputs include a multiplier (-1 or +1) which allows
-the use of the function for model calibration: the product CritValue * Multiplier is the criterion to be minimised
+the use of the function for model calibration: the product \eqn{CritValue \times Multiplier} is the criterion to be minimised
 (Multiplier = -1 for NSE).
 }
 
diff --git a/man/ErrorCrit_RMSE.Rd b/man/ErrorCrit_RMSE.Rd
index 89bc0223ff035a6b287f0b060c5dd4e3b3b9d331..82fac665987b74af4fa231fc756209401caccd14 100644
--- a/man/ErrorCrit_RMSE.Rd
+++ b/man/ErrorCrit_RMSE.Rd
@@ -43,7 +43,7 @@ Function which computes an error criterion based on the root-mean-square error (
 
 \details{
 In addition to the criterion value, the function outputs include a multiplier (-1 or +1) which allows 
-the use of the function for model calibration: the product CritValue * Multiplier is the criterion to be minimised 
+the use of the function for model calibration: the product \eqn{CritValue \times Multiplier} is the criterion to be minimised 
 (Multiplier = +1 for RMSE).
 }
 
diff --git a/man/Imax.Rd b/man/Imax.Rd
index 94db32fc8a5f85ee7e0d594f76d5ca220f72a06e..adbc03f00fcf8c946989d9222f562c1aa77844a1 100644
--- a/man/Imax.Rd
+++ b/man/Imax.Rd
@@ -44,8 +44,8 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR5H, DatesR = BasinObs$Date
                                  Precip = BasinObs$P, PotEvap = BasinObs$E)
 
 ## run period selection
-Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2006-01-01 00:00"),
-               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2006-12-31 23:00"))
+Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2006-01-01 00"),
+               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2006-12-31 23"))
 
 ## Imax computation
 Imax <- Imax(InputsModel = InputsModel, IndPeriod_Run = Ind_Run,
diff --git a/man/Param_Sets_GR4J.Rd b/man/Param_Sets_GR4J.Rd
index 5798b2952e164a8e9ea759dca97d6c8bca928d24..8a5abf37809c65c9fefe4144452b8c3b451bf9df 100644
--- a/man/Param_Sets_GR4J.Rd
+++ b/man/Param_Sets_GR4J.Rd
@@ -11,18 +11,19 @@
 
 \description{
 These parameter sets can be used as an alternative for the grid-screening calibration procedure (i.e. first step in \code{\link{Calibration_Michel}}).
-Please note that the given GR4J X4u variable does not correspond to the actual GR4J X4 parameter. As explained in Andréassian et al. (2014; section 2.1), the given GR4J X4u value has to be adjusted (rescaled) using catchment area (S) [km2] as follows: {X4 = X4u / 5.995 * S^0.3} (please note that the formula is erroneous in the publication). Please, see the example below. \cr
+Please note that the given GR4J X4u variable does not correspond to the actual GR4J X4 parameter. As explained in Andréassian et al. (2014; section 2.1), the given GR4J X4u value has to be adjusted (rescaled) using catchment area (S) [km2] as follows: \eqn{X4 = X4u / 5.995 \times S^{0.3}} (please note that the formula is erroneous in the publication). Please, see the example below. \cr
 As shown in Andréassian et al. (2014; figure 4), only using these parameters sets as the tested values for calibration is more efficient than a classical calibration when the amount of data is low (6 months or less).
 }
 
 
-\format{Data frame of parameters containing four numeric vectors
-\itemize{
-  \item {GR4J X1}  {production store capacity [mm]}
-  \item {GR4J X2}  {intercatchment exchange coefficient [mm/d]}
-  \item {GR4J X3}  {routing store capacity [mm]}
-  \item {GR4J X4u} {unajusted unit hydrograph time constant [d]}
-}}
+\format{Data frame of parameters containing four numeric vectors:
+  \tabular{ll}{
+    GR4J X1  \tab production store capacity [mm]             \cr
+    GR4J X2  \tab intercatchment exchange coefficient [mm/d] \cr
+    GR4J X3  \tab routing store capacity [mm]                \cr
+    GR4J X4u \tab unajusted unit hydrograph time constant [d]\cr
+  }
+}
 
 
 \seealso{
@@ -64,7 +65,7 @@ Ind_Cal <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d")=="1990-01-0
 
 ## preparation of the RunOptions object for the calibration period
 RunOptions_Cal <- CreateRunOptions(FUN_MOD = RunModel_GR4J,
-                               InputsModel = InputsModel, IndPeriod_Run = Ind_Cal)
+                                   InputsModel = InputsModel, IndPeriod_Run = Ind_Cal)
 
 ## simulation and efficiency criterion (Nash-Sutcliffe Efficiency)
 ## with all generalist parameter sets on the calibration period
diff --git a/man/RunModel_CemaNeigeGR4H.Rd b/man/RunModel_CemaNeigeGR4H.Rd
index 5a82a268e07b8e4b7fee2d06d29bd1084afc6e2b..c71b34e84cb3ec55b88f14866b63cfe69be3e781 100644
--- a/man/RunModel_CemaNeigeGR4H.Rd
+++ b/man/RunModel_CemaNeigeGR4H.Rd
@@ -106,8 +106,8 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_CemaNeigeGR4H, DatesR = Basi
                                  HypsoData = BasinInfo$HypsoData, NLayers = 5)
 
 ## run period selection
-Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2004-03-01 00:00"),
-               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2008-12-31 23:00"))
+Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2004-03-01 00"),
+               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2008-12-31 23"))
 
 
 ## --- original version of CemaNeige
diff --git a/man/RunModel_CemaNeigeGR5H.Rd b/man/RunModel_CemaNeigeGR5H.Rd
index 806336623e4858a8984b860e2fb73895a93df42d..bf89925e89bea9c018b1a2ae8495e2c53c57eeb0 100644
--- a/man/RunModel_CemaNeigeGR5H.Rd
+++ b/man/RunModel_CemaNeigeGR5H.Rd
@@ -108,8 +108,8 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_CemaNeigeGR5H, DatesR = Basi
                                  HypsoData = BasinInfo$HypsoData, NLayers = 5)
 
 ## run period selection
-Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2004-03-01 00:00"),
-               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2008-12-31 23:00"))
+Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2004-03-01 00"),
+               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2008-12-31 23"))
 
 
 ## --- original version of CemaNeige
diff --git a/man/RunModel_GR4H.Rd b/man/RunModel_GR4H.Rd
index e6441f3d8865b0531b871469e0c8325e15fbe921..9ea7d1fae367d79c1b3ad830ca44024eadfab298 100644
--- a/man/RunModel_GR4H.Rd
+++ b/man/RunModel_GR4H.Rd
@@ -83,8 +83,8 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR4H, DatesR = BasinObs$Date
                                  Precip = BasinObs$P, PotEvap = BasinObs$E)
 
 ## run period selection
-Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2005-01-01 00:00"),
-               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2008-12-31 23:00"))
+Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2005-01-01 00"),
+               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2008-12-31 23"))
 
 ## preparation of the RunOptions object
 RunOptions <- CreateRunOptions(FUN_MOD = RunModel_GR4H,
diff --git a/man/RunModel_GR5H.Rd b/man/RunModel_GR5H.Rd
index f1f782e8c7eedbb5fea3922e6d2863080fdf6e8e..f887f4a0ae099fa6418c17db641bd0d15d3557b4 100644
--- a/man/RunModel_GR5H.Rd
+++ b/man/RunModel_GR5H.Rd
@@ -93,8 +93,8 @@ InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR5H, DatesR = BasinObs$Date
                                  Precip = BasinObs$P, PotEvap = BasinObs$E)
 
 ## run period selection
-Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2006-01-01 00:00"),
-               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H:\%M")=="2006-12-31 23:00"))
+Ind_Run <- seq(which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2006-01-01 00"),
+               which(format(BasinObs$DatesR, format = "\%Y-\%m-\%d \%H")=="2006-12-31 23"))
 
 ## Imax computation
 Imax <- Imax(InputsModel = InputsModel, IndPeriod_Run = Ind_Run,
diff --git a/man/airGR.Rd b/man/airGR-package.Rd
similarity index 99%
rename from man/airGR.Rd
rename to man/airGR-package.Rd
index 1aabcc4edf76999dac1df972d2734907d589bd62..62e976c652c8fee10f6eccbb7994ad16b9f00119 100644
--- a/man/airGR.Rd
+++ b/man/airGR-package.Rd
@@ -1,4 +1,4 @@
-\name{airGR}
+\name{airGR-package}
 \alias{airGR}
 \alias{airGR-package}
 \docType{package}
diff --git a/man/plot.OutputsModel.Rd b/man/plot.OutputsModel.Rd
index 239ca8a224413d37bec143464c2dcfa883e0d199..240609e72ed2061216d16558d70244863827d1e8 100644
--- a/man/plot.OutputsModel.Rd
+++ b/man/plot.OutputsModel.Rd
@@ -52,7 +52,7 @@ Function which creates a screen plot giving an overview of the model outputs.
 
 \item{AxisTS}{(optional) [function] to manage x-axis representing calendar dates and times on time series plots (see \code{\link{axis}} and \code{\link{axis.POSIXct}})}
 
-\item{LayoutMat}{(optional) [numeric] a matrix object specifying the location of the next N figures on the output device. Each value in the matrix must be 0 or a positive integer. If N is the largest positive integer in the matrix, then the integers {1, \dots, N-1} must also appear at least once in the matrix (see \code{\link{layout}})}
+\item{LayoutMat}{(optional) [numeric] a matrix object specifying the location of the next N figures on the output device. Each value in the matrix must be 0 or a positive integer. If N is the largest positive integer in the matrix, then the integers \eqn{1, \dots, N-1} must also appear at least once in the matrix (see \code{\link{layout}})}
 
 \item{LayoutWidths}{(optional) [numeric] a vector of values for the widths of columns on the device (see \code{\link{layout}})}
 
@@ -74,7 +74,7 @@ Different types of independent graphs are available (depending on the model, but
 \itemize{
   \item \code{"Precip"}: time series of total precipitation
   \item \code{"PotEvap"}: time series of potential evapotranspiration
-  \item \code{"ActEvap"}: time series of simulated actual evapotranspiration (overlaid to \code{"PotEvap"} if already drawn)
+  \item \code{"ActuEvap"}: time series of simulated actual evapotranspiration (overlaid to \code{"PotEvap"} if already drawn)
   \item \code{"Temp"}: time series of temperature (plotted only if CemaNeige is used)
   \item \code{"SnowPack"}: time series of snow water equivalent (plotted only if CemaNeige is used)
   \item \code{"Flows"}: time series of simulated flows (and observed flows if provided)
diff --git a/src/frun_CEMANEIGE.f90 b/src/frun_CEMANEIGE.f90
index 959dff227f6a6ef33ee25f002d74df2bd0eed75b..69f8e8ffc4be7736169532be33e882b1ef70ff0d 100644
--- a/src/frun_CEMANEIGE.f90
+++ b/src/frun_CEMANEIGE.f90
@@ -60,7 +60,7 @@
 
 
 
-      
+
 
 
       Implicit None
@@ -183,8 +183,7 @@
           IF (dG.GT.0.) THEN
             Gratio = MIN(Gratio+(Psol-Melt)/Gacc,1.d0) !Psol - Melt = dG
             IF (Gratio.EQ.1.) Glocalmax = Gthreshold
-          ENDIF
-          IF (dG.LE.0.) THEN
+          ELSE
             Gratio=MIN(G/Glocalmax,1.d0)
           ENDIF
         ELSE
diff --git a/tests/testthat/helper_scheduled_Calibration.R b/tests/testthat/helper_scheduled_Calibration.R
index 8c48bc9945adc5e253ba7657c4ceda335d625ec4..abb7ce85b32c082dddee693cac246f9e78b93b95 100644
--- a/tests/testthat/helper_scheduled_Calibration.R
+++ b/tests/testthat/helper_scheduled_Calibration.R
@@ -9,15 +9,15 @@ sModelCalibrations <- c(
   "CemaNeigeGR4J FALSE  L0123001 NA    2.043839e+02;5.781516e-01;1.025141e+02;2.217718e+00;0.000000e+00;1.490479e+01",
   "CemaNeigeGR5J FALSE  L0123001 NA    1.983434e+02;8.747758e-01;9.849443e+01;1.768769e+00;4.824825e-01;2.002002e-02;1.505459e+01",
   "CemaNeigeGR6J FALSE  L0123001 NA    1.830941e+02;5.551637e-01;6.034029e+01;2.217718e+00;4.760000e-01;6.049647e+00;2.002002e-02;1.520589e+01",
-  "CemaNeigeGR4J TRUE   L0123001 NA    2.085127e+02;5.781516e-01;1.025141e+02;2.227477e+00;2.252252e-02;8.599316e+00;1.345000e+01;1.000000e+00",
-  "CemaNeigeGR5J TRUE   L0123001 NA    2.023502e+02;9.015250e-01;9.849443e+01;1.788288e+00;4.834835e-01;2.252252e-02;8.599316e+00;1.345000e+01;1.000000e+00",
-  "CemaNeigeGR6J TRUE   L0123001 NA    1.886701e+02;5.666293e-01;6.034029e+01;2.227477e+00;4.760000e-01;5.989452e+00;2.052052e-02;8.599316e+00;1.220000e+01;1.000000e+00",
+  "CemaNeigeGR4J TRUE   L0123001 NA    207.714454966607;0.585303966580788;102.96703872333;2.22398884558641;0.0196861714424354;11.8033351474687;11.9626050560568;1",
+  "CemaNeigeGR5J TRUE   L0123001 NA    200.367460040849;0.888103364174267;98.860904805536;1.77672854053414;0.482359807474415;0.0196975929128107;10.9981234137787;16.5084505166424;1",
+  "CemaNeigeGR6J TRUE   L0123001 NA    186.792803520168;0.555163669470098;60.340287597362;2.22747747747747;0.476;6.11044743223061;0.02002002002002;11.8423564417768;12;1",
   "GR4H            FALSE  L0123003 NA     7.116766e+02;-1.158469e+00;1.505561e+02;4.686093e+00",
   "GR5H            FALSE  L0123003 NA     8.040022e+02;-1.898488e-01;1.377525e+02;3.043663e+00;1.951163e-01",
   "CemaNeigeGR4H   FALSE  L0123003 NA     1.581284e+03;-8.457959e-01;2.299844e+02;5.000000e-01;9.475779e-03;9.482445e+01",
   "CemaNeigeGR5H   FALSE  L0123003 NA     3.267232e+01;-5.092029e+00;3.384799e+02;1.578534e+00;2.074272e-01;1.501502e-03;4.369420e+00",
-  "CemaNeigeGR4H   TRUE   L0123003 NA     1.746044e+03;-7.052756e-01;2.228887e+02;3.377089e+00;0.000000e+00;5.116962e+01;1.204664e+01;5.052849e-01",
-  "CemaNeigeGR5H   TRUE   L0123003 NA     6.717382e+01;-1.522839e+00;1.393246e+02;2.493137e+00;2.333041e-01;1.216408e-03;3.328200e-01;5.369605e+01;9.800789e-01"
+  "CemaNeigeGR4H   TRUE   L0123003 NA     2018.27809771681;-0.585865184740787;192.481491297246;2.41991991991995;0.0515515515515515;59.8404966612399;48.4;1",
+  "CemaNeigeGR5H   TRUE   L0123003 NA     45.1677239504109;-5.10668855563523;390.307503451034;1.61235761217858;0.198980247557076;0.00562529506679829;7.80476053285643;23.1395657235903;1"
 )
 
 dfModels <- read.table(text = paste(sModelCalibrations, collapse = "\n"), header = TRUE)
diff --git a/tests/testthat/helper_vignettes.R b/tests/testthat/helper_vignettes.R
index 98951fef380002bc1243e705ceaf2ac5c5d124a1..ace7650cb7510eaa7117e2a654e727612e2af388 100644
--- a/tests/testthat/helper_vignettes.R
+++ b/tests/testthat/helper_vignettes.R
@@ -5,7 +5,8 @@
 #' @param force.eval Force execution of chunks with parameter eval=FALSE
 RunRmdChunks <- function(fileRmd,
                          tmpFolder = "../tmp",
-                         force.eval = TRUE) {
+                         force.eval = TRUE,
+                         chunkIgnore = getChunkIgnore()) {
   dir.create(tmpFolder, showWarnings = FALSE)
   output <- file.path(tmpFolder,
                       gsub("\\.Rmd", "\\.R", basename(fileRmd), ignore.case = TRUE))
@@ -13,7 +14,13 @@ RunRmdChunks <- function(fileRmd,
   sTxt <- readLines(output)
   if (force.eval) {
     sectionLines <- grep("^## ----", sTxt)
-    chunksEvalStart <- grep("^## ----.*eval=F", sTxt)
+    chunkIgnore <- chunkIgnore[[basename(fileRmd)]]
+    if (!is.null(chunkIgnore)) {
+      regexChunk <- sprintf("(?!(%s))", paste(chunkIgnore, collapse = "|"))
+    } else {
+      regexChunk <- ""
+    }
+    chunksEvalStart <- grep(paste0("^## ----", regexChunk, ".*eval=F"), sTxt, ignore.case=TRUE, perl = TRUE)
     if (length(chunksEvalStart) > 0) {
       if (sectionLines[length(sectionLines)] == chunksEvalStart[length(chunksEvalStart)]) {
         lastEvalStart <- length(chunksEvalStart) - 1
@@ -72,13 +79,22 @@ RunVignetteChunks <- function(vignette,
                               force.eval = TRUE) {
   if (file.exists(sprintf("../../vignettes/%s.Rmd", vignette))) {
     # testthat context in development environnement
-    RunRmdChunks(sprintf("../../vignettes/%s.Rmd", vignette), tmpFolder, force.eval)
+    RunRmdChunks(sprintf("../../vignettes/%s.Rmd", vignette),
+                 tmpFolder = tmpFolder,
+                 force.eval =force.eval,
+                 chunkIgnore = getChunkIgnore("../../.vignettechunkignore"))
   } else if (file.exists(sprintf("vignettes/%s.Rmd", vignette))) {
     # context in direct run in development environnement
-    RunRmdChunks(sprintf("vignettes/%s.Rmd", vignette), tmpFolder, force.eval)
+    RunRmdChunks(sprintf("vignettes/%s.Rmd", vignette),
+                 tmpFolder = tmpFolder,
+                 force.eval =force.eval,
+                 chunkIgnore = getChunkIgnore(".vignettechunkignore"))
   } else {
     # R CMD check context in package environnement
-    RunRmdChunks(system.file(sprintf("doc/%s.Rmd", vignette), package = "airGR"), tmpFolder, force.eval)
+    RunRmdChunks(system.file(sprintf("doc/%s.Rmd", vignette), package = "airGR"),
+                 tmpFolder = tmpFolder,
+                 force.eval =force.eval,
+                 chunkIgnore = getChunkIgnore(".vignettechunkignore"))
   }
   return(TRUE)
 }
@@ -96,3 +112,26 @@ TestQmmQlsConversion <- function(BasinObs, BasinArea, tolerance = 1E-7) {
   notNA <- which(!is.na(BasinObs$Qmm))
   expect_equal(BasinObs$Qmm[notNA] * Conversion, BasinObs$Qls[notNA], tolerance = tolerance)
 }
+
+#' Read vignettechunkignore file
+#'
+#' @param chunkIgnoreFile path to the file
+#'
+#' @return [list] with one item by vignette containing the chunk id to ignore
+#'
+getChunkIgnore <- function(chunkIgnoreFile = "../../.vignettechunkignore") {
+  if (file.exists(chunkIgnoreFile)) {
+    message(".vignettechunkignore file found")
+    chunkIgnore <- read.table(file = chunkIgnoreFile,
+                              sep = " ", header = FALSE,
+                              col.names = c("vignette", "chunk"),
+                              stringsAsFactors = FALSE)
+    chunkIgnore <- lapply(setNames(nm = unique(chunkIgnore$vignette)), function(x) {
+      chunkIgnore$chunk[chunkIgnore$vignette == x]
+    })
+  } else {
+    message("No .vignettechunkignore file found")
+    chunkIgnore <- list()
+  }
+  return(chunkIgnore)
+}
diff --git a/vignettes/V00_airgr_ref.bib b/vignettes/V00_airgr_ref.bib
index e618e4fbb7723b5837347c8f7be774935309811f..b23edaa6f3c3e7857cd609412715427c65d71540 100644
--- a/vignettes/V00_airgr_ref.bib
+++ b/vignettes/V00_airgr_ref.bib
@@ -2,7 +2,7 @@
 @phdthesis{ficchi_adaptive_2017,
 	title = {An adaptive hydrological model for multiple time-steps: diagnostics and improvements based on fluxes consistency},
 	shorttitle = {An adaptive hydrological model for multiple time-steps},
-	url = {http://www.theses.fr/2017PA066097},
+	url = {https://www.theses.fr/2017PA066097},
 	abstract = {Cette thèse vise à explorer la question du changement d'échelle temporelle en modélisation hydrologique conceptuelle. Les principaux objectifs sont : (i) étudier les effets du changement du pas de temps sur les performances, les paramètres et la structure des modèles hydrologiques ; (ii) mettre au point un modèle pluie-débit applicable à différents pas de temps. Notre point de départ est le modèle global journalier GR4J, développé à Irstea. Ce modèle a été choisi comme le modèle de référence à adapter à d'autres résolutions plus fines, jusqu'à des pas de temps infra-horaires, en suivant une approche descendante. Pour nos tests, nous avons construit une base de données de 240 bassins versants non influencés en France, à différents pas de temps allant de 6 minutes à 1 jour, en utilisant: (i) les données pluviométriques à 6 minutes et la réanalyse des lames d'eau journalières à plus haute résolution spatiale ; (ii) les données de température journalière pour le calcul de l'évapotranspiration potentielle ; (iii) les données hydrométriques à pas de temps variable. Nous avons étudié l'impact de la distribution temporelle des entrées sur les performances du modèle en se focalisant sur la simulation de crue, sur la base de 2400 événements. Ensuite, notre évaluation du modèle a porté sur l'analyse de la cohérence des flux internes du modèle à différents pas de temps, afin d'assurer une performance satisfaisante à travers un fonctionnement du modèle cohérent. Notre diagnostic du modèle nous a permis d'identifier une amélioration de la structure du modèle à différents pas de temps infra-journaliers basée sur la complexification de la composante d'interception du modèle.},
 	urldate = {2017-11-24},
 	school = {Université Pierre et Marie Curie, Paris 6},
@@ -199,4 +199,4 @@
   langid = {english},
   number = {11},
   options = {useprefix=true}
-}
\ No newline at end of file
+}
diff --git a/vignettes/V02.1_param_optim.Rmd b/vignettes/V02.1_param_optim.Rmd
index 407990ccecba18736152d8bf3b245e423d9e887a..6091f4ee58cfc3a34ada75c404f21ad7ffdd5e9c 100644
--- a/vignettes/V02.1_param_optim.Rmd
+++ b/vignettes/V02.1_param_optim.Rmd
@@ -10,10 +10,10 @@ vignette: >
 
 
 
-```{r, warning=FALSE, include=FALSE, fig.keep='none', results='hide'}
+```{r setup, warning=FALSE, include=FALSE, fig.keep='none', results='hide'}
 library(airGR)
 library(DEoptim)
-# library(hydroPSO) # Needs R version >= 3.6 or latticeExtra <= 0.6-28 on R 3.5. Archived on 2023-10-16 as requires archived packages 'hydroTSM' and 'hydroGOF'. 
+# library(hydroPSO) # Needs R version >= 3.6 or latticeExtra <= 0.6-28 on R 3.5. Archived on 2023-10-16 as requires archived packages 'hydroTSM' and 'hydroGOF'.
 library(Rmalschains)
 library(caRamel)
 library(ggplot2)
@@ -41,13 +41,13 @@ Please note that the calibration period is defined in the `CreateRunOptions()` f
 <!-- example("Calibration_Michel", echo = FALSE, ask = FALSE) -->
 <!-- ``` -->
 
-```{r, echo=TRUE, eval=FALSE}
+```{r Calibration_Michel, echo=TRUE, eval=FALSE}
 example("Calibration_Michel")
 ```
 
 In order for the `RunModel_*()` functions to run faster during the parameter estimation process, it is recommended that the outputs contain only the simulated flows (see the `Outputs_Sim` argument in the `CreateRunOptions()` help page).
 
-```{r, results='hide', eval=FALSE}
+```{r RunOptions, results='hide', eval=FALSE}
 RunOptions <- airGR::CreateRunOptions(FUN_MOD = RunModel_GR4J, InputsModel = InputsModel,
                                       IndPeriod_Run = Ind_Run,
                                       Outputs_Sim = "Qsim")
@@ -66,7 +66,7 @@ Here we choose to minimize the root mean square error.
 
 The change of the repository from the "real" parameter space to a "transformed" space ensures homogeneity of displacement in the different dimensions of the parameter space during the step-by-step procedure of the calibration algorithm of the model.
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r OptimGR4J, warning=FALSE, results='hide', eval=FALSE}
 OptimGR4J <- function(ParamOptim) {
   ## Transformation of the parameter set to real space
   RawParamOptim <- airGR::TransfoParam_GR4J(ParamIn = ParamOptim,
@@ -86,7 +86,7 @@ OptimGR4J <- function(ParamOptim) {
 
 In addition, we need to define the lower and upper bounds of the four **GR4J** parameters in the transformed parameter space:
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r boundsGR4J, warning=FALSE, results='hide', eval=FALSE}
 lowerGR4J <- rep(-9.99, times = 4)
 upperGR4J <- rep(+9.99, times = 4)
 ```
@@ -97,7 +97,7 @@ upperGR4J <- rep(+9.99, times = 4)
 
 We start with a local optimization strategy by using the PORT routines (using the `nlminb()` of the `stats` package) and by setting a starting point in the transformed parameter space:
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r local1, warning=FALSE, results='hide', eval=FALSE}
 startGR4J <- c(4.1, 3.9, -0.9, -8.7)
 optPORT <- stats::nlminb(start = startGR4J,
                          objective = OptimGR4J,
@@ -111,7 +111,7 @@ We can also try a multi-start approach to test the consistency of the local opti
 Here we use the same grid used for the filtering step of the Michel's calibration strategy (`Calibration_Michel()` function).
 For each starting point, a local optimization is performed.
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r local2, warning=FALSE, results='hide', eval=FALSE}
 startGR4JDistrib <- TransfoParam_GR4J(ParamIn = CalibOptions$StartParamDistrib,
                                       Direction = "RT")
 startGR4J <- expand.grid(data.frame(startGR4JDistrib))
@@ -126,7 +126,7 @@ listOptPORT <- apply(startGR4J, MARGIN = 1, FUN = optPORT_)
 
 We can then extract the best parameter sets and the value of the performance criteria:
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r local3, warning=FALSE, results='hide', eval=FALSE}
 parPORT <- t(sapply(listOptPORT, function(x) x$par))
 objPORT <- sapply(listOptPORT, function(x) x$objective)
 resPORT <- data.frame(parPORT, RMSE = objPORT)
@@ -134,7 +134,7 @@ resPORT <- data.frame(parPORT, RMSE = objPORT)
 
 As can be seen below, the optimum performance criterion values (column *objective*) can differ from the global optimum value in many cases, resulting in various parameter sets.
 
-```{r, warning=FALSE}
+```{r local4, warning=FALSE}
 summary(resPORT)
 ```
 
@@ -154,7 +154,7 @@ Here we use the following R implementation of some popular strategies:
 
 ## Differential Evolution
 
-```{r, warning=FALSE, results='hide', eval=FALSE}
+```{r optDE, warning=FALSE, results='hide', eval=FALSE}
 optDE <- DEoptim::DEoptim(fn = OptimGR4J,
                           lower = lowerGR4J, upper = upperGR4J,
                           control = DEoptim::DEoptim.control(NP = 40, trace = 10))
@@ -163,15 +163,15 @@ optDE <- DEoptim::DEoptim(fn = OptimGR4J,
 
 ## Particle Swarm
 
-```{r, warning=FALSE, results='hide', message=FALSE, eval=FALSE}
-# to install the package temporary removde from CRAN
+```{r hydroPSO1, warning=FALSE, results='hide', message=FALSE, eval=FALSE}
+# to install the package temporary removed from CRAN
 # Rtools needed (windows : https://cran.r-project.org/bin/windows/Rtools/)
-install.packages("https://cran.r-project.org/src/contrib/Archive/hydroPSO/hydroPSO_0.5-1.tar.gz", 
-                 repos = NULL, type = "source", dependencies = TRUE)
+# install.packages("https://cran.r-project.org/src/contrib/Archive/hydroPSO/hydroPSO_0.5-1.tar.gz",
+#                  repos = NULL, type = "source", dependencies = TRUE)
 ```
 
 
-```{r, warning=FALSE, results='hide', message=FALSE, eval=FALSE}
+```{r hydroPSO2, warning=FALSE, results='hide', message=FALSE, eval=FALSE}
 optPSO <- hydroPSO::hydroPSO(fn = OptimGR4J,
                              lower = lowerGR4J, upper = upperGR4J,
                              control = list(write2disk = FALSE, verbose = FALSE))
@@ -192,7 +192,7 @@ optMALS <- Rmalschains::malschains(fn = OptimGR4J,
 
 As it can be seen in the table below, the four additional optimization strategies tested lead to very close optima.
 
-```{r, warning=FALSE, echo=FALSE, eval=FALSE}
+```{r resGLOB, warning=FALSE, echo=FALSE, eval=FALSE}
 resGLOB <- data.frame(Algo = c("airGR", "PORT", "DE", "PSO", "MA-LS"),
                       round(rbind(
                         OutputsCalib$ParamFinalR,
@@ -223,7 +223,7 @@ First, the `OptimGR4J()` function previously used is modified to return two valu
 ```{r, warning=FALSE, results='hide', eval=FALSE}
 InputsCrit_inv <- InputsCrit
 InputsCrit_inv$transfo <- "inv"
-  
+
 MOptimGR4J <- function(i) {
   if (algo == "caRamel") {
     ParamOptim <- x[i, ]
@@ -270,9 +270,9 @@ optMO <- caRamel::caRamel(nobj = 2,
 The algorithm returns parameter sets that describe the pareto front, illustrating the trade-off between overall good performance and good performance for low flow.
 
 ```{r, fig.width=6, fig.height=6, warning=FALSE}
-ggplot() + 
+ggplot() +
   geom_point(aes(optMO$objectives[, 1], optMO$objectives[, 2])) +
-  coord_equal(xlim = c(0.4, 0.9), ylim = c(0.4, 0.9)) + 
+  coord_equal(xlim = c(0.4, 0.9), ylim = c(0.4, 0.9)) +
   xlab("KGE") + ylab("KGE [1/Q]") +
   theme_bw()
 ```
diff --git a/vignettes/V03_param_sets_GR4J.Rmd b/vignettes/V03_param_sets_GR4J.Rmd
index 29e53e0df8fa0629ddbc9d62eb7b5dc50c42a701..73051ccdbad3690db0eb62cc8682e9078d907857 100644
--- a/vignettes/V03_param_sets_GR4J.Rmd
+++ b/vignettes/V03_param_sets_GR4J.Rmd
@@ -155,7 +155,6 @@ By default, the predefined grid used by the `Calibration_Michel()` function cont
 
 ```{r, warning=FALSE, message=FALSE}
 CalibOptions <- CreateCalibOptions(FUN_MOD = RunModel_GR4J, FUN_CALIB = Calibration_Michel)
-
 ```
 
 ```{r, warning=FALSE, message=FALSE, include=FALSE}
@@ -165,7 +164,7 @@ OutputsCalib <- Calibration(InputsModel = InputsModel, RunOptions = RunOptions_C
                             FUN_MOD = RunModel_GR4J,
                             FUN_CALIB = Calibration_Michel)
 OutputsModel_Cal <- RunModel(InputsModel = InputsModel, RunOptions = RunOptions_Cal, 
-                             Param = OutputsCalib$ParamFinalR, FUN = RunModel_GR4J)
+                             Param = OutputsCalib$ParamFinalR, FUN_MOD = RunModel_GR4J)
 OutputsCrit_Cal <- ErrorCrit_NSE(InputsCrit = InputsCrit_Cal, OutputsModel = OutputsModel_Cal)
 
 
@@ -202,7 +201,7 @@ OutputsCalib <- Calibration(InputsModel = InputsModel, RunOptions = RunOptions_C
                             FUN_MOD = RunModel_GR4J,
                             FUN_CALIB = Calibration_Michel)
 OutputsModel_Cal <- RunModel(InputsModel = InputsModel, RunOptions = RunOptions_Cal, 
-                             Param = OutputsCalib$ParamFinalR, FUN = RunModel_GR4J)
+                             Param = OutputsCalib$ParamFinalR, FUN_MOD = RunModel_GR4J)
 OutputsCrit_Cal <- ErrorCrit_NSE(InputsCrit = InputsCrit_Cal, OutputsModel = OutputsModel_Cal)
 
 
diff --git a/vignettes/V05_sd_model.Rmd b/vignettes/V05_sd_model.Rmd
index 7d1ccb888c1c30eca0282bf24ac87519e922c482..7d65c3dfd0b45aa94d568570d939cadf43ba447f 100644
--- a/vignettes/V05_sd_model.Rmd
+++ b/vignettes/V05_sd_model.Rmd
@@ -20,6 +20,8 @@ options(digits = 3)
 
 The **airGR** package implements semi-distributed model capabilities using a lag model between subcatchments. It allows to chain together several lumped models as well as integrating anthropogenic influence such as reservoirs or withdrawals.
 
+Here we explain how to implement the semi-distribution with **airGR**. For everyday use, however, it is easier to use the [**airGRiwrm**](https://cran.r-project.org/package=airGRiwrm) package.
+
 `RunModel_Lag` documentation gives an example of simulating the influence of a reservoir in a lumped model. Try `example(RunModel_Lag)` to get it.
 
 In this vignette, we show how to calibrate 2 sub-catchments in series with a semi-distributed model consisting of 2 GR4J models.