From 60219b28bc554509abe6a9d6de032e74d3df0cda Mon Sep 17 00:00:00 2001
From: Olivier Delaigue <olivier.delaigue@irstea.fr>
Date: Wed, 28 Oct 2015 10:40:48 +0100
Subject: [PATCH] [0.8.1.0] Correctif

---
 DESCRIPTION                            |   3 +-
 INDEX                                  |  67 ---
 MD5                                    |  24 --
 Meta/Rd.rds                            | Bin 1436 -> 0 bytes
 Meta/data.rds                          | Bin 200 -> 0 bytes
 Meta/hsearch.rds                       | Bin 1260 -> 0 bytes
 Meta/links.rds                         | Bin 550 -> 0 bytes
 Meta/nsInfo.rds                        | Bin 443 -> 0 bytes
 Meta/package.rds                       | Bin 748 -> 0 bytes
 R/BasinData.R                          |  42 ++
 R/Calibration.R                        |  29 ++
 R/Calibration_HBAN.R                   | 404 ++++++++++++++++++
 R/Calibration_optim.R                  | 152 +++++++
 R/CreateCalibOptions.R                 | 242 +++++++++++
 R/CreateInputsCrit.R                   |  81 ++++
 R/CreateInputsModel.R                  | 171 ++++++++
 R/CreateRunOptions.R                   | 295 ++++++++++++++
 R/DataAltiExtrapolation_HBAN.R         | 540 +++++++++++++++++++++++++
 R/ErrorCrit.R                          |  22 +
 R/ErrorCrit_KGE.R                      | 128 ++++++
 R/ErrorCrit_KGE2.R                     | 130 ++++++
 R/ErrorCrit_NSE.R                      |  92 +++++
 R/ErrorCrit_RMSE.R                     |  86 ++++
 R/PEdaily_Oudin.R                      |  58 +++
 R/RunModel.R                           |  22 +
 R/RunModel_CemaNeige.R                 | 132 ++++++
 R/RunModel_CemaNeigeGR4J.R             | 209 ++++++++++
 R/RunModel_CemaNeigeGR5J.R             | 211 ++++++++++
 R/RunModel_CemaNeigeGR6J.R             | 213 ++++++++++
 R/RunModel_GR1A.R                      | 123 ++++++
 R/RunModel_GR2M.R                      | 128 ++++++
 R/RunModel_GR4H.R                      | 129 ++++++
 R/RunModel_GR4J.R                      | 129 ++++++
 R/RunModel_GR5J.R                      | 132 ++++++
 R/RunModel_GR6J.R                      | 133 ++++++
 R/SeriesAggreg.R                       | 134 ++++++
 R/TransfoParam.R                       |  19 +
 R/TransfoParam_CemaNeige.R             |  37 ++
 R/TransfoParam_GR1A.R                  |  31 ++
 R/TransfoParam_GR2M.R                  |  35 ++
 R/TransfoParam_GR4H.R                  |  39 ++
 R/TransfoParam_GR4J.R                  |  41 ++
 R/TransfoParam_GR5J.R                  |  45 +++
 R/TransfoParam_GR6J.R                  |  47 +++
 R/airGR                                |  27 --
 R/airGR.rdb                            | Bin 56780 -> 0 bytes
 R/airGR.rdx                            | Bin 721 -> 0 bytes
 R/plot_OutputsModel.R                  | 395 ++++++++++++++++++
 help/AnIndex                           |  38 --
 help/airGR.rdb                         | Bin 137484 -> 0 bytes
 help/airGR.rdx                         | Bin 967 -> 0 bytes
 help/aliases.rds                       | Bin 349 -> 0 bytes
 help/paths.rds                         | Bin 402 -> 0 bytes
 html/00Index.html                      | 101 -----
 html/R.css                             |  57 ---
 libs/i386/airGR.dll                    | Bin 29696 -> 0 bytes
 libs/x64/airGR.dll                     | Bin 34816 -> 0 bytes
 man/BasinInfo.Rd                       |  22 +
 man/BasinObs.Rd                        |  23 ++
 man/Calibration.Rd                     |  96 +++++
 man/Calibration_HBAN.Rd                | 128 ++++++
 man/Calibration_optim.Rd               | 104 +++++
 man/CreateCalibOptions.Rd              | 128 ++++++
 man/CreateInputsCrit.Rd                | 114 ++++++
 man/CreateInputsModel.Rd               |  90 +++++
 man/CreateRunOptions.Rd                | 122 ++++++
 man/DataAltiExtrapolation_HBAN.Rd      |  65 +++
 man/ErrorCrit.Rd                       |  94 +++++
 man/ErrorCrit_KGE.Rd                   |  51 +++
 man/ErrorCrit_KGE2.Rd                  |  54 +++
 man/ErrorCrit_NSE.Rd                   |  49 +++
 man/ErrorCrit_RMSE.Rd                  |  44 ++
 man/PEdaily_Oudin.Rd                   |  37 ++
 man/RunModel.Rd                        |  62 +++
 man/RunModel_CemaNeige.Rd              |  86 ++++
 man/RunModel_CemaNeigeGR4J.Rd          | 114 ++++++
 man/RunModel_CemaNeigeGR5J.Rd          | 117 ++++++
 man/RunModel_CemaNeigeGR6J.Rd          | 118 ++++++
 man/RunModel_GR1A.Rd                   |  87 ++++
 man/RunModel_GR2M.Rd                   | 101 +++++
 man/RunModel_GR4H.Rd                   |  94 +++++
 man/RunModel_GR4J.Rd                   |  94 +++++
 man/RunModel_GR5J.Rd                   |  97 +++++
 man/RunModel_GR6J.Rd                   |  98 +++++
 man/SeriesAggreg.Rd                    |  57 +++
 man/TransfoParam.Rd                    |  46 +++
 man/TransfoParam_CemaNeige.Rd          |  44 ++
 man/TransfoParam_GR1A.Rd               |  24 ++
 man/TransfoParam_GR2M.Rd               |  24 ++
 man/TransfoParam_GR4H.Rd               |  24 ++
 man/TransfoParam_GR4J.Rd               |  44 ++
 man/TransfoParam_GR5J.Rd               |  44 ++
 man/TransfoParam_GR6J.Rd               |  44 ++
 man/airGR.Rd                           |  71 ++++
 man/plot_OutputsModel.Rd               |  40 ++
 src/frun_CEMANEIGE.f                   | 135 +++++++
 src/frun_GR1A.f                        | 116 ++++++
 src/frun_GR2M.f                        | 175 ++++++++
 src/frun_GR4H.f                        | 225 +++++++++++
 src/frun_GR4J.f                        | 225 +++++++++++
 src/frun_GR5J.f                        | 226 +++++++++++
 src/frun_GR6J.f                        | 249 ++++++++++++
 src/utils_D.f                          | 272 +++++++++++++
 src/utils_H.f                          | 272 +++++++++++++
 tests/example_Calibration.R            |  48 +++
 tests/example_Calibration_HBAN.R       |  46 +++
 tests/example_Calibration_optim.R      |  45 +++
 tests/example_ErrorCrit.R              |  61 +++
 tests/example_RunModel.R               |  29 ++
 tests/example_RunModel_CemaNeige.R     |  25 ++
 tests/example_RunModel_CemaNeigeGR4J.R |  31 ++
 tests/example_RunModel_CemaNeigeGR5J.R |  31 ++
 tests/example_RunModel_CemaNeigeGR6J.R |  31 ++
 tests/example_RunModel_GR1A.R          |  40 ++
 tests/example_RunModel_GR2M.R          |  38 ++
 tests/example_RunModel_GR4H.R          |  28 ++
 tests/example_RunModel_GR4J.R          |  28 ++
 tests/example_RunModel_GR5J.R          |  28 ++
 tests/example_RunModel_GR6J.R          |  28 ++
 tests/example_SeriesAggreg.R           |  18 +
 tests/example_TransfoParam.R           |  15 +
 tests/example_TransfoParam_CemaNeige.R |  15 +
 tests/example_TransfoParam_GR1A.R      |  15 +
 tests/example_TransfoParam_GR2M.R      |  15 +
 tests/example_TransfoParam_GR4H.R      |  15 +
 tests/example_TransfoParam_GR4J.R      |  15 +
 tests/example_TransfoParam_GR5J.R      |  15 +
 tests/example_TransfoParam_GR6J.R      |  15 +
 tests/example_plot_OutputsModel.R      |  54 +++
 129 files changed, 10232 insertions(+), 316 deletions(-)
 delete mode 100644 INDEX
 delete mode 100644 MD5
 delete mode 100644 Meta/Rd.rds
 delete mode 100644 Meta/data.rds
 delete mode 100644 Meta/hsearch.rds
 delete mode 100644 Meta/links.rds
 delete mode 100644 Meta/nsInfo.rds
 delete mode 100644 Meta/package.rds
 create mode 100644 R/BasinData.R
 create mode 100644 R/Calibration.R
 create mode 100644 R/Calibration_HBAN.R
 create mode 100644 R/Calibration_optim.R
 create mode 100644 R/CreateCalibOptions.R
 create mode 100644 R/CreateInputsCrit.R
 create mode 100644 R/CreateInputsModel.R
 create mode 100644 R/CreateRunOptions.R
 create mode 100644 R/DataAltiExtrapolation_HBAN.R
 create mode 100644 R/ErrorCrit.R
 create mode 100644 R/ErrorCrit_KGE.R
 create mode 100644 R/ErrorCrit_KGE2.R
 create mode 100644 R/ErrorCrit_NSE.R
 create mode 100644 R/ErrorCrit_RMSE.R
 create mode 100644 R/PEdaily_Oudin.R
 create mode 100644 R/RunModel.R
 create mode 100644 R/RunModel_CemaNeige.R
 create mode 100644 R/RunModel_CemaNeigeGR4J.R
 create mode 100644 R/RunModel_CemaNeigeGR5J.R
 create mode 100644 R/RunModel_CemaNeigeGR6J.R
 create mode 100644 R/RunModel_GR1A.R
 create mode 100644 R/RunModel_GR2M.R
 create mode 100644 R/RunModel_GR4H.R
 create mode 100644 R/RunModel_GR4J.R
 create mode 100644 R/RunModel_GR5J.R
 create mode 100644 R/RunModel_GR6J.R
 create mode 100644 R/SeriesAggreg.R
 create mode 100644 R/TransfoParam.R
 create mode 100644 R/TransfoParam_CemaNeige.R
 create mode 100644 R/TransfoParam_GR1A.R
 create mode 100644 R/TransfoParam_GR2M.R
 create mode 100644 R/TransfoParam_GR4H.R
 create mode 100644 R/TransfoParam_GR4J.R
 create mode 100644 R/TransfoParam_GR5J.R
 create mode 100644 R/TransfoParam_GR6J.R
 delete mode 100644 R/airGR
 delete mode 100644 R/airGR.rdb
 delete mode 100644 R/airGR.rdx
 create mode 100644 R/plot_OutputsModel.R
 delete mode 100644 help/AnIndex
 delete mode 100644 help/airGR.rdb
 delete mode 100644 help/airGR.rdx
 delete mode 100644 help/aliases.rds
 delete mode 100644 help/paths.rds
 delete mode 100644 html/00Index.html
 delete mode 100644 html/R.css
 delete mode 100644 libs/i386/airGR.dll
 delete mode 100644 libs/x64/airGR.dll
 create mode 100644 man/BasinInfo.Rd
 create mode 100644 man/BasinObs.Rd
 create mode 100644 man/Calibration.Rd
 create mode 100644 man/Calibration_HBAN.Rd
 create mode 100644 man/Calibration_optim.Rd
 create mode 100644 man/CreateCalibOptions.Rd
 create mode 100644 man/CreateInputsCrit.Rd
 create mode 100644 man/CreateInputsModel.Rd
 create mode 100644 man/CreateRunOptions.Rd
 create mode 100644 man/DataAltiExtrapolation_HBAN.Rd
 create mode 100644 man/ErrorCrit.Rd
 create mode 100644 man/ErrorCrit_KGE.Rd
 create mode 100644 man/ErrorCrit_KGE2.Rd
 create mode 100644 man/ErrorCrit_NSE.Rd
 create mode 100644 man/ErrorCrit_RMSE.Rd
 create mode 100644 man/PEdaily_Oudin.Rd
 create mode 100644 man/RunModel.Rd
 create mode 100644 man/RunModel_CemaNeige.Rd
 create mode 100644 man/RunModel_CemaNeigeGR4J.Rd
 create mode 100644 man/RunModel_CemaNeigeGR5J.Rd
 create mode 100644 man/RunModel_CemaNeigeGR6J.Rd
 create mode 100644 man/RunModel_GR1A.Rd
 create mode 100644 man/RunModel_GR2M.Rd
 create mode 100644 man/RunModel_GR4H.Rd
 create mode 100644 man/RunModel_GR4J.Rd
 create mode 100644 man/RunModel_GR5J.Rd
 create mode 100644 man/RunModel_GR6J.Rd
 create mode 100644 man/SeriesAggreg.Rd
 create mode 100644 man/TransfoParam.Rd
 create mode 100644 man/TransfoParam_CemaNeige.Rd
 create mode 100644 man/TransfoParam_GR1A.Rd
 create mode 100644 man/TransfoParam_GR2M.Rd
 create mode 100644 man/TransfoParam_GR4H.Rd
 create mode 100644 man/TransfoParam_GR4J.Rd
 create mode 100644 man/TransfoParam_GR5J.Rd
 create mode 100644 man/TransfoParam_GR6J.Rd
 create mode 100644 man/airGR.Rd
 create mode 100644 man/plot_OutputsModel.Rd
 create mode 100644 src/frun_CEMANEIGE.f
 create mode 100644 src/frun_GR1A.f
 create mode 100644 src/frun_GR2M.f
 create mode 100644 src/frun_GR4H.f
 create mode 100644 src/frun_GR4J.f
 create mode 100644 src/frun_GR5J.f
 create mode 100644 src/frun_GR6J.f
 create mode 100644 src/utils_D.f
 create mode 100644 src/utils_H.f
 create mode 100644 tests/example_Calibration.R
 create mode 100644 tests/example_Calibration_HBAN.R
 create mode 100644 tests/example_Calibration_optim.R
 create mode 100644 tests/example_ErrorCrit.R
 create mode 100644 tests/example_RunModel.R
 create mode 100644 tests/example_RunModel_CemaNeige.R
 create mode 100644 tests/example_RunModel_CemaNeigeGR4J.R
 create mode 100644 tests/example_RunModel_CemaNeigeGR5J.R
 create mode 100644 tests/example_RunModel_CemaNeigeGR6J.R
 create mode 100644 tests/example_RunModel_GR1A.R
 create mode 100644 tests/example_RunModel_GR2M.R
 create mode 100644 tests/example_RunModel_GR4H.R
 create mode 100644 tests/example_RunModel_GR4J.R
 create mode 100644 tests/example_RunModel_GR5J.R
 create mode 100644 tests/example_RunModel_GR6J.R
 create mode 100644 tests/example_SeriesAggreg.R
 create mode 100644 tests/example_TransfoParam.R
 create mode 100644 tests/example_TransfoParam_CemaNeige.R
 create mode 100644 tests/example_TransfoParam_GR1A.R
 create mode 100644 tests/example_TransfoParam_GR2M.R
 create mode 100644 tests/example_TransfoParam_GR4H.R
 create mode 100644 tests/example_TransfoParam_GR4J.R
 create mode 100644 tests/example_TransfoParam_GR5J.R
 create mode 100644 tests/example_TransfoParam_GR6J.R
 create mode 100644 tests/example_plot_OutputsModel.R

diff --git a/DESCRIPTION b/DESCRIPTION
index e0819b42..fafb3d22 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -13,5 +13,4 @@ Description: This package brings into R the hydrological modelling tools used at
              for their calibration and evaluation (GR4H, GR4J, GR5J, GR6J, GR2M, GR1A and CemaNeige).
              Use help(airGR) for package description.
 License: GPL-2
-Built: R 3.0.2; x86_64-w64-mingw32; 2015-10-27 18:41:54 UTC; windows
-Archs: i386, x64
+Packaged: 2015-10-27 18:41:47 UTC; H61970
diff --git a/INDEX b/INDEX
deleted file mode 100644
index 188e0fbd..00000000
--- a/INDEX
+++ /dev/null
@@ -1,67 +0,0 @@
-BasinInfo               Data sample: characteristics of a fictional
-                        catchment (L0123001, L0123002 or L0123003)
-BasinObs                Data sample: time series of observations of a
-                        fictional catchment (L0123001, L0123002 or
-                        L0123003)
-Calibration             Calibration algorithm which minimises an error
-                        criterion on the model outputs using the
-                        provided functions
-Calibration_HBAN        Calibration algorithm which minimises the error
-                        criterion using the Irstea-HBAN procedure
-Calibration_optim       Calibration algorithm which minimises the error
-                        criterion using the stats::optim function
-CreateCalibOptions      Creation of the CalibOptions object required to
-                        the Calibration functions
-CreateInputsCrit        Creation of the InputsCrit object required to
-                        the ErrorCrit functions
-CreateInputsModel       Creation of the InputsModel object required to
-                        the RunModel functions
-CreateRunOptions        Creation of the RunOptions object required to
-                        the RunModel functions
-DataAltiExtrapolation_HBAN
-                        Altitudinal extrapolation of precipitation and
-                        temperature series
-ErrorCrit               Error criterion using the provided function
-ErrorCrit_KGE           Error criterion based on the KGE formula
-ErrorCrit_KGE2          Error criterion based on the KGE' formula
-ErrorCrit_NSE           Error criterion based on the NSE formula
-ErrorCrit_RMSE          Error criterion based on the RMSE
-PEdaily_Oudin           Computation of daily series of potential
-                        evapotranspiration with Oudin's formula
-RunModel                Run with the provided hydrological model
-                        function
-RunModel_CemaNeige      Run with the CemaNeige snow module
-RunModel_CemaNeigeGR4J
-                        Run with the CemaNeigeGR4J hydrological model
-RunModel_CemaNeigeGR5J
-                        Run with the CemaNeigeGR5J hydrological model
-RunModel_CemaNeigeGR6J
-                        Run with the CemaNeigeGR6J hydrological model
-RunModel_GR1A           Run with the GR1A hydrological model
-RunModel_GR2M           Run with the GR2M hydrological model
-RunModel_GR4H           Run with the GR4H hydrological model
-RunModel_GR4J           Run with the GR4J hydrological model
-RunModel_GR5J           Run with the GR5J hydrological model
-RunModel_GR6J           Run with the GR6J hydrological model
-SeriesAggreg            Conversion of time series to another time-step
-                        (aggregation only)
-TransfoParam            Transformation of the parameters using the
-                        provided function
-TransfoParam_CemaNeige
-                        Transformation of the parameters from the
-                        CemaNeige module
-TransfoParam_GR1A       Transformation of the parameters from the GR1A
-                        model
-TransfoParam_GR2M       Transformation of the parameters from the GR2M
-                        model
-TransfoParam_GR4H       Transformation of the parameters from the GR4H
-                        model
-TransfoParam_GR4J       Transformation of the parameters from the GR4J
-                        model
-TransfoParam_GR5J       Transformation of the parameters from the GR5J
-                        model
-TransfoParam_GR6J       Transformation of the parameters from the GR6J
-                        model
-airGR                   Modelling tools used at Irstea-HBAN (France),
-                        including GR4J and CemaNeige
-plot_OutputsModel       Default preview of model outputs
diff --git a/MD5 b/MD5
deleted file mode 100644
index d21ce056..00000000
--- a/MD5
+++ /dev/null
@@ -1,24 +0,0 @@
-745f1ff9a1a987be74e26d327e1001f3 *DESCRIPTION
-8cfd5d38abb52c25f9de6da3b5a49dbd *INDEX
-4ef88d7fe2a815ae9d537a6a0ce475e2 *Meta/Rd.rds
-32a1c5de93e3b6254dbd86b07ba073ba *Meta/data.rds
-85e37b304c759576eef3e1715799d846 *Meta/hsearch.rds
-13463ac75ee802be8ab7942c547edf89 *Meta/links.rds
-db1f9a1a649ce0c9ed5f0bf1321337a4 *Meta/nsInfo.rds
-886528f90ab482d4b30d2586da61f7e7 *Meta/package.rds
-ef20fcb07a98bb3a13d1dfbce9b66ab0 *NAMESPACE
-ebf0fc819595d631b8bf280c4b049940 *R/airGR
-44c5327b5161fa3578c84656f9e872c6 *R/airGR.rdb
-af79b71953440b5fb2bb5968d1c7c4a5 *R/airGR.rdx
-9a4212f4316f102accff6f1b737b591f *data/L0123001.rda
-1940776e833cda1019508134b87c65f0 *data/L0123002.rda
-517b0e945c588adcb1846db0b138cd10 *data/L0123003.rda
-98c6e43c002546b43228d42f834515f2 *help/AnIndex
-7d2aecc63e95084cf48a00bb02d63f5c *help/airGR.rdb
-42aefbf56becfa3987a4b3e94f8c032d *help/airGR.rdx
-ddae52805808b1d0202eea1457a18f12 *help/aliases.rds
-06e18f0d21774860b6fe45293af4f4fb *help/paths.rds
-e5b5791fbc25b39ec22b8509c01f4d69 *html/00Index.html
-444535b9cb76ddff1bab1e1865a3fb14 *html/R.css
-c27696c4a2f0ae0ccc8b7cd8ad62b66e *libs/i386/airGR.dll
-991f7b24c923dfc3bd5b7420ae1a6cc7 *libs/x64/airGR.dll
diff --git a/Meta/Rd.rds b/Meta/Rd.rds
deleted file mode 100644
index 054d837052dfef37a15a13d83d69177f8f561af1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1436
zcmV;N1!MXjiwFP!000002JKi|Pa`)JPPwSC3oR|XmA2AKZdG+b1q9gyRj4o75N_K5
z%Cc4agv`WAyqy_OJq~H!`aAn$N{=Vw8QXJ7VEa@d5oU6}bB^tEb<VF(DwWDyWgb3r
z^YA*q4*!<mvj(5<D+`rnc&@y`A@xuF9^2`3W7^Y*c5xG?q|chzr8gW4%KVhNu2HW~
z-Zair=$Q_&Ku|Bmo;Nwcf<zn_f#e8voe_BI2SX7yITgB24QjJ4aWi6_p`X$C@(>H$
za0PAsDL4+8o44PU7Uztc>#ZfU>$k_Pl>UW5ujUGzzsncsv~^(Zvem`Z9baDzyHqpm
zQ#glpz~_o|-6S49C$vve@I@9p?$pkvFx00p>}w2b3Bz$`uaQr$w)5$=lLC5y{(1pj
z-_Pgo2&W`$^!uFjHS!h5e%ND|m}4#EUg+dJ3qCU#%p=;EeoPzFkD9^Gim`eLrXPC=
zQ-0jhcmtOS2p?hOgqh>ZNscQeD#2B_Y00Y0Zl|^i<xF13z?a#iPE=VLov5<Y*%U}~
zIi`PIoXF~=NutGsRU=hZF*EZw%L>VxWtEw$SdFw*Mpc2T43f>L82KtcTg%XTDY~!F
zRU=7rh}Cuuv38P2%+p!VBPOe_=qagadMv9m<R_yFi%cdK0LfWwAURJ4I4c0^ML=@4
z#VGF-S0?GKj9chJq~^R=9-qeZ(*Qfa<HYq9%Z$IsghwIv0+$>hX8=xd1jJY<s1qXA
zLm2g_BZ~lbk%NUZ@Q5$a#?QNZ)z`bbds`@et0KnL`|HhE`;DO;Dj7jx6u?q5yMg!H
zsK9*uN*}bMiLl#eP)`OP8V#s3Kpyp}M?+W^`-sSLgB-wNC%_DUVnC25V+^rLz@Z@&
z?|wuNIJ>1?(nY<Y@93rSx7k*dI_xD=?Wa5x1aHgwDpztycgV?qxj-ne2oDaTHj*46
zUf?up0+9`R5wqS|z&#&`BM>Kl3@L~63zqW4o3c&PvK6KcsYqQ?{AX3xp7<$Wn<|+Z
zWrw!1wDa9tS3~wkA=?rJD$)C-R332R(142AZ9eEDUO>QN;Mq9(V?{r-3f-28x>#hx
z7P-M8aK$kUtrqnd_lB;jhMUv)Us(d>3qaSl_`fOT*Bbg|lX>93#7<Fn*Q!Cl1f)Ba
zCcOoN3fUwA8VA}4A|FLJfmflmfj#ik1UKw97<V~yS)V$f(KGxQ3w~<|CM^<$J{w7i
zp{o*cJD*cFyPS2V3DqAWv|l3hogpN<`Ru&a_Uyd1lY8*qW4~nvv3bkv&}cIMmhezz
zxz=qUrLoUI1&_$vP;>*dfumbg9Fe{|R=wn>_=dtgqhti~!a^X-OWQ-N<6x?e9%r5v
zdPdaMX4eq;TsOtNWFZC~EDJI5aM`nm%ho?acHfjei>kaEIg~M1Iv3oDh0&Wgj$i?Y
zY;GayJFYB5{mBVrfw!;M=#cdA&=s;5+)^@<+cB;e)*Wo|{ngR-kB?ve?_VmF^~mcJ
z?|%}5+UURp(h-75H%192lpQIUc+P0SWXKya*h|=>278Ij$RSsOHhM7evJr%3xpWj^
z0@g^v1ntp8p{N{D6pBVS8%xw2Sy;|YMi-XBb4C~@N6{!_2Cn){T>CbcHR31+tL+l7
zc2WkGt(n=jH3~67b0lJ6#%RQ{MZt)~3g_&oq?{pRlbq4X6bAc*Iir+vhK!Bk(TXLN
zH)7E%RORtG^YhVevp-b;zKlmxTgjb%yfwKf$=g^ev@oX$E&6b!Q$1rTCN3P&<lek+
z4h-u3Y8<Hd#VaZjrlpqeFnNnpQ?iCj;fJgGWxfPIB^(ln<ojDP9x>hxt<5ZRHri1e
qT7}QtU-0kl?(T1U*N%%ryVE_9W6PbMyraUmfBpsVM}HAb8~^~yyt_OA

diff --git a/Meta/data.rds b/Meta/data.rds
deleted file mode 100644
index 216de635f65820f8e7827f455b266dfe5a43f744..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 200
zcmV;(05|_1iwFP!000002JMr*3c@fDfX}uFih`gIaHE1le>O*P5d=4Jy~dOVnnar5
z<BMr&l~U>hh(mG*AAH|**C_ya;JfGf)w*!s3<8+Ax!RKv>Zme}>r)uTNf<_(VHSU3
zNz0ZsJEx|v?4x)Xy@i(pSwchdUho~VoJwMrm%>=V4C)LCGr_FTiV9?8SuVM<pZXTt
z80r##$)0xXR!EM<$$4$osoNh^x&NhZ2?EcRMorPb3F*eXz7v3PGoLTqq-AD00{{T1
CC0uy`

diff --git a/Meta/hsearch.rds b/Meta/hsearch.rds
deleted file mode 100644
index bc9992aa96926fa112a772dcdd25b255b0a311e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1260
zcmV<I1QYuoiwFP!000002JKn@Pa8KBKLQodjj41}f2cIco2C^skjPy^8QL#tNcqz8
zMYNr^pOABL61R8fo6mvq&u@Fa*e`dN5CWZ;w4Fqh=lAVnKR>@0n_nM0j#F{w;ZvCh
z()k)b3&48fICGDIT88l>%H{rfIrx7Jobvll-*Z(<xR&rNQL{wd65Ez|X^9<6{A7qq
zbqlE~QZ7;+QZ=ONNNpqa5~&@e5W__b7cpGKa1p~r3>Pt6#BdSAMGO})JjC!2!$S-Y
zF+9ZZ5W_<Z4>3H8vHXfAJUWcJ!Z4On#%Vh-<1d;t;B8427m;B-$*?XCUNue(e>KY&
zvErc-JZ(xw6-&jZu@)!jDwP~Y@jxX_$rZZF@Q+1@1$l$>L6mp&e2*&H2o!Jqp(Kq(
zFgCm8mXtzfFjkOp@n*kem|x|X?zrm7y9ui2$H-kdYjr3Ot}jjp9d0AG1oO?V;;9{9
zG+9Vb81FG7c{VQDKd&84lh&t7x2<#qrTgdA#ssE&Jb_s|n8cjqvp$K5=wH5LlCz}I
z>q*wLy!VnuNmravNo}e;%ksvevzn7;)=?DTT8aW(&zRuo20{HM0j@1q^H<|QDA;^e
z%-mmehLVJaalm$o-v=+gf}kXd`w0<ULP?kVI%{b_e5(9@$Rb77-fmT0Z)>Z%K@8;*
zAua8#8}IF$cQ|^CBx%I8XVC`wGCdKWkMuEf$_Wj60uDewBv*az_esbj9`XcWX+)Sl
zAH)Ya%mkF-PxToIbx?>HMu-fc+VoO>EX5`7uny@CB0qb!f13?a`zS(=ydTO$F}kS>
zf=2RLXCT=>36LnNlHJ|3?%@&)z+qao(in78<!mX0?fJ-jMI`%uz$L6-iII+(R52v2
zqQg-Iy~!O`t67~L5BF)ZH+#m%ob45zjY{>MeKmAJSGtZuqOxpZ*Un?fd>(UUwk-mG
zEQ}dM40hIJzj5?q>&9&x%Q|DSRy1kT1hh;JLvJ8mA;UpHjsE&=`Y#Fw(*dB(6!gEH
zs-NjVXH5~p{$ZTbc9f|Gu~2Z_xen<i1XSs&7ITwmSCIK6ZCx*t!UU?YPeXYwZvE?y
z6oKe*A3TP+eKdyO<qWZ=lOz&X+F}scgSa_aQ&;B+IJX(q?_;z*#pwH-k#0Y;>$=CY
z>(&nLpnHe;P76p;cUl}8O%Yu(nb=dF={9hrX(YgfOxc@IbYrqc)3$FiG77G3FZtQD
zR2k+<Myxw5gEXJo9*mFOTYYq;2n(r~%eva^9@0I}hT=}PkOTL&g`Bv*?a}>h>z`q}
zowq$ot9+1ds1SkPT-Z*ka=m%&H30Z*eS`4G4|E~w4OgHGeDU`n*<)Qg2$b#xmz-Vc
z>EwQ1l((GnmQ&tx9`Kg)=)?Qhn>*#;zdmplDlnKc%=r#fK{ykRegSu!AK<fCP+0<%
z2zo@~3}42z>`z_lQr)4>;u-ZnQ9K8WZ+ZKSs=gUk4)+YTpdH!yzzrc74Mfa+i`a^M
zq5H=WNx#E8vTO)tLns@<12%;6P2YLwH~oMAA7AC*AqHuKo%_qlH{SUnzoPlYMmuji
zYa`$^!RN72XT=UYYMIvNn|LVNz;}V`jp1cW-{{8D@y0pM%{a%UH|+XK$j(fYbS3~f
WvjQ~*TsUJj9q4amh+^2^9{>RQkz#ZJ

diff --git a/Meta/links.rds b/Meta/links.rds
deleted file mode 100644
index 8dcea7746eec82dfbde09be2b7e639ec79d0c4fa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 550
zcmV+>0@?i^iwFP!000002A!2nPa821hPMHvLQ6$^-~bX;KLkCXghpBJAw&tOlAxsr
zZjn(;u(V(DIuiVOgcI4Wz2o&dm6EJ?=9!7@vERAh3xc2#Z1HbnYc)LJKc~TVu*;uc
zo6Q#gAVLRG>xm_C>k1Vly-6Rl=IT{oCw6T5Q0UY*K=n{e9w=fYOLg$n1<r<7-HA@0
zIq58CB+>C-5T_V1ybhY?tDvH0GHd=O&6lj`QNn5_qtWARj$@zX(K5A6<pR*xh@o!G
zNdK8plxMMhhhP=^lxDO%_aD{R?9ZUDqd(nf+c)jx&O2>1Hd&bVwm(NCewj^|bCSA`
zC*NOC3wSUjHS6I7O)yztoj>>B2T^CVc}(~pF_$Cv=BSuK^t<bgw#VLRXXuam&o%T%
z%^mm-&^t^CF1m{a#S1t2m!h<I%x)1yiMtXyX+I@U5R8~|HEMCQBDJ_#m3n-%5gu-a
zn-w|+_<HEhn8z987o3&UG}vx%{GABfNl}6eKG0j)uIgOE@Lu*P@%}+;8^Ux@?mNQ%
z8FU!o_yT*0N>%C_Dpk2Zm;wJffv_J{Yrb5m5=~*)H^f;OKbeXRQLfDpU8%4{4ZW3{
zDleqm5U5qcb7)sfmp62JFQs?i&^n8;J+>G-Lz~f-Gqf4izkk$qM%wg?AlG2m4tXqq
oN>n)1TFMT!9^e>NIKnE2THDV0CQ1t2MQ(h31Jh0)F;5Br07IAukN^Mx

diff --git a/Meta/nsInfo.rds b/Meta/nsInfo.rds
deleted file mode 100644
index ded75a3aa73e2d5a3afe43b76b32aee8385b6fea..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 443
zcmV;s0Yv^EiwFP!0000027Q!WPr@)1hReVpB7~2G3vc}eB6vS10WkwIyzq|Htj;D|
zyL6p_Kd*MIE8PbyDW%VQ&fA`CXCF5J00Y#;FzU(Qq4;Twk<7`}6XPB<Kr7)E^zkQy
z98)4uPeZ%Kv$>MIuX7r597thcF$6g}%Ih$ZBV~0|UP&19$YPi)D~;RKMSecPiAmn*
z?gesa`W(;poWYR#rPH-$j8UfT(NSRcHlIn@&B1XwbhWJrb!<gDo0$u-f7q>K7iV|u
zTAWv}VvwzO77E}BVGl`VR95EBWO+%QUR0klwWHLz^I%rMv0VWtiz-;<Ijw?f_uDOE
z7)7S%G2~_Jok0?P(G6rUdsRj{E8U%bPSxrt3aXZ(pz0|J%QM3CoS<s!hd$-vdGpiD
zn)VRTdP?uDirGl!nl!wEn0X9<hM_|O0~E=O3?|p_$=#4{xx~6F8c{r!W7DTsJxxo(
zYJbwQEyJ5Q2r1)PV>QuUUv|^w26B#=>b_2zWBD+OPyyPAe^Xb%G`|p;!hGaVi!5x{
lbPq&)O4ON%X!alE(3oSQOk3N>KpKi-{{duKdSmni000v))TRIc

diff --git a/Meta/package.rds b/Meta/package.rds
deleted file mode 100644
index e7051aaf8526643f0f65b70c0d9ea1aae359984c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 748
zcmV<I0u%ioiwFP!000002GvwcPuoBcb{;eVS{0Q;uX_v<v63`U#7hkc4MBlKCR9BY
zE%qi^VeeYI>!kd7+Oe}6V$)V?Z?&|K8IR}j%{TtKVOdt*D!|GY;9A&*tqiIyI5(}L
zwGQVRrlRX;p)|zq1D+5qUS4sJ_&#M5q&W8_iX`z6R;VYWBDi{S*1ATO&jK@-?Cc`S
zTtD(+>#ozhM3{M~O#*yP=+a}UW*^vfyQamBMy<YAt=FoJk6QDlk0U{tLhXSwxYo+!
zlyVmhd^)2<pw4-})$87#qhr3%*pM!!lZbqxNrv`VoN6Dh9aK3zK_BdzUEf*ga^FT%
zDp9zo8Qlv=T|yO#BL}G|LDNT1aGy`8i+vRQ1s3)OT75>~%S2g#L?n`AMg;hEIeZbS
z2(AKCHpaeR6%pg(@gk&5fQ-|@QgWAK1#!m_a~0)GrUQ++h%Ko=kTJa%IJQZ?Co}9v
z3$X&-x!6s56z_Y<zMt%kt9Y-s(!I-;b1MNF;)j)lIy*^JQyx_23L3_NY{RhbuwQLx
z;lxQ=&^SWh5BBf&o7Fk208pKO0NpbkQ2pSrSwGxsqT5mX2+b+;_*`06F%M31#xuhK
z0j0G{=nRL8qsP$P*G5$NODcXLLPDCxt^>g8`>R%@rd$}3UO`(FEMhdJ4haeKq!u?j
z&qW)HK6MF`%fM$5^%Y#6VEW=IEb3{@#gvanQ!gu-*i4nK51rRl7PNB9xs#7Tyx?w@
zD&wtgL{`nBfC%a?)k!LeM-%4V%Z6ku-v6dO8M9KVS-Btjby2_0nV(I0=wk)k34Yaq
z!HtUh_Ka8|69wF)75USXKY*HBWRo}9<o^Y)R6V8>#h8R92Ob&_(m?C9{{Kpn3apF+
zYo$u-<(aZAFNfy*rtS2Gqu%m2uct(_!|_r>wr*teC&>(9`6il7h*U-{^@5O#rMTXw
e>;YIk;u-i1=-V2;m06DY|MU}Y7>;2@2LJ#(LTfny

diff --git a/R/BasinData.R b/R/BasinData.R
new file mode 100644
index 00000000..b1e6d222
--- /dev/null
+++ b/R/BasinData.R
@@ -0,0 +1,42 @@
+#' @name BasinInfo
+#' @docType data
+#' @title Data sample: characteristics of a fictional catchment (L0123001, L0123002 or L0123003)
+#' @description
+#' R-object containing the code, station's name, area and hypsometric curve of the catchment.
+#' @encoding UTF-8
+#' @format
+#' List named 'BasinInfo' containing
+#' \itemize{
+#' \item two strings: catchment's code and station's name
+#' \item one float: catchment's area in km2
+#' \item one numeric vector: catchment's hypsometric curve (min, quantiles 01 to 99 and max) in metres
+#' }
+#' @examples 
+#'    require(airGR)
+#'    data(L0123001)
+#'    str(BasinInfo)
+
+NULL
+
+
+#' @name BasinObs
+#' @docType data
+#' @title Data sample: time series of observations of a fictional catchment (L0123001, L0123002 or L0123003)
+#' @description
+#' R-object containing the times series of precipitation, temperature, potential evapotranspiration and discharges. \cr
+#' Times series for L0123001 or L0123002 are at the daily time-step for use with daily models such as GR4J, GR5J, GR6J, CemaNeigeGR4J, CemaNeigeGR5J and CemaNeigeGR6J.
+#' Times series for L0123003 are at the hourly time-step for use with hourly models such as GR4H.
+#' @encoding UTF-8
+#' @format
+#' Data frame named 'BasinObs' containing
+#' \itemize{
+#' \item one POSIXlt vector: time series dates in the POSIXlt format
+#' \item five numeric vectors: time series of catchment average precipitation [mm], catchment average air temperature [degC], catchment average potential evapotranspiration [mm], outlet discharge [l/s], outlet discharge [mm]
+#' }
+#' @examples 
+#'    require(airGR)
+#'    data(L0123001)
+#'    str(BasinObs)
+
+NULL
+
diff --git a/R/Calibration.R b/R/Calibration.R
new file mode 100644
index 00000000..874740b5
--- /dev/null
+++ b/R/Calibration.R
@@ -0,0 +1,29 @@
+#*************************************************************************************************
+#' Calibration algorithm which minimises the error criterion using the provided functions. \cr
+#*************************************************************************************************
+#' @title  Calibration algorithm which minimises an error criterion on the model outputs using the provided functions
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{Calibration_HBAN}}, \code{\link{Calibration_optim}},
+#'          \code{\link{RunModel}}, \code{\link{ErrorCrit}}, \code{\link{TransfoParam}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, 
+#'          \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+#' @example tests/example_Calibration.R
+#' @export
+#' @encoding UTF-8
+#_FunctionInputs__________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  InputsCrit          [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  CalibOptions        [object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  FUN_CRIT            [function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)
+#' @param  FUN_CALIB           (optional) [function] calibration algorithm function (e.g. Calibration_HBAN, Calibration_optim), default=Calibration_HBAN
+#' @param  FUN_TRANSFO         (optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined
+#' @param  quiet               (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] see \code{\link{Calibration_HBAN}} or \code{\link{Calibration_optim}} 
+#**************************************************************************************************
+Calibration <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_CALIB=Calibration_HBAN,FUN_TRANSFO=NULL,quiet=FALSE){
+    return( FUN_CALIB(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_TRANSFO,quiet=quiet) )
+}
+
diff --git a/R/Calibration_HBAN.R b/R/Calibration_HBAN.R
new file mode 100644
index 00000000..152ac7a5
--- /dev/null
+++ b/R/Calibration_HBAN.R
@@ -0,0 +1,404 @@
+#*************************************************************************************************
+#' Calibration algorithm which minimises the error criterion. \cr
+#' \cr
+#' The algorithm is based on a local search procedure. 
+#' First, a screening is performed using either a rough predefined grid or a list of parameter sets
+#' and then a simple steepest descent local search algorithm is performed.
+#' 
+#' A screening is first performed either from a rough predefined grid (considering various initial 
+#' values for each paramete) or from a list of initial parameter sets. \cr
+#' The best set identified in this screening is then used as a starting point for the steepest 
+#' descent local search algorithm. \cr
+#' For this search, the parameters are used in a transformed version, to obtain uniform           
+#' variation ranges (and thus a similar pace), while the true ranges might be quite different. \cr
+#' At each iteration, we start from a parameter set of NParam values (NParam being the number of 
+#' free parameters of the chosen hydrological model) and we determine the 2*NParam-1 new candidates 
+#' by changing one by one the different parameters (+/- pace). \cr
+#' All these candidates are tested and the best one kept to be the starting point for the next    
+#' iteration. At the end of each iteration, the pace is either increased or decreased to adapt    
+#' the progression speed. A diagonal progress can occasionally be done.                        \cr
+#' The calibration algorithm stops when the pace becomes too small.                            \cr
+#'
+#' To optimise the exploration of the parameter space, transformation functions are used to convert
+#' the model parameters. This is done using the TransfoParam functions.
+#*************************************************************************************************
+#' @title  Calibration algorithm which minimises the error criterion using the Irstea-HBAN procedure
+#' @author Laurent Coron (August 2013)
+#' @references
+#'   Michel, C. (1991),
+#'        Hydrologie appliquée aux petits bassins ruraux, Hydrology handout (in French), Cemagref, Antony, France.
+#' @example tests/example_Calibration_HBAN.R
+#' @seealso \code{\link{Calibration}}, \code{\link{Calibration_optim}},
+#'          \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, 
+#'          \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  InputsCrit          [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  CalibOptions        [object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  FUN_CRIT            [function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)
+#' @param  FUN_TRANSFO         (optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined
+#' @param  quiet               (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$ParamFinalR  }  \tab   [numeric] parameter set obtained at the end of the calibration \cr
+#'          \emph{$CritFinal    }  \tab   [numeric] error criterion obtained at the end of the calibration \cr
+#'          \emph{$NIter        }  \tab   [numeric] number of iterations during the calibration \cr
+#'          \emph{$NRuns        }  \tab   [numeric] number of model runs done during the calibration \cr
+#'          \emph{$HistParamR   }  \tab   [numeric] table showing the progression steps in the search for optimal set: parameter values \cr
+#'          \emph{$HistCrit     }  \tab   [numeric] table showing the progression steps in the search for optimal set: criterion values \cr
+#'          \emph{$MatBoolCrit  }  \tab   [boolean] table giving the requested and actual time steps when the model is calibrated \cr
+#'          \emph{$CritName     }  \tab   [character] name of the calibration criterion \cr
+#'          \emph{$CritBestValue}  \tab   [numeric] theoretical best criterion value \cr
+#'          }
+#**************************************************************************************************
+Calibration_HBAN <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_TRANSFO=NULL,quiet=FALSE){
+
+
+##_____Arguments_check_____________________________________________________________________
+    if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
+    if(inherits(RunOptions,"RunOptions")==FALSE){ stop("RunOptions must be of class 'RunOptions' \n"); return(NULL); }  
+    if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+    if(inherits(CalibOptions,"CalibOptions")==FALSE){ stop("CalibOptions must be of class 'CalibOptions' \n"); return(NULL); }  
+    if(inherits(CalibOptions,"HBAN")==FALSE){ stop("CalibOptions must be of class 'HBAN' if Calibration_HBAN is used \n"); return(NULL); }  
+
+
+   ##_check_FUN_TRANSFO
+    if(is.null(FUN_TRANSFO)){
+      if(identical(FUN_MOD,RunModel_GR4H         )){ FUN_TRANSFO <- TransfoParam_GR4H     ; }
+      if(identical(FUN_MOD,RunModel_GR4J         )){ FUN_TRANSFO <- TransfoParam_GR4J     ; }
+      if(identical(FUN_MOD,RunModel_GR5J         )){ FUN_TRANSFO <- TransfoParam_GR5J     ; }
+      if(identical(FUN_MOD,RunModel_GR6J         )){ FUN_TRANSFO <- TransfoParam_GR6J     ; }
+      if(identical(FUN_MOD,RunModel_GR2M         )){ FUN_TRANSFO <- TransfoParam_GR2M     ; }
+      if(identical(FUN_MOD,RunModel_GR1A         )){ FUN_TRANSFO <- TransfoParam_GR1A     ; }
+      if(identical(FUN_MOD,RunModel_CemaNeige    )){ FUN_TRANSFO <- TransfoParam_CemaNeige; }
+      if(identical(FUN_MOD,RunModel_CemaNeigeGR4J) | identical(FUN_MOD,RunModel_CemaNeigeGR5J) | identical(FUN_MOD,RunModel_CemaNeigeGR6J)){
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR4J)){ FUN1 <- TransfoParam_GR4J; FUN2 <- TransfoParam_CemaNeige; }
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR5J)){ FUN1 <- TransfoParam_GR5J; FUN2 <- TransfoParam_CemaNeige; }
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR6J)){ FUN1 <- TransfoParam_GR6J; FUN2 <- TransfoParam_CemaNeige; }
+        FUN_TRANSFO <- function(ParamIn,Direction){
+          Bool <- is.matrix(ParamIn);
+          if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+          ParamOut <- NA*ParamIn;
+          NParam   <- ncol(ParamIn);
+          ParamOut[,         1:(NParam-2)] <- FUN1(ParamIn[,         1:(NParam-2)],Direction);
+          ParamOut[,(NParam-1):NParam    ] <- FUN2(ParamIn[,(NParam-1):NParam    ],Direction);
+          if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+          return(ParamOut);
+        }
+      }
+      if(is.null(FUN_TRANSFO)){ stop("FUN_TRANSFO was not found (in Calibration function) \n"); return(NULL);  }
+    }
+
+    ##_variables_initialisation 
+    ParamFinalR <- NULL; ParamFinalT <- NULL; CritFinal <- NULL;
+    NRuns <- 0; NIter <- 0;
+    if("StartParamDistrib" %in% names(CalibOptions)){ PrefilteringType <- 2; } else { PrefilteringType <- 1; }
+    if(PrefilteringType==1){ NParam <- ncol(CalibOptions$StartParamList); }
+    if(PrefilteringType==2){ NParam <- ncol(CalibOptions$StartParamDistrib); }
+    if(NParam>20){ stop("Calibration_HBAN can handle a maximum of 20 parameters \n"); return(NULL);  }
+    HistParamR    <- matrix(NA,nrow=500*NParam,ncol=NParam);
+    HistParamT    <- matrix(NA,nrow=500*NParam,ncol=NParam);
+    HistCrit      <- matrix(NA,nrow=500*NParam,ncol=1);
+    CritName      <- NULL;
+    CritBestValue <- NULL;
+    Multiplier    <- NULL;
+    CritOptim     <- +1E100;
+    ##_temporary_change_of_Outputs_Sim
+    RunOptions$Outputs_Sim <- RunOptions$Outputs_Cal;  ### this reduces the size of the matrix exchange with fortran and therefore speeds the calibration
+
+
+
+##_____Parameter_Grid_Screening____________________________________________________________
+
+
+    ##Definition_of_the_function_creating_all_possible_parameter_sets_from_different_values_for_each_parameter
+    ProposeCandidatesGrid <- function(DistribParam){
+      ##Managing_matrix_sizes
+        Nvalmax <- nrow(DistribParam);
+        NParam <- ncol(DistribParam);
+        ##we_add_columns_to_MatDistrib_until_it_has_20_columns
+        DistribParam2 <- matrix(NA,nrow=Nvalmax,ncol=20);
+        DistribParam2[1:Nvalmax,1:NParam] <- DistribParam;
+        ##we_check_the_number_of_values_to_test_for_each_param
+        NbDistrib <- rep(1,20);
+        for(iC in 1:20){ NbDistrib[iC] <- max( 1 , Nvalmax-sum(is.na(DistribParam2[,iC])) ); }
+      ##Loop_on_the_various_values_to_test ###(if 4 param and 3 values for each => 3^4 sets)
+      ##NB_we_always_do_20_loops ###which_is_here_the_max_number_of_param_that_can_be_optimised
+        VECT <- NULL;
+        for(iL01 in 1:NbDistrib[01]){ for(iL02 in 1:NbDistrib[02]){ for(iL03 in 1:NbDistrib[03]){ for(iL04 in 1:NbDistrib[04]){ for(iL05 in 1:NbDistrib[05]){ 
+        for(iL06 in 1:NbDistrib[06]){ for(iL07 in 1:NbDistrib[07]){ for(iL08 in 1:NbDistrib[08]){ for(iL09 in 1:NbDistrib[09]){ for(iL10 in 1:NbDistrib[10]){
+        for(iL11 in 1:NbDistrib[11]){ for(iL12 in 1:NbDistrib[12]){ for(iL13 in 1:NbDistrib[13]){ for(iL14 in 1:NbDistrib[14]){ for(iL15 in 1:NbDistrib[15]){ 
+        for(iL16 in 1:NbDistrib[16]){ for(iL17 in 1:NbDistrib[17]){ for(iL18 in 1:NbDistrib[18]){ for(iL19 in 1:NbDistrib[19]){ for(iL20 in 1:NbDistrib[20]){
+          VECT <- c(VECT,                         
+            DistribParam2[iL01,01],DistribParam2[iL02,02],DistribParam2[iL03,03],DistribParam2[iL04,04],DistribParam2[iL05,05],
+            DistribParam2[iL06,06],DistribParam2[iL07,07],DistribParam2[iL08,08],DistribParam2[iL09,09],DistribParam2[iL10,10],
+            DistribParam2[iL11,11],DistribParam2[iL12,12],DistribParam2[iL13,13],DistribParam2[iL14,14],DistribParam2[iL15,15],
+            DistribParam2[iL16,16],DistribParam2[iL17,17],DistribParam2[iL18,18],DistribParam2[iL19,19],DistribParam2[iL20,20]);
+        } } } } }
+        } } } } }
+        } } } } }
+        } } } } }
+        MAT <- matrix(VECT,ncol=20,byrow=TRUE)[,1:NParam];
+        if(is.matrix(MAT)==FALSE){ MAT <- cbind(MAT); }
+        Output <- NULL;
+        Output$NewCandidates <- MAT;
+        return(Output);
+    }
+
+
+    ##Creation_of_new_candidates_______________________________________________
+    if(PrefilteringType==1){ CandidatesParamR <- CalibOptions$StartParamList; }
+    if(PrefilteringType==2){ DistribParamR <- CalibOptions$StartParamDistrib; DistribParamR[,!CalibOptions$OptimParam] <- NA; CandidatesParamR <- ProposeCandidatesGrid(DistribParamR)$NewCandidates; }
+    ##Remplacement_of_non_optimised_values_____________________________________
+    CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam]; return(x); });
+    if(NParam>1){ CandidatesParamR <- t(CandidatesParamR); } else { CandidatesParamR <- cbind(CandidatesParamR); }
+
+    ##Loop_to_test_the_various_candidates______________________________________
+    iNewOptim <- 0;
+    Ncandidates <- nrow(CandidatesParamR);    
+    if(!quiet & Ncandidates>1){
+      if(PrefilteringType==1){ cat(paste("\t List-Screening in progress (",sep="")); }
+      if(PrefilteringType==2){ cat(paste("\t Grid-Screening in progress (",sep="")); }
+      cat("0%");
+    }
+    for(iNew in 1:nrow(CandidatesParamR)){
+      if(!quiet & Ncandidates>1){
+        for(k in c(2,4,6,8)){ if(iNew==round(k/10*Ncandidates)){ cat(paste(" ",10*k,"%",sep="")); } } 
+      }
+      ##Model_run
+      Param <- CandidatesParamR[iNew,];
+      OutputsModel <- FUN_MOD(InputsModel,RunOptions,Param);
+      ##Calibration_criterion_computation
+      OutputsCrit <- FUN_CRIT(InputsCrit,OutputsModel);      
+      if(!is.na(OutputsCrit$CritValue)){ if(OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim){
+        CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier;
+        iNewOptim <- iNew;
+      } }
+      ##Storage_of_crit_info
+      if(is.null(CritName) | is.null(CritBestValue) | is.null(Multiplier)){
+        CritName      <- OutputsCrit$CritName;
+        CritBestValue <- OutputsCrit$CritBestValue;
+        Multiplier    <- OutputsCrit$Multiplier;
+      }
+    }
+    if(!quiet & Ncandidates>1){ cat(" 100%) \n"); }
+	  
+
+    ##End_of_first_step_Parameter_Screening____________________________________
+    ParamStartR <- CandidatesParamR[iNewOptim,]; if(!is.matrix(ParamStartR)){ ParamStartR <- matrix(ParamStartR,nrow=1); }
+    ParamStartT <- FUN_TRANSFO(ParamStartR,"RT");
+	  CritStart   <- CritOptim;
+    NRuns       <- NRuns+nrow(CandidatesParamR);
+    if(!quiet){
+      if(Ncandidates> 1){ cat(paste("\t Screening completed (",NRuns," runs): \n",sep=""));  }
+      if(Ncandidates==1){ cat(paste("\t Starting point for steepest-descent local search: \n",sep="")); }
+      cat(paste("\t     Param = ",paste(formatC(ParamStartR,format="f",width=8,digits=3),collapse=" , "),"\n",sep=""));
+      cat(paste("\t     Crit ",format(CritName,width=12,justify="left")," = ",formatC(CritStart*Multiplier,format="f",digits=4),"\n",sep=""));
+    }
+    ##Results_archiving________________________________________________________
+    HistParamR[1,] <- ParamStartR;
+    HistParamT[1,] <- ParamStartT;
+    HistCrit[1,]   <- CritStart;
+
+
+
+
+##_____Steepest_Descent_Local_Search_______________________________________________________
+
+
+    ##Definition_of_the_function_creating_new_parameter_sets_through_a_step_by_step_progression_procedure
+    ProposeCandidatesLoc <- function(NewParamOptimT,OldParamOptimT,RangesT,OptimParam,Pace){
+      ##Format_checking
+      if(nrow(NewParamOptimT)!=1 | nrow(OldParamOptimT)!=1){ stop("each input set must be a matrix of one single line \n"); return(NULL); }
+      if(ncol(NewParamOptimT)!=ncol(OldParamOptimT) | ncol(NewParamOptimT)!=length(OptimParam)){ stop("each input set must have the same number of values \n"); return(NULL); }
+      ##Proposal_of_new_parameter_sets ###(local search providing 2*NParam-1 new sets)
+      NParam <- ncol(NewParamOptimT);
+      VECT <- NULL;
+      for(I in 1:NParam){
+        ##We_check_that_the_current_parameter_should_indeed_be_optimised
+        if(OptimParam[I]==TRUE){
+          for(J in 1:2){
+            Sign <- 2*J-3;   #Sign can be equal to -1 or +1
+            ##We_define_the_new_potential_candidate
+            Add <- TRUE;
+            PotentialCandidateT <- NewParamOptimT;
+            PotentialCandidateT[1,I] <- NewParamOptimT[I]+Sign*Pace;
+            ##If_we_exit_the_range_of_possible_values_we_go_back_on_the_boundary
+            if(PotentialCandidateT[1,I]<RangesT[1,I]){ PotentialCandidateT[1,I] <- RangesT[1,I]; }
+            if(PotentialCandidateT[1,I]>RangesT[2,I]){ PotentialCandidateT[1,I] <- RangesT[2,I]; }
+            ##We_check_the_set_is_not_outside_the_range_of_possible_values
+             if( NewParamOptimT[I]==RangesT[1,I] & Sign<0 ){ Add <- FALSE; }
+             if( NewParamOptimT[I]==RangesT[2,I] & Sign>0 ){ Add <- FALSE; }
+            ##We_check_that_this_set_has_not_been_tested_during_the_last_iteration
+            if(identical(PotentialCandidateT,OldParamOptimT)){ Add <- FALSE; }
+            ##We_add_the_candidate_to_our_list
+            if(Add==TRUE){ VECT <- c(VECT,PotentialCandidateT); }
+          }
+        }
+      }
+      Output <- NULL;
+      Output$NewCandidatesT <- matrix(VECT,ncol=NParam,byrow=TRUE);
+      return(Output);
+    }
+      
+
+    ##Initialisation_of_variables
+    if(!quiet){ 
+      cat("\t Steepest-descent local search in progress \n"); 
+    }
+    Pace <- 0.64;
+    PaceDiag <- rep(0,NParam);
+    CLG <- 0.7^(1/NParam);
+    Compt <- 0;
+    CritOptim <- CritStart;
+    ##Conversion_of_real_parameter_values
+    RangesR <- CalibOptions$SearchRanges;
+    RangesT <- FUN_TRANSFO(RangesR,"RT");
+    NewParamOptimT <- ParamStartT;
+    OldParamOptimT <- ParamStartT;
+
+
+    ##START_LOOP_ITER_________________________________________________________
+    for(ITER in 1:(100*NParam)){
+
+
+    ##Exit_loop_when_Pace_becomes_too_small___________________________________
+    if(Pace<0.01){ break; }
+  
+
+    ##Creation_of_new_candidates______________________________________________
+    CandidatesParamT <- ProposeCandidatesLoc(NewParamOptimT,OldParamOptimT,RangesT,CalibOptions$OptimParam,Pace)$NewCandidatesT;
+    CandidatesParamR <- FUN_TRANSFO(CandidatesParamT,"TR");
+    ##Remplacement_of_non_optimised_values_____________________________________
+    CandidatesParamR <- apply(CandidatesParamR,1,function(x){ x[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam]; return(x); });
+    if(NParam>1){ CandidatesParamR <- t(CandidatesParamR); } else { CandidatesParamR <- cbind(CandidatesParamR); }
+
+
+    ##Loop_to_test_the_various_candidates_____________________________________
+    iNewOptim <- 0;
+    for(iNew in 1:nrow(CandidatesParamR)){
+      ##Model_run
+      Param <- CandidatesParamR[iNew,];
+      OutputsModel <- FUN_MOD(InputsModel,RunOptions,Param);
+      ##Calibration_criterion_computation
+      OutputsCrit <- FUN_CRIT(InputsCrit,OutputsModel);      
+      if(!is.na(OutputsCrit$CritValue)){ if(OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim){
+        CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier;
+        iNewOptim <- iNew;
+      } }
+    }
+    NRuns <- NRuns+nrow(CandidatesParamR);
+
+
+    ##When_a_progress_has_been_achieved_______________________________________
+    if(iNewOptim!=0){
+      ##We_store_the_optimal_set
+      OldParamOptimT <- NewParamOptimT;
+      NewParamOptimT <- matrix(CandidatesParamT[iNewOptim,1:NParam],nrow=1);
+      Compt <- Compt+1;
+      ##When_necessary_we_increase_the_pace ### if_successive_progress_occur_in_a_row
+      if(Compt>2*NParam){
+        Pace <- Pace*2;
+        Compt <- 0;
+      }
+      ##We_update_PaceDiag
+      VectPace <- NewParamOptimT-OldParamOptimT;
+      for(iC in 1:NParam){ if(CalibOptions$OptimParam[iC]==TRUE){ 
+        if(VectPace[iC]!=0){ PaceDiag[iC] <- CLG*PaceDiag[iC]+(1-CLG)*VectPace[iC]; }
+        if(VectPace[iC]==0){ PaceDiag[iC] <- CLG*PaceDiag[iC]; }
+      } }
+    } else {
+    ##When_no_progress_has_been_achieved_we_decrease_the_pace_________________
+      Pace <- Pace/2;
+      Compt <- 0;
+    }
+
+
+    ##Test_of_an_additional_candidate_using_diagonal_progress_________________
+    if(ITER>4*NParam){
+
+        NRuns <- NRuns+1;
+        iNewOptim <- 0; iNew <- 1;
+        CandidatesParamT <- NewParamOptimT+PaceDiag;  if(!is.matrix(CandidatesParamT)){ CandidatesParamT <- matrix(CandidatesParamT,nrow=1); }
+        ##If_we_exit_the_range_of_possible_values_we_go_back_on_the_boundary
+        for(iC in 1:NParam){ if(CalibOptions$OptimParam[iC]==TRUE){
+          if(CandidatesParamT[iNew,iC]<RangesT[1,iC]){ CandidatesParamT[iNew,iC] <- RangesT[1,iC]; }
+          if(CandidatesParamT[iNew,iC]>RangesT[2,iC]){ CandidatesParamT[iNew,iC] <- RangesT[2,iC]; }
+        } }
+        CandidatesParamR <- FUN_TRANSFO(CandidatesParamT,"TR");
+        ##Model_run
+        Param <- CandidatesParamR[iNew,];
+        OutputsModel <- FUN_MOD(InputsModel,RunOptions,Param);
+        ##Calibration_criterion_computation
+        OutputsCrit <- FUN_CRIT(InputsCrit,OutputsModel);      
+        if(OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim){
+          CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier;
+          iNewOptim <- iNew;
+        }
+        ##When_a_progress_has_been_achieved
+        if(iNewOptim!=0){
+          OldParamOptimT <- NewParamOptimT;
+          NewParamOptimT <- matrix(CandidatesParamT[iNewOptim,1:NParam],nrow=1);
+        }
+
+    }
+    
+
+    ##Results_archiving_______________________________________________________
+    NewParamOptimR      <- FUN_TRANSFO(NewParamOptimT,"TR");
+    HistParamR[ITER+1,] <- NewParamOptimR;
+    HistParamT[ITER+1,] <- NewParamOptimT;
+    HistCrit[ITER+1,]   <- CritOptim;
+    ### if(!quiet){ cat(paste("\t     Iter ",formatC(ITER,format="d",width=3),"    Crit ",formatC(CritOptim,format="f",digits=4),"    Pace ",formatC(Pace,format="f",digits=4),"\n",sep="")); }
+
+
+
+    } ##END_LOOP_ITER_________________________________________________________
+    ITER <- ITER-1;
+    
+
+    ##Case_when_the_starting_parameter_set_remains_the_best_solution__________
+    if(CritOptim==CritStart & !quiet){ 
+      cat("\t No progress achieved \n"); 
+    }
+    
+    ##End_of_Steepest_Descent_Local_Search____________________________________
+    ParamFinalR <- NewParamOptimR;
+    ParamFinalT <- NewParamOptimT;
+    CritFinal   <- CritOptim;
+    NIter       <- 1+ITER;
+    if(!quiet){ 
+      cat(paste("\t Calibration completed (",NIter," iterations, ",NRuns," runs): \n",sep=""));
+      cat(paste("\t     Param = ",paste(formatC(ParamFinalR,format="f",width=8,digits=3),collapse=" , "),"\n",sep=""));
+      cat(paste("\t     Crit ",format(CritName,width=12,justify="left")," = ",formatC(CritFinal*Multiplier,format="f",digits=4),"\n",sep=""));
+    }
+    ##Results_archiving_______________________________________________________
+  	HistParamR <- cbind(HistParamR[1:NIter,]); colnames(HistParamR) <- paste("Param",1:NParam,sep="");
+  	HistParamT <- cbind(HistParamT[1:NIter,]); colnames(HistParamT) <- paste("Param",1:NParam,sep="");
+	  HistCrit   <- cbind(HistCrit[1:NIter,]);   ###colnames(HistCrit) <- paste("HistCrit");
+
+    BoolCrit_Actual <- InputsCrit$BoolCrit; BoolCrit_Actual[OutputsCrit$Ind_notcomputed] <- FALSE;
+    MatBoolCrit <- cbind( InputsCrit$BoolCrit , BoolCrit_Actual );
+    colnames(MatBoolCrit) <- c("BoolCrit_Requested","BoolCrit_Actual");
+
+
+##_____Output______________________________________________________________________________
+    OutputsCalib <- list(as.double(ParamFinalR),CritFinal*Multiplier,NIter,NRuns,HistParamR,HistCrit*Multiplier,MatBoolCrit,CritName,CritBestValue);
+    names(OutputsCalib) <- c("ParamFinalR","CritFinal","NIter","NRuns","HistParamR","HistCrit","MatBoolCrit","CritName","CritBestValue");
+    class(OutputsCalib) <- c("OutputsCalib","HBAN");
+    return(OutputsCalib);
+
+
+
+}
+
+
+
+  
+
diff --git a/R/Calibration_optim.R b/R/Calibration_optim.R
new file mode 100644
index 00000000..154d6b5d
--- /dev/null
+++ b/R/Calibration_optim.R
@@ -0,0 +1,152 @@
+#*************************************************************************************************
+#' Calibration algorithm which minimises the error criterion. \cr
+#' \cr
+#' The algorithm is based on the "optim" function from the "stats" R-package 
+#' (using method="L-BFGS-B", i.e. a local optimization quasi-Newton method).
+#'
+#' To optimise the exploration of the parameter space, transformation functions are used to convert
+#' the model parameters. This is done using the TransfoParam functions.
+#*************************************************************************************************
+#' @title  Calibration algorithm which minimises the error criterion using the stats::optim function
+#' @author Laurent Coron (August 2013)
+#' @example tests/example_Calibration_optim.R
+#' @seealso \code{\link{Calibration}}, \code{\link{Calibration_HBAN}},
+#'          \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, 
+#'          \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  InputsCrit          [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  CalibOptions        [object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  FUN_CRIT            [function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)
+#' @param  FUN_TRANSFO         (optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined
+#' @param  quiet               (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$ParamFinalR  }  \tab   [numeric] parameter set obtained at the end of the calibration \cr
+#'          \emph{$CritFinal    }  \tab   [numeric] error criterion obtained at the end of the calibration \cr
+#'          \emph{$Nruns        }  \tab   [numeric] number of model runs done during the calibration \cr
+#'          \emph{$CritName     }  \tab   [character] name of the calibration criterion \cr
+#'          \emph{$CritBestValue}  \tab   [numeric] theoretical best criterion value \cr
+#'          }
+#**************************************************************************************************
+Calibration_optim <- function(InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_TRANSFO=NULL,quiet=FALSE){
+    
+
+    ##_check_class
+    if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
+    if(inherits(RunOptions,"RunOptions")==FALSE){ stop("RunOptions must be of class 'RunOptions' \n"); return(NULL); }  
+    if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+    if(inherits(CalibOptions,"CalibOptions")==FALSE){ stop("CalibOptions must be of class 'CalibOptions' \n"); return(NULL); }  
+    if(inherits(CalibOptions,"optim")==FALSE){ stop("CalibOptions must be of class 'optim' if Calibration_optim is used \n"); return(NULL); }  
+
+
+    ##_check_FUN_TRANSFO
+    if(is.null(FUN_TRANSFO)){
+      if(identical(FUN_MOD,RunModel_GR4H         )){ FUN_TRANSFO <- TransfoParam_GR4H     ; }
+      if(identical(FUN_MOD,RunModel_GR4J         )){ FUN_TRANSFO <- TransfoParam_GR4J     ; }
+      if(identical(FUN_MOD,RunModel_GR5J         )){ FUN_TRANSFO <- TransfoParam_GR5J     ; }
+      if(identical(FUN_MOD,RunModel_GR6J         )){ FUN_TRANSFO <- TransfoParam_GR6J     ; }
+      if(identical(FUN_MOD,RunModel_GR2M         )){ FUN_TRANSFO <- TransfoParam_GR2M     ; }
+      if(identical(FUN_MOD,RunModel_GR1A         )){ FUN_TRANSFO <- TransfoParam_GR1A     ; }
+      if(identical(FUN_MOD,RunModel_CemaNeige    )){ FUN_TRANSFO <- TransfoParam_CemaNeige; }
+      if(identical(FUN_MOD,RunModel_CemaNeigeGR4J) | identical(FUN_MOD,RunModel_CemaNeigeGR5J) | identical(FUN_MOD,RunModel_CemaNeigeGR6J)){
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR4J)){ FUN1 <- TransfoParam_GR4J; FUN2 <- TransfoParam_CemaNeige; }
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR5J)){ FUN1 <- TransfoParam_GR5J; FUN2 <- TransfoParam_CemaNeige; }
+        if(identical(FUN_MOD,RunModel_CemaNeigeGR6J)){ FUN1 <- TransfoParam_GR6J; FUN2 <- TransfoParam_CemaNeige; }
+        FUN_TRANSFO <- function(ParamIn,Direction){
+          Bool <- is.matrix(ParamIn);
+          if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+          ParamOut <- NA*ParamIn;
+          NParam   <- ncol(ParamIn);
+          ParamOut[,         1:(NParam-2)] <- FUN1(ParamIn[,         1:(NParam-2)],Direction);
+          ParamOut[,(NParam-1):NParam    ] <- FUN2(ParamIn[,(NParam-1):NParam    ],Direction);
+          if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+          return(ParamOut);
+        }
+      }
+      if(is.null(FUN_TRANSFO)){ stop("FUN_TRANSFO was not found (in Calibration function) \n"); return(NULL);  }
+    }
+
+
+    ##_RunModelAndCrit
+    RunModelAndCrit <- function(par,InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_TRANSFO){
+        ParamT <- NA*CalibOptions$FixedParam;
+        ParamT[CalibOptions$OptimParam] <- par;
+        Param <- FUN_TRANSFO(ParamIn=ParamT,Direction="TR");
+        Param[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam];
+        OutputsModel <- FUN_MOD(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param);
+        OutputsCrit <- FUN_CRIT(InputsCrit=InputsCrit,OutputsModel=OutputsModel);   
+        return(OutputsCrit$CritValue*OutputsCrit$Multiplier);
+    }
+
+
+    ##_temporary_change_of_Outputs_Sim
+    RunOptions$Outputs_Sim <- RunOptions$Outputs_Cal;  ### this reduces the size of the matrix exchange with fortran and therefore speeds the calibration
+    ##_screenPrint
+    if(!quiet){ 
+      cat(paste("\t Calibration in progress (function optim from the stats package) \n",sep=""));
+    }
+    
+
+    ##_lower_and_upper_limit_values (transformed)
+    RangesR <- CalibOptions$SearchRanges;
+    RangesT <- FUN_TRANSFO(RangesR,"RT");
+    lower   <- RangesT[1,CalibOptions$OptimParam];
+    upper   <- RangesT[2,CalibOptions$OptimParam];
+
+    ##_starting_values (transformed)
+    ParamStartT <- FUN_TRANSFO(CalibOptions$StartParam,"RT");
+    par_start   <- ParamStartT[CalibOptions$OptimParam]; 
+
+
+    ##_calibration
+    RESULT <- optim(par=par_start,fn=RunModelAndCrit,gr=NULL,
+                InputsModel,RunOptions,InputsCrit,CalibOptions,FUN_MOD,FUN_CRIT,FUN_TRANSFO,  ## arguments for the RunModelAndCrit function (other than par)
+                method="L-BFGS-B",lower=lower,upper=upper,control=list(),hessian=FALSE)
+    
+
+    ##_outputs_preparation
+    ParamFinalT <- NA*ParamStartT;
+    ParamFinalT[CalibOptions$OptimParam] <- RESULT$par;
+    ParamFinalR <- FUN_TRANSFO(ParamFinalT,"TR");
+    ParamFinalR[!CalibOptions$OptimParam] <- CalibOptions$FixedParam[!CalibOptions$OptimParam];  
+    CritFinal <- RESULT$value;
+
+    ##_storage_of_crit_info
+    OutputsModel  <- FUN_MOD(InputsModel=InputsModel,RunOptions=RunOptions,Param=ParamFinalR);
+    OutputsCrit   <- FUN_CRIT(InputsCrit=InputsCrit,OutputsModel=OutputsModel);   
+    CritName      <- OutputsCrit$CritName;
+    CritBestValue <- OutputsCrit$CritBestValue;
+    Multiplier    <- OutputsCrit$Multiplier;
+
+    ##_screenPrint
+    if(!quiet){ 
+      if(RESULT$convergence==0){ 
+        cat(paste("\t Calibration completed: \n",sep=""));
+        cat(paste("\t     Param = ",paste(formatC(ParamFinalR,format="f",width=8,digits=3),collapse=" , "),"\n",sep=""));
+        cat(paste("\t     Crit ",format(CritName,width=12,justify="left")," = ",formatC(CritFinal*Multiplier,format="f",digits=4),"\n",sep=""));
+      } else {
+        cat(paste("\t Calibration failed: \n",sep=""));
+        cat(paste("\t     ",RESULT$message,sep=""));
+      }
+    }
+    
+    
+    ##_function_output
+    OutputsCalib <- list(as.double(ParamFinalR),CritFinal*Multiplier,as.integer(RESULT$counts[1]),CritName,CritBestValue);
+    names(OutputsCalib) <- c("ParamFinalR","CritFinal","NRuns","CritName","CritBestValue");
+    class(OutputsCalib) <- c("OutputsCalib","optim");
+    return(OutputsCalib);
+
+
+}
+
+
+
+
diff --git a/R/CreateCalibOptions.R b/R/CreateCalibOptions.R
new file mode 100644
index 00000000..72fec803
--- /dev/null
+++ b/R/CreateCalibOptions.R
@@ -0,0 +1,242 @@
+#*************************************************************************************************
+#' Creation of the CalibOptions object required to the Calibration functions.
+#'
+#' Users wanting to use FUN_MOD, FUN_CALIB or FUN_TRANSFO functions that are not included in 
+#' the package must create their own CalibOptions object accordingly.
+#*************************************************************************************************
+#' @title  Creation of the CalibOptions object required to the Calibration functions
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{Calibration}}, \code{\link{RunModel}}
+#' @example tests/example_Calibration.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  FUN_CALIB           (optional) [function] calibration algorithm function (e.g. Calibration_HBAN, Calibration_optim), default=Calibration_HBAN
+#' @param  FUN_TRANSFO         (optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined
+#' @param  OptimParam          (optional) [boolean] vector of booleans indicating which parameters must be optimised (NParam columns, 1 line) 
+#' @param  FixedParam          (optional) [numeric] vector giving the values to allocate to non-optimised parameter values (NParam columns, 1 line)
+#' @param  SearchRanges        (optional) [numeric] matrix giving the ranges of real parameters (NParam columns, 2 lines)
+#'                             \tabular{llllll}{
+#'                                           \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+#'                                  [1,]     \tab    0   \tab   -1   \tab    0   \tab  ...    \tab  0.0 \cr
+#'                                  [2,]     \tab 3000   \tab   +1   \tab  100   \tab  ...    \tab  3.0 \cr
+#'                             }
+#' @param  StartParam          (optional) [numeric] vector of parameter values used to start global search calibration procedure (e.g. Calibration_optim)
+#'                             \tabular{llllll}{
+#'                                           \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+#'                                           \tab 1000   \tab -0.5   \tab   22   \tab  ...    \tab  1.1 \cr
+#'                             }
+#' @param  StartParamList      (optional) [numeric] matrix of parameter sets used for grid-screening calibration procedure (values in columns, sets in line)
+#'                             \tabular{llllll}{
+#'                                           \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+#'                                  [set1]   \tab  800   \tab -0.7   \tab   25   \tab  ...    \tab  1.0 \cr
+#'                                  [set2]   \tab 1000   \tab -0.5   \tab   22   \tab  ...    \tab  1.1 \cr
+#'                                  [...]    \tab  ...   \tab  ...   \tab  ...   \tab  ...    \tab  ... \cr
+#'                                  [set n]  \tab  200   \tab -0.3   \tab   17   \tab  ...    \tab  1.0 \cr
+#'                             }
+#' @param  StartParamDistrib   (optional) [numeric] matrix of parameter values used for grid-screening calibration procedure (values in columns, percentiles in line) \cr
+#'                             \tabular{llllll}{
+#'                                           \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+#'                                  [value1] \tab  800   \tab -0.7   \tab   25   \tab  ...    \tab  1.0 \cr
+#'                                  [value2] \tab 1000   \tab   NA   \tab   50   \tab  ...    \tab  1.2 \cr
+#'                                  [value3] \tab 1200   \tab   NA   \tab   NA   \tab  ...    \tab  1.6 \cr
+#'                             }
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] object of class \emph{CalibOptions} containing the data required to evaluate the model outputs; it can include the following:
+#'          \tabular{ll}{
+#'          \emph{$OptimParam       }  \tab   [boolean] vector of booleans indicating which parameters must be optimised \cr
+#'          \emph{$FixedParam       }  \tab   [numeric] vector giving the values to allocate to non-optimised parameter values \cr
+#'          \emph{$SearchRanges     }  \tab   [numeric] matrix giving the ranges of real parameters \cr
+#'          \emph{$StartParam       }  \tab   [numeric] vector of parameter values used to start global search calibration procedure \cr
+#'          \emph{$StartParamList   }  \tab   [numeric] matrix of parameter sets used for grid-screening calibration procedure \cr
+#'          \emph{$StartParamDistrib}  \tab   [numeric] matrix of parameter values used for grid-screening calibration procedure \cr
+#'          }
+#**************************************************************************************************
+CreateCalibOptions <- function(FUN_MOD,FUN_CALIB=Calibration_HBAN,FUN_TRANSFO=NULL,OptimParam=NULL,FixedParam=NULL,SearchRanges=NULL,
+                               StartParam=NULL,StartParamList=NULL,StartParamDistrib=NULL){
+
+
+  ObjectClass <- NULL;
+
+  ##check_FUN_MOD
+    BOOL <- FALSE;
+    if(identical(FUN_MOD,RunModel_GR4H         )){ ObjectClass <- c(ObjectClass,"GR4H"                 ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_GR4J         )){ ObjectClass <- c(ObjectClass,"GR4J"         ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_GR5J         )){ ObjectClass <- c(ObjectClass,"GR5J"         ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_GR6J         )){ ObjectClass <- c(ObjectClass,"GR6J"         ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_GR2M         )){ ObjectClass <- c(ObjectClass,"GR2M"                 ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_GR1A         )){ ObjectClass <- c(ObjectClass,"GR1A"                 ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_CemaNeige    )){ ObjectClass <- c(ObjectClass,"CemaNeige"    ); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_CemaNeigeGR4J)){ ObjectClass <- c(ObjectClass,"CemaNeigeGR4J"); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_CemaNeigeGR5J)){ ObjectClass <- c(ObjectClass,"CemaNeigeGR5J"); BOOL <- TRUE; }
+    if(identical(FUN_MOD,RunModel_CemaNeigeGR6J)){ ObjectClass <- c(ObjectClass,"CemaNeigeGR6J"); BOOL <- TRUE; }
+    if(!BOOL){ stop("incorrect FUN_MOD for use in CreateCalibOptions \n"); return(NULL); } 
+
+  ##check_FUN_CALIB
+    BOOL <- FALSE;
+    if(identical(FUN_CALIB,Calibration_HBAN  )){ ObjectClass <- c(ObjectClass,"HBAN"  ); BOOL <- TRUE; }
+    if(identical(FUN_CALIB,Calibration_optim )){ ObjectClass <- c(ObjectClass,"optim" ); BOOL <- TRUE; }
+    if(!BOOL){ stop("incorrect FUN_CALIB for use in CreateCalibOptions \n"); return(NULL); } 
+
+  ##check_FUN_TRANSFO
+    if(is.null(FUN_TRANSFO)){
+      ##_set_FUN1
+      if(identical(FUN_MOD,RunModel_GR4H     )                                             ){ FUN1 <- TransfoParam_GR4H     ; }
+      if(identical(FUN_MOD,RunModel_GR4J     ) | identical(FUN_MOD,RunModel_CemaNeigeGR4J) ){ FUN1 <- TransfoParam_GR4J     ; }
+      if(identical(FUN_MOD,RunModel_GR5J     ) | identical(FUN_MOD,RunModel_CemaNeigeGR5J) ){ FUN1 <- TransfoParam_GR5J     ; }
+      if(identical(FUN_MOD,RunModel_GR6J     ) | identical(FUN_MOD,RunModel_CemaNeigeGR6J) ){ FUN1 <- TransfoParam_GR6J     ; }
+      if(identical(FUN_MOD,RunModel_GR2M     )                                             ){ FUN1 <- TransfoParam_GR2M     ; }
+      if(identical(FUN_MOD,RunModel_GR1A     )                                             ){ FUN1 <- TransfoParam_GR1A     ; }
+      if(identical(FUN_MOD,RunModel_CemaNeige)                                             ){ FUN1 <- TransfoParam_CemaNeige; }
+      if(is.null(FUN1)){ stop("FUN1 was not found \n"); return(NULL);  }
+      ##_set_FUN2
+      FUN2 <- TransfoParam_CemaNeige;
+      ##_set_FUN_TRANSFO
+      if(sum(ObjectClass %in% c("GR4H","GR4J","GR5J","GR6J","GR2M","GR1A","CemaNeige"))>0){
+        FUN_TRANSFO <- FUN1; 
+      } else {
+        FUN_TRANSFO <- function(ParamIn,Direction){
+          Bool <- is.matrix(ParamIn);
+          if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+          ParamOut <- NA*ParamIn;
+          NParam   <- ncol(ParamIn);
+          if(NParam <= 3){
+          ParamOut[,         1:(NParam-2)] <- FUN1(cbind(ParamIn[,1:(NParam-2)]),Direction);
+          } else {
+          ParamOut[,         1:(NParam-2)] <- FUN1(ParamIn[,1:(NParam-2)     ],Direction); }
+          ParamOut[,(NParam-1):NParam    ] <- FUN2(ParamIn[,(NParam-1):NParam],Direction);
+          if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+          return(ParamOut);
+        }
+      }
+    }
+    if(is.null(FUN_TRANSFO)){ stop("FUN_TRANSFO was not found \n"); return(NULL);  }
+
+  ##NParam
+    if("GR4H"          %in% ObjectClass){ NParam <- 4; }
+    if("GR4J"          %in% ObjectClass){ NParam <- 4; }
+    if("GR5J"          %in% ObjectClass){ NParam <- 5; }
+    if("GR6J"          %in% ObjectClass){ NParam <- 6; }
+    if("GR2M"          %in% ObjectClass){ NParam <- 2; }
+    if("GR1A"          %in% ObjectClass){ NParam <- 1; }
+    if("CemaNeige"     %in% ObjectClass){ NParam <- 2; }
+    if("CemaNeigeGR4J" %in% ObjectClass){ NParam <- 6; }
+    if("CemaNeigeGR5J" %in% ObjectClass){ NParam <- 7; }
+    if("CemaNeigeGR6J" %in% ObjectClass){ NParam <- 8; }
+
+  ##check_OptimParam
+    if(is.null(OptimParam)){
+      OptimParam <- rep(TRUE,NParam);
+    } else {
+      if(!is.vector(OptimParam)    ){ stop("OptimParam must be a vector of booleans \n"); return(NULL);  }
+      if(length(OptimParam)!=NParam){ stop("Incompatibility between OptimParam length and FUN_MOD \n"); return(NULL);  }
+      if(!is.logical(OptimParam)   ){ stop("OptimParam must be a vector of booleans \n"); return(NULL);  }
+    }
+
+  ##check_FixedParam
+    if(is.null(FixedParam)){
+      FixedParam <- rep(NA,NParam);
+    } else {
+      if(!is.vector(FixedParam)              ){ stop("FixedParam must be a vector \n"); return(NULL);  }
+      if(length(FixedParam)!=NParam          ){ stop("Incompatibility between OptimParam length and FUN_MOD \n"); return(NULL);  }
+      if(sum(!OptimParam)>0){
+      if(!is.numeric(FixedParam[!OptimParam])){ stop("if OptimParam[i]==FALSE, FixedParam[i] must be a numeric value \n"); return(NULL);  } }
+    }
+
+  ##check_SearchRanges
+    if(is.null(SearchRanges)){
+      ParamT <- matrix(c(rep(-9.99,NParam),rep(+9.99,NParam)),ncol=NParam,byrow=TRUE);
+      SearchRanges <- TransfoParam(ParamIn=ParamT,Direction="TR",FUN_TRANSFO=FUN_TRANSFO);
+    } else {
+      if(!is.matrix( SearchRanges)  ){ stop("SearchRanges must be a matrix \n"); return(NULL);  }
+      if(!is.numeric(SearchRanges)  ){ stop("SearchRanges must be a matrix of numeric values \n"); return(NULL);  }
+      if(sum(is.na(SearchRanges))!=0){ stop("SearchRanges must not include NA values \n"); return(NULL);  }
+      if(nrow(SearchRanges)!=2      ){ stop("SearchRanges must have 2 rows \n"); return(NULL);  }
+      if(ncol(SearchRanges)!=NParam ){ stop("Incompatibility between SearchRanges ncol and FUN_MOD \n"); return(NULL);  }
+    }
+
+  ##check_StartParamList_and_StartParamDistrib__default_values
+    if( ("HBAN"  %in% ObjectClass & is.null(StartParamList) & is.null(StartParamDistrib)) |
+        ("optim" %in% ObjectClass & is.null(StartParam)) ){
+
+      if("GR4H"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                             +3.90, -0.90, +4.10, -8.70,
+                             +4.50, -0.10, +5.00, -8.10),ncol=NParam,byrow=TRUE); }
+      if("GR4J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                             +3.90, -0.90, +4.10, -8.70,
+                             +4.50, -0.10, +5.00, -8.10),ncol=NParam,byrow=TRUE); }
+      if("GR5J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -1.70, +3.30, -9.10, -0.70,
+                             +3.90, -0.60, +4.10, -8.70, +0.30,
+                             +4.50, -0.10, +5.00, -8.10, +0.50),ncol=NParam,byrow=TRUE); }
+      if("GR6J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -1.00, +3.30, -9.10, -0.90, +3.00,
+                             +3.90, -0.50, +4.10, -8.70, +0.10, +4.00,
+                             +4.50, +0.50, +5.00, -8.10, +1.10, +5.00),ncol=NParam,byrow=TRUE); }
+      if("GR2M"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -5.00,
+                             +3.90, +0.00,
+                             +4.50, +5.00),ncol=NParam,byrow=TRUE); }
+      if("GR1A"%in% ObjectClass){ 
+        ParamT <- matrix( c( -5.00,
+                             +0.00,
+                             +5.00),ncol=NParam,byrow=TRUE); }
+      if("CemaNeige"%in% ObjectClass){ 
+        ParamT <- matrix( c( -6.26, +0.55,
+                             -2.13, +0.92,
+                             +4.86, +1.40),ncol=NParam,byrow=TRUE); }
+      if("CemaNeigeGR4J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -2.00, +3.40, -9.10, -6.26, +0.55,
+                             +3.90, -0.90, +4.10, -8.70, -2.13, +0.92,
+                             +4.50, -0.10, +5.00, -8.10, +4.86, +1.40),ncol=NParam,byrow=TRUE); }
+      if("CemaNeigeGR5J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -1.70, +3.30, -9.10, -0.70, -6.26, +0.55,
+                             +3.90, -0.60, +4.10, -8.70, +0.30, -2.13, +0.92,
+                             +4.50, -0.10, +5.00, -8.10, +0.50, +4.86, +1.40),ncol=NParam,byrow=TRUE); }
+      if("CemaNeigeGR6J"%in% ObjectClass){ 
+        ParamT <- matrix( c( +3.60, -1.00, +3.30, -9.10, -0.90, +3.00, -6.26, +0.55,
+                             +3.90, -0.50, +4.10, -8.70, +0.10, +4.00, -2.13, +0.92,
+                             +4.50, +0.50, +5.00, -8.10, +1.10, +5.00, +4.86, +1.40),ncol=NParam,byrow=TRUE); }
+
+      StartParamList    <- NULL;
+      StartParamDistrib <- TransfoParam(ParamIn=ParamT,Direction="TR",FUN_TRANSFO=FUN_TRANSFO);
+      StartParam        <- StartParamDistrib[2,];
+    }
+
+  ##check_StartParamList_and_StartParamDistrib__format
+    if("HBAN" %in% ObjectClass & !is.null(StartParamList)){
+      if(!is.matrix( StartParamList)  ){ stop("StartParamList must be a matrix \n"); return(NULL);  }
+      if(!is.numeric(StartParamList)  ){ stop("StartParamList must be a matrix of numeric values \n"); return(NULL);  }
+      if(sum(is.na(StartParamList))!=0){ stop("StartParamList must not include NA values \n"); return(NULL);  }
+      if(ncol(StartParamList)!=NParam ){ stop("Incompatibility between StartParamList ncol and FUN_MOD \n"); return(NULL);  }
+    }
+    if("HBAN" %in% ObjectClass & !is.null(StartParamDistrib)){
+      if(!is.matrix( StartParamDistrib)      ){ stop("StartParamDistrib must be a matrix \n"); return(NULL);  }
+      if(!is.numeric(StartParamDistrib[1,])  ){ stop("StartParamDistrib must be a matrix of numeric values \n"); return(NULL);  }
+      if(sum(is.na(StartParamDistrib[1,]))!=0){ stop("StartParamDistrib must not include NA values on the first line \n"); return(NULL);  }
+      if(ncol(StartParamDistrib)!=NParam     ){ stop("Incompatibility between StartParamDistrib ncol and FUN_MOD \n"); return(NULL);  }
+    }
+    if("optim" %in% ObjectClass & !is.null(StartParam)){
+      if(!is.vector( StartParam)    ){ stop("StartParam must be a vector \n"); return(NULL);  }
+      if(!is.numeric(StartParam)    ){ stop("StartParam must be a vector of numeric values \n"); return(NULL);  }
+      if(sum(is.na(StartParam))!=0  ){ stop("StartParam must not include NA values \n"); return(NULL);  }
+      if(length(StartParam)!=NParam ){ stop("Incompatibility between StartParam length and FUN_MOD \n"); return(NULL);  }
+    }
+
+
+  ##Create_CalibOptions
+    CalibOptions <- list(OptimParam=OptimParam,FixedParam=FixedParam,SearchRanges=SearchRanges);
+    if(!is.null(StartParam       )){ CalibOptions <- c(CalibOptions,list(StartParam=StartParam)); }
+    if(!is.null(StartParamList   )){ CalibOptions <- c(CalibOptions,list(StartParamList=StartParamList)); }
+    if(!is.null(StartParamDistrib)){ CalibOptions <- c(CalibOptions,list(StartParamDistrib=StartParamDistrib)); }
+    class(CalibOptions) <- c("CalibOptions",ObjectClass);
+    return(CalibOptions);
+
+
+}
+
+
+
diff --git a/R/CreateInputsCrit.R b/R/CreateInputsCrit.R
new file mode 100644
index 00000000..09bc06d1
--- /dev/null
+++ b/R/CreateInputsCrit.R
@@ -0,0 +1,81 @@
+#*************************************************************************************************
+#' Creation of the InputsCrit object required to the ErrorCrit functions.
+#'
+#' Users wanting to use FUN_CRIT functions that are not included in 
+#' the package must create their own InputsCrit object accordingly.
+#*************************************************************************************************
+#' @title  Creation of the InputsCrit object required to the ErrorCrit functions
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{RunModel}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateCalibOptions}}
+#' @example tests/example_ErrorCrit.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  FUN_CRIT     [function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)
+#' @param  InputsModel  [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions   [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Qobs         [numeric] series of observed discharges [mm]
+#' @param  BoolCrit     (optional) [boolean] boolean giving the time steps to consider in the computation (all time steps are consider by default)
+#' @param  transfo      (optional) [character] name of the transformation (e.g. "", "sqrt", "log", "inv", "sort")
+#' @param  Ind_zeroes   (optional) [numeric] indices of the time-steps where zeroes are observed
+#' @param  epsilon      (optional) [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] object of class \emph{InputsCrit} containing the data required to evaluate the model outputs; it can include the following:
+#'          \tabular{ll}{
+#'          \emph{$BoolCrit  }  \tab   [boolean] boolean giving the time steps to consider in the computation \cr
+#'          \emph{$Qobs      }  \tab   [numeric] series of observed discharges [mm] \cr
+#'          \emph{$transfo   }  \tab   [character] name of the transformation (e.g. "", "sqrt", "log", "inv", "sort") \cr
+#'          \emph{$Ind_zeroes}  \tab   [numeric] indices of the time-steps where zeroes are observed \cr
+#'          \emph{$epsilon   }  \tab   [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty \cr
+#'          }
+#**************************************************************************************************
+CreateInputsCrit <- function(FUN_CRIT,InputsModel,RunOptions,Qobs,BoolCrit=NULL,transfo="",Ind_zeroes=NULL,epsilon=NULL){
+
+  ObjectClass <- NULL;
+
+  ##check_FUN_CRIT
+    BOOL <- FALSE;
+    if(identical(FUN_CRIT,ErrorCrit_NSE) | identical(FUN_CRIT,ErrorCrit_KGE) | identical(FUN_CRIT,ErrorCrit_KGE2) | 
+       identical(FUN_CRIT,ErrorCrit_RMSE)){
+      BOOL <- TRUE; }
+    if(!BOOL){ stop("incorrect FUN_CRIT for use in CreateInputsCrit \n"); return(NULL); } 
+
+  ##check_arguments
+    if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n" ); return(NULL); } 
+    if(inherits(RunOptions ,"RunOptions" )==FALSE){ stop("RunOptions must be of class 'RunOptions' \n" ); return(NULL); } 
+    LLL <- length(InputsModel$DatesR[RunOptions$IndPeriod_Run])
+
+    if(is.null(Qobs)    ){ stop("Qobs is missing \n"); return(NULL); } 
+    if(!is.vector( Qobs)){ stop(paste("Qobs must be a vector of numeric values \n",sep="")); return(NULL); }
+    if(!is.numeric(Qobs)){ stop(paste("Qobs must be a vector of numeric values \n",sep="")); return(NULL); }
+    if(length(Qobs)!=LLL){ stop("Qobs and InputsModel series must have the same length \n"); return(NULL); } 
+
+    if(is.null(BoolCrit)){ BoolCrit <- rep(TRUE,length(Qobs)); }
+    if(!is.logical(BoolCrit)){ stop("BoolCrit must be a vector of boolean \n" ); return(NULL); } 
+    if(length(BoolCrit)!=LLL){ stop("BoolCrit and InputsModel series must have the same length \n"); return(NULL); } 
+
+    if(is.null(transfo)      ){ stop("transfo must be a chosen among the following: '', 'sqrt', 'log' or 'inv' \n"); return(NULL); } 
+    if(!is.vector(transfo   )){ stop("transfo must be a chosen among the following: '', 'sqrt', 'log' or 'inv' \n"); return(NULL); } 
+    if(length(transfo)!=1    ){ stop("transfo must be a chosen among the following: '', 'sqrt', 'log' or 'inv' \n"); return(NULL); } 
+    if(!is.character(transfo)){ stop("transfo must be a chosen among the following: '', 'sqrt', 'log' or 'inv' \n"); return(NULL); } 
+    if(transfo %in% c("","sqrt","log","inv") == FALSE){
+                                stop("transfo must be a chosen among the following: '', 'sqrt', 'log' or 'inv' \n"); return(NULL); } 
+
+    if(!is.null(Ind_zeroes)){
+      if(!is.vector( Ind_zeroes)){ stop("Ind_zeroes must be a vector of integers \n" ); return(NULL); } 
+      if(!is.integer(Ind_zeroes)){ stop("Ind_zeroes must be a vector of integers \n" ); return(NULL); } 
+    }
+    if(!is.null(epsilon)){
+      if(!is.vector( epsilon) | length(epsilon)!=1 | !is.numeric(epsilon)){ 
+        stop("epsilon must be single numeric value \n" ); return(NULL); }
+      epsilon=as.double(epsilon);
+    }
+
+  ##Create_InputsCrit
+    InputsCrit <- list(BoolCrit=BoolCrit,Qobs=Qobs,transfo=transfo,Ind_zeroes=Ind_zeroes,epsilon=epsilon);
+    class(InputsCrit) <- c("InputsCrit",ObjectClass);
+    return(InputsCrit);
+
+
+}
+
diff --git a/R/CreateInputsModel.R b/R/CreateInputsModel.R
new file mode 100644
index 00000000..8dcacd06
--- /dev/null
+++ b/R/CreateInputsModel.R
@@ -0,0 +1,171 @@
+#*************************************************************************************************
+#' Creation of the InputsModel object required to the RunModel functions.
+#'
+#' Users wanting to use FUN_MOD functions that are not included in 
+#' the package must create their own InputsModel object accordingly.
+#*************************************************************************************************
+#' @title  Creation of the InputsModel object required to the RunModel functions
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{RunModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}, \code{\link{DataAltiExtrapolation_HBAN}}
+#' @example tests/example_RunModel.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  FUN_MOD     [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  DatesR      [POSIXlt] vector of dates required to create the GR model and CemaNeige module inputs
+#' @param  Precip      [numeric] time series of total precipitation (catchment average) [mm], required to create the GR model and CemaNeige module inputs
+#' @param  PotEvap     [numeric] time series of potential evapotranspiration (catchment average) [mm], required to create the GR model inputs
+#' @param  TempMean    (optional) [numeric] time series of mean air temperature [degC], required to create the CemaNeige module inputs
+#' @param  TempMin     (optional) [numeric] time series of min air temperature [degC], possibly used to create the CemaNeige module inputs
+#' @param  TempMax     (optional) [numeric] time series of max air temperature [degC], possibly used to create the CemaNeige module inputs
+#' @param  ZInputs     (optional) [numeric] real giving the mean elevation of the Precip and Temp series (before extrapolation) [m]
+#' @param  HypsoData   (optional) [numeric] vector of 101 reals: min, q01 to q99 and max of catchment elevation distribution [m], required to create the GR model inputs, if not defined a single elevation is used for CemaNeige
+#' @param  NLayers     (optional) [numeric] integer giving the number of elevation layers requested [-], required to create the GR model inputs, default=5
+#' @param  quiet       (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] object of class \emph{InputsModel} containing the data required to evaluate the model outputs; it can include the following:
+#'          \tabular{ll}{
+#'          \emph{$DatesR              }  \tab   [POSIXlt] vector of dates \cr
+#'          \emph{$Precip              }  \tab   [numeric] time series of total precipitation (catchment average) [mm] \cr
+#'          \emph{$PotEvap             }  \tab   [numeric] time series of potential evapotranspiration (catchment average) [mm], \cr\tab defined if FUN_MOD includes GR4H, GR4J, GR5J, GR6J, GR2M or GR1A \cr \cr
+#'          \emph{$LayerPrecip         }  \tab   [list] list of time series of precipitation (layer average) [mm], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+#'          \emph{$LayerTempMean       }  \tab   [list] list of time series of mean air temperature (layer average) [degC], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+#'          \emph{$LayerFracSolidPrecip}  \tab   [list] list of time series of solid precip. fract. (layer average) [-], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+#'          }
+#**************************************************************************************************
+CreateInputsModel <- function(FUN_MOD,DatesR,Precip,PotEvap=NULL,TempMean=NULL,TempMin=NULL,TempMax=NULL,ZInputs=NULL,HypsoData=NULL,NLayers=5,quiet=FALSE){
+
+  ObjectClass <- NULL;
+
+  ##check_FUN_MOD
+    BOOL <- FALSE;
+    if(identical(FUN_MOD,RunModel_GR4H)){
+      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(!BOOL){ stop("incorrect FUN_MOD for use in CreateInputsModel \n"); return(NULL); } 
+
+  ##check_arguments
+    if("GR" %in% ObjectClass | "CemaNeige" %in% ObjectClass){
+      if(is.null(DatesR)){ stop("DatesR is missing \n"); return(NULL); } 
+      if("POSIXlt" %in% class(DatesR) == FALSE & "POSIXct" %in% class(DatesR) == FALSE){ stop("DatesR must be defined as POSIXlt or POSIXct \n"); return(NULL); }
+      if("POSIXlt" %in% class(DatesR) == FALSE){ DatesR <- as.POSIXlt(DatesR); }
+      if(difftime(tail(DatesR,1),tail(DatesR,2),units="secs")[[1]] %in% TimeStep==FALSE){ stop(paste("the time step of the model inputs must be ",TimeStep," seconds \n",sep="")); return(NULL); }    
+      LLL <- length(DatesR);
+    }
+    if("GR" %in% ObjectClass){
+      if(is.null(Precip  )){ stop("Precip is missing \n"  ); return(NULL); } 
+      if(is.null(PotEvap )){ stop("PotEvap is missing \n" ); return(NULL); } 
+      if(!is.vector( Precip) | !is.vector( PotEvap)){ stop("Precip and PotEvap must be vectors of numeric values \n"); return(NULL); } 
+      if(!is.numeric(Precip) | !is.numeric(PotEvap)){ stop("Precip and PotEvap must be vectors of numeric values \n"); return(NULL); } 
+      if(length(Precip)!=LLL | length(PotEvap)!=LLL){ stop("Precip, PotEvap and DatesR must have the same length \n"); return(NULL); } 
+    }
+    if("CemaNeige" %in% ObjectClass){
+      if(is.null(Precip  )){ stop("Precip is missing \n"  ); return(NULL); } 
+      if(is.null(TempMean)){ stop("TempMean is missing \n"); return(NULL); } 
+      if(!is.vector( Precip) | !is.vector( TempMean)){ stop("Precip and TempMean must be vectors of numeric values \n"); return(NULL); } 
+      if(!is.numeric(Precip) | !is.numeric(TempMean)){ stop("Precip and TempMean must be vectors of numeric values \n"); return(NULL); } 
+      if(length(Precip)!=LLL | length(TempMean)!=LLL){ stop("Precip, TempMean and DatesR must have the same length \n"); return(NULL); } 
+      if(is.null(TempMin)!=is.null(TempMax)){ stop("TempMin and TempMax must be both defined if not null \n"); return(NULL); }
+      if(!is.null(TempMin) & !is.null(TempMax)){ 
+        if(!is.vector( TempMin) | !is.vector( TempMax)){ stop("TempMin and TempMax must be vectors of numeric values \n"); return(NULL); } 
+        if(!is.numeric(TempMin) | !is.numeric(TempMax)){ stop("TempMin and TempMax must be vectors of numeric values \n"); return(NULL); } 
+        if(length(TempMin)!=LLL | length(TempMax)!=LLL){ stop("TempMin, TempMax and DatesR must have the same length \n"); return(NULL); }
+      }
+      if(!is.null(HypsoData)){ 
+        if(!is.vector( HypsoData)){ stop("HypsoData must be a vector of numeric values  if not null \n"); return(NULL); } 
+        if(!is.numeric(HypsoData)){ stop("HypsoData must be a vector of numeric values  if not null \n"); return(NULL); } 
+        if(length(HypsoData)!=101){ stop("HypsoData must be of length 101 if not null \n"); return(NULL); } 
+        if(sum(is.na(HypsoData))!=0 & sum(is.na(HypsoData))!=101){ stop("HypsoData must not contain any NA if not null \n"); return(NULL); } 
+      }
+      if(!is.null(ZInputs)){
+        if(length(ZInputs)!=1                   ){ stop("\t ZInputs must be a single numeric value if not null \n"); return(NULL); } 
+        if(is.na(ZInputs) | !is.numeric(ZInputs)){ stop("\t ZInputs must be a single numeric value if not null \n"); return(NULL); } 
+      }
+      if(is.null(HypsoData)){ 
+        if(!quiet){ warning("\t HypsoData is missing => a single layer is used and no extrapolation is made \n"); }
+        HypsoData <- as.numeric(rep(NA,101)); ZInputs <- as.numeric(NA); NLayers <- as.integer(1);
+      }
+      if(is.null(ZInputs)){ 
+        if(!quiet & !identical(HypsoData,as.numeric(rep(NA,101)))){ warning("\t ZInputs is missing => HypsoData[51] is used \n"); }
+        ZInputs <- HypsoData[51];
+      }
+    }
+
+
+  ##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){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < 0 or NA values detected in Precip series  \n"); } } 
+      BOOL_NA_TMP <- (PotEvap < 0) | is.na(PotEvap);  if(sum(BOOL_NA_TMP)!=0){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < 0 or NA values detected in PotEvap series \n"); } } 
+    }
+    if("CemaNeige" %in% ObjectClass){
+      BOOL_NA_TMP <- (Precip  < 0    ) | is.na(Precip  );  if(sum(BOOL_NA_TMP)!=0){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < 0 or NA values detected in Precip series       \n"); } } 
+      BOOL_NA_TMP <- (TempMean<(-150)) | is.na(TempMean);  if(sum(BOOL_NA_TMP)!=0){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < -150) or NA values detected in TempMean series \n"); } }
+      if(!is.null(TempMin) & !is.null(TempMax)){
+      BOOL_NA_TMP <- (TempMin<(-150)) | is.na(TempMin);  if(sum(BOOL_NA_TMP)!=0){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < -150) or NA values detected in TempMin series \n"); } }
+      BOOL_NA_TMP <- (TempMax<(-150)) | is.na(TempMax);  if(sum(BOOL_NA_TMP)!=0){ BOOL_NA <- BOOL_NA | BOOL_NA_TMP; if(!quiet){ warning("\t Values < -150) or NA values detected in TempMax series \n"); } } }
+    }
+    if(sum(BOOL_NA)!=0){
+      WTxt <- NULL;
+      WTxt <- paste(WTxt,"\t Missing values are not allowed in InputsModel \n",sep="");
+      Select <- (max(which(BOOL_NA))+1):length(BOOL_NA);
+      if(Select[1]>Select[2]){ stop(paste("time series could not be trunced since missing values were detected at the list time-step  \n",sep="")); return(NULL); }
+      if("GR" %in% ObjectClass){
+        Precip <- Precip[Select];  PotEvap <- PotEvap[Select]; }
+      if("CemaNeige" %in% ObjectClass){
+        Precip <- Precip[Select];  TempMean <- TempMean[Select]; if(!is.null(TempMin) & !is.null(TempMax)){ TempMin <- TempMin[Select]; TempMax <- TempMax[Select]; } }
+      WTxt <- paste(WTxt,"\t -> data were trunced to keep the most recent available time-steps \n",sep="");
+      WTxt <- paste(WTxt,"\t -> ",length(Select)," time-steps were kept \n",sep="");
+      if(!is.null(WTxt) & !quiet){ warning(WTxt); }
+    }
+
+
+  ##DataAltiExtrapolation_HBAN
+    if("CemaNeige" %in% ObjectClass){
+      RESULT <- DataAltiExtrapolation_HBAN(DatesR=DatesR,Precip=Precip,TempMean=TempMean,TempMin=TempMin,TempMax=TempMax,ZInputs=ZInputs,HypsoData=HypsoData,NLayers=NLayers,quiet=quiet);
+      if(!quiet){ if(NLayers==1){ cat(paste("\t Input series were successfully created on 1 elevation layer for use by CemaNeige \n",sep=""));
+                         } else { cat(paste("\t Input series were successfully created on ",NLayers," elevation layers for use by CemaNeige \n",sep="")); } }
+    }
+
+
+  ##Create_InputsModel
+    InputsModel <- list(DatesR=DatesR);
+    if("GR" %in% ObjectClass){
+      InputsModel <- c(InputsModel,list(Precip=as.double(Precip),PotEvap=as.double(PotEvap)));    }
+    if("CemaNeige" %in% ObjectClass){
+      InputsModel <- c(InputsModel,list(LayerPrecip=RESULT$LayerPrecip,LayerTempMean=RESULT$LayerTempMean,
+                                        LayerFracSolidPrecip=RESULT$LayerFracSolidPrecip,ZLayers=RESULT$ZLayers));    }
+
+    class(InputsModel) <- c("InputsModel",ObjectClass);
+    return(InputsModel);
+
+
+}
+
diff --git a/R/CreateRunOptions.R b/R/CreateRunOptions.R
new file mode 100644
index 00000000..35d930ee
--- /dev/null
+++ b/R/CreateRunOptions.R
@@ -0,0 +1,295 @@
+#*************************************************************************************************
+#' Creation of the RunOptions object required to the RunModel functions.
+#'
+#' Users wanting to use FUN_MOD functions that are not included in 
+#' the package must create their own RunOptions object accordingly.
+#' 
+#' ##### Initialisation options #####
+#' 
+#' The model initialisation options can either be set to a default configuration or be defined by the user.
+#' 
+#' This is done via three vectors: \cr \emph{IndPeriod_WarmUp}, \emph{IniStates}, \emph{IniResLevels}. \cr
+#' A default configuration is used for initialisation if these vectors are not defined.
+#' 
+#' (1) Default initialisation options:
+#' 
+#' \itemize{
+#' \item \emph{IndPeriod_WarmUp} default setting ensures a one-year warm-up using the time-steps preceding the \emph{IndPeriod_Run}. 
+#' The actual length of this warm-up might be shorter depending on data availability (no missing value being allowed on model input series).
+#' 
+#' \item \emph{IniStates} and \emph{IniResLevels} are automatically set to initialise all the model states at 0, except for the production and routing stores which are initialised at 50\% of their capacity. This initialisation is made at the very beginning of the model call (i.e. at the beginning of \emph{IndPeriod_WarmUp} or at the beginning of IndPeriod_Run if the warm-up period is disabled).
+#' }
+#' 
+#' (2) Customisation of initialisation options:
+#' 
+#' \itemize{
+#' \item \emph{IndPeriod_WarmUp} can be used to specify the indices of the warm-up period (within the time-series prepared in InputsModel). \cr
+#' - remark 1:	for most common cases, indices corresponding to one or several years preceding \emph{IndPeriod_Run} are used (e.g. \emph{IndPeriod_WarmUp <- 1000:1365} and \emph{IndPeriod_Run <- 1366:5000)}. \cr
+#' However, it is also possible to perform a long-term initialisation if other indices than the warm-up ones are set in \emph{IndPeriod_WarmUp} (e.g. \emph{IndPeriod_WarmUp <- c( 1:5000 , 1:5000 , 1:5000 ,1000:1365 )}). \cr
+#' - remark 2:	it is also possible to completely disable the warm-up period when using \emph{IndPeriod_WarmUp <- 0}.
+#' 
+#' \item \emph{IniStates} and \emph{IniResLevels} can be used to specify the initial model states. \cr
+#' - remark 1:	if \emph{IniStates} is used, all model states must be provided (e.g. 60 floats [mm] are required for GR4J, GR5J and GR6J; 60+2*NLayers floats [mm] are required for CemaNeigeGR4J, CemaNeigeGR5J and CemaNeigeGR6J; see fortran source code for details). \cr
+#' - remark 2:	in addition to \emph{IniStates}, \emph{IniResLevels} allows to set the filling rate of the production and routing stores for the GR models. For instance for GR4J, GR5J and GR6J: \emph{IniResLevels <- c(0.3,0.5)} should be used to obtain initial fillings of 30\% and 50\% for the production and routing stores, respectively.  \emph{IniResLevels} is optional and can only be used if \emph{IniStates} is also defined (the state values corresponding to these two stores in \emph{IniStates} are not used in such case). \cr \cr
+#' }
+#*************************************************************************************************
+#' @title  Creation of the RunOptions object required to the RunModel functions
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{RunModel}}, \code{\link{CreateInputsModel}}, \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}
+#' @example tests/example_RunModel.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  IndPeriod_WarmUp    (optional) [numeric] index of period to be used for the model warm-up [-]
+#' @param  IndPeriod_Run       [numeric] index of period to be used for the model run [-]
+#' @param  IniStates           (optional) [numeric] vector of initial model states [mm]
+#' @param  IniResLevels        (optional) [numeric] vector of initial filling rates for production and routing stores (2 values between 0 and 1) [-]
+#' @param  Outputs_Cal         (optional) [character] vector giving the outputs needed for the calibration \cr (e.g. c("Qsim")), the least outputs the fastest the calibration
+#' @param  Outputs_Sim         (optional) [character] vector giving the requested outputs \cr (e.g. c("DatesR","Qsim","SnowPack")), default="all"
+#' @param  RunSnowModule       (optional) [boolean] option indicating whether CemaNeige should be activated, default=TRUE
+#' @param  MeanAnSolidPrecip   (optional) [numeric] vector giving the annual mean of average solid precipitation for each layer (computed from InputsModel if not defined) [mm/y]
+#' @param  quiet               (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [list] object of class \emph{RunOptions} containing the data required to evaluate the model outputs; it can include the following:
+#'          \tabular{ll}{
+#'          \emph{IndPeriod_WarmUp }  \tab  [numeric] index of period to be used for the model warm-up [-] \cr
+#'          \emph{IndPeriod_Run    }  \tab  [numeric] index of period to be used for the model run [-] \cr
+#'          \emph{IniStates        }  \tab  [numeric] vector of initial model states [mm] \cr
+#'          \emph{IniResLevels     }  \tab  [numeric] vector of initial filling rates for production and routing stores [-] \cr
+#'          \emph{Outputs_Cal      }  \tab  [character] character vector giving only the outputs needed for the calibration \cr
+#'          \emph{Outputs_Sim      }  \tab  [character] character vector giving the requested outputs \cr
+#'          \emph{RunSnowModule    }  \tab  [boolean] option indicating whether CemaNeige should be activated \cr
+#'          \emph{MeanAnSolidPrecip}  \tab  [numeric] vector giving the annual mean of average solid precipitation for each layer [mm/y] \cr
+#'          }
+#**************************************************************************************************'
+CreateRunOptions <- function(FUN_MOD,InputsModel,IndPeriod_WarmUp=NULL,IndPeriod_Run,IniStates=NULL,IniResLevels=NULL,
+                             Outputs_Cal=NULL,Outputs_Sim="all",RunSnowModule=TRUE,MeanAnSolidPrecip=NULL,quiet=FALSE){
+
+
+  ObjectClass <- NULL;
+
+  ##check_FUN_MOD
+    BOOL <- FALSE;
+    if(identical(FUN_MOD,RunModel_GR4H)){
+      ObjectClass <- c(ObjectClass,"GR","hourly"); 
+      BOOL <- TRUE; 
+    }
+    if(identical(FUN_MOD,RunModel_GR4J) | identical(FUN_MOD,RunModel_GR5J) | identical(FUN_MOD,RunModel_GR6J)){
+      ObjectClass <- c(ObjectClass,"GR","daily"); 
+      BOOL <- TRUE; 
+    }
+    if(identical(FUN_MOD,RunModel_GR2M)){
+      ObjectClass <- c(ObjectClass,"GR","monthly"); 
+      BOOL <- TRUE; 
+    }
+    if(identical(FUN_MOD,RunModel_GR1A)){
+      ObjectClass <- c(ObjectClass,"GR","yearly"); 
+      BOOL <- TRUE; 
+    }
+    if(identical(FUN_MOD,RunModel_CemaNeige)){
+      ObjectClass <- c(ObjectClass,"CemaNeige","daily");
+      BOOL <- TRUE; 
+    }
+    if(identical(FUN_MOD,RunModel_CemaNeigeGR4J) | identical(FUN_MOD,RunModel_CemaNeigeGR5J) | identical(FUN_MOD,RunModel_CemaNeigeGR6J)){
+      ObjectClass <- c(ObjectClass,"GR","CemaNeige","daily");
+      BOOL <- TRUE; 
+    }
+    if(!BOOL){ stop("incorrect FUN_MOD for use in CreateRunOptions \n"); return(NULL); } 
+
+
+  ##check_InputsModel
+    if(!inherits(InputsModel,"InputsModel")){
+      stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); } 
+    if("GR" %in% ObjectClass & !inherits(InputsModel,"GR")){
+      stop("InputsModel must be of class 'GR' \n"); return(NULL); } 
+    if("CemaNeige" %in% ObjectClass & !inherits(InputsModel,"CemaNeige")){
+      stop("InputsModel must be of class 'CemaNeige' \n"); return(NULL); } 
+    if("hourly" %in% ObjectClass & !inherits(InputsModel,"hourly")){
+      stop("InputsModel must be of class 'hourly' \n"); return(NULL); } 
+    if("daily" %in% ObjectClass & !inherits(InputsModel,"daily")){
+      stop("InputsModel must be of class 'daily' \n"); return(NULL); } 
+    if("monthly" %in% ObjectClass & !inherits(InputsModel,"monthly")){
+      stop("InputsModel must be of class 'monthly' \n"); return(NULL); } 
+    if("yearly" %in% ObjectClass & !inherits(InputsModel,"yearly")){
+      stop("InputsModel must be of class 'yearly' \n"); return(NULL); } 
+
+
+  ##check_IndPeriod_Run
+    if(!is.vector( IndPeriod_Run)){ stop("IndPeriod_Run must be a vector of numeric values \n"); return(NULL); } 
+    if(!is.numeric(IndPeriod_Run)){ stop("IndPeriod_Run must be a vector of numeric values \n"); return(NULL); } 
+    if(identical(as.integer(IndPeriod_Run),as.integer(seq(from=IndPeriod_Run[1],to=tail(IndPeriod_Run,1),by=1)))==FALSE){
+      stop("IndPeriod_Run must be a continuous sequence of integers \n"); return(NULL); } 
+    if(storage.mode(IndPeriod_Run)!="integer"){ stop("IndPeriod_Run should be of type integer \n"); return(NULL); } 
+
+
+  ##check_IndPeriod_WarmUp
+    WTxt <- NULL;
+    if(is.null(IndPeriod_WarmUp)){
+      WTxt <- paste(WTxt,"\t Model warm-up period not defined -> default configuration used \n",sep="");
+      ##If_the_run_period_starts_at_the_very_beginning_of_the_time_series
+      if(IndPeriod_Run[1]==as.integer(1)){
+        IndPeriod_WarmUp <- as.integer(0);
+        WTxt <- paste(WTxt,"\t    No data were found for model warm-up! \n",sep="");
+      ##We_look_for_the_longest_period_preceeding_the_run_period_with_a_maximum_of_one_year
+      } else {
+        TmpDateR <- InputsModel$DatesR[IndPeriod_Run[1]] - 365*24*60*60; ### minimal date to start the warmup        
+        IndPeriod_WarmUp <- which(InputsModel$DatesR==max(InputsModel$DatesR[1],TmpDateR)) : (IndPeriod_Run[1]-1); 
+        if("hourly"  %in% ObjectClass){ TimeStep <- as.integer(          60*60); }
+        if("daily"   %in% ObjectClass){ TimeStep <- as.integer(       24*60*60); }
+        if("monthly" %in% ObjectClass){ TimeStep <- as.integer( 30.44*24*60*60); }
+        if("yearly"  %in% ObjectClass){ TimeStep <- as.integer(365.25*24*60*60); }
+        if(length(IndPeriod_WarmUp)*TimeStep/(365*24*60*60)>=1){ 
+        WTxt <- paste(WTxt,"\t    The year preceding the run period is used \n",sep="");
+        } else {
+        WTxt <- paste(WTxt,"\t    Less than a year (without missing values) was found for model warm-up: \n",sep="");
+        WTxt <- paste(WTxt,"\t    (",length(IndPeriod_WarmUp)," time-steps are used for initialisation) \n",sep=""); 
+        }
+      }
+    }
+    if(!is.null(IndPeriod_WarmUp)){
+      if(!is.vector( IndPeriod_WarmUp)){ stop("IndPeriod_Run must be a vector of numeric values \n"); return(NULL); } 
+      if(!is.numeric(IndPeriod_WarmUp)){ stop("IndPeriod_Run must be a vector of numeric values \n"); return(NULL); } 
+      if(storage.mode(IndPeriod_WarmUp)!="integer"){ stop("IndPeriod_Run should be of type integer \n"); return(NULL); } 
+      if(identical(IndPeriod_WarmUp,as.integer(0))){
+        WTxt <- paste(WTxt,"\t No warm-up period is used! \n",sep=""); }
+      if((IndPeriod_Run[1]-1)!=tail(IndPeriod_WarmUp,1) & !identical(IndPeriod_WarmUp,as.integer(0))){ 
+        WTxt <- paste(WTxt,"\t Model warm-up period is not directly before the model run period \n",sep=""); }
+    }
+    if(!is.null(WTxt) & !quiet){ warning(WTxt); }
+
+
+  ##check_IniStates_and_IniResLevels
+    if(is.null(IniStates) & is.null(IniResLevels) & !quiet){ 
+      warning("\t Model states initialisation not defined -> default configuration used \n"); }
+    if("CemaNeige" %in% ObjectClass){ NLayers <- length(InputsModel$LayerPrecip); } else { NLayers <- 0; }
+    NState <- NULL;
+    if("GR" %in% ObjectClass | "CemaNeige" %in% ObjectClass){ 
+      if("hourly"  %in% ObjectClass){ NState <- 3*24*20; }
+      if("daily"   %in% ObjectClass){ NState <- 3*20 + 2*NLayers; }
+      if("monthly" %in% ObjectClass){ NState <- 2; }
+      if("yearly"  %in% ObjectClass){ NState <- 1; }
+    }
+    if(!is.null(IniStates)){
+      if(!is.vector( IniStates)   ){ stop("IniStates must be a vector of numeric values \n"); return(NULL);  }
+      if(!is.numeric(IniStates)   ){ stop("IniStates must be a vector of numeric values \n"); return(NULL);  }
+      if(length(IniStates)!=NState){ stop(paste("The length of IniStates must be ",NState," for the chosen FUN_MOD \n",sep="")); return(NULL);  }
+    } else {
+      IniStates <- as.double(rep(0.0,NState));
+    }
+    if("GR" %in% ObjectClass & ("monthly" %in% ObjectClass | "daily" %in% ObjectClass | "hourly" %in% ObjectClass)){
+      if(!is.null(IniResLevels)){
+        if(!is.vector(IniResLevels) ){ stop("IniResLevels must be a vector of numeric values \n"); return(NULL);  }
+        if(!is.numeric(IniResLevels)){ stop("IniResLevels must be a vector of numeric values \n"); return(NULL);  }
+        if(length(IniResLevels)!=2 ) { stop("The length of IniStates must be 2 for the chosen FUN_MOD \n"); return(NULL);  }
+      } else {
+        IniResLevels <- as.double(c(0.3,0.5));
+      }
+    } else {
+      if(!is.null(IniResLevels)){ stop("IniResLevels can only be used with monthly or daily or hourly GR models \n") }
+    }
+
+
+  ##check_Outputs_Cal_and_Sim
+
+    ##Outputs_all
+      Outputs_all <- NULL;
+      if(identical(FUN_MOD,RunModel_GR4H)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QD","Qsim"); }
+      if(identical(FUN_MOD,RunModel_GR4J) | identical(FUN_MOD,RunModel_CemaNeigeGR4J)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QD","Qsim"); }
+      if(identical(FUN_MOD,RunModel_GR5J) | identical(FUN_MOD,RunModel_CemaNeigeGR5J)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QD","Qsim"); }
+      if(identical(FUN_MOD,RunModel_GR6J) | identical(FUN_MOD,RunModel_CemaNeigeGR6J)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QR1","Exp","QD","Qsim"); }
+      if(identical(FUN_MOD,RunModel_GR2M)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Qsim"); }
+      if(identical(FUN_MOD,RunModel_GR1A)){
+        Outputs_all <- c(Outputs_all,"PotEvap","Precip","Qsim"); }
+      if("CemaNeige" %in% ObjectClass){
+        Outputs_all <- c(Outputs_all,"Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt"); }
+
+    ##check_Outputs_Sim
+      if(!is.vector(   Outputs_Sim)){ stop("Outputs_Sim must be a vector of characters \n"); return(NULL);  }
+      if(!is.character(Outputs_Sim)){ stop("Outputs_Sim must be a vector of characters \n"); return(NULL);  }
+      if(sum(is.na(Outputs_Sim))!=0){ stop("Outputs_Sim must not contain NA \n"); return(NULL);  }
+      if("all" %in% Outputs_Sim){ Outputs_Sim <- c("DatesR",Outputs_all,"StateEnd");  }
+      Test <- which(Outputs_Sim %in% c("DatesR",Outputs_all,"StateEnd") == FALSE); if(length(Test)!=0){ 
+        stop(paste("Outputs_Sim is incorrectly defined: ",paste(Outputs_Sim[Test],collapse=", ")," not found \n",sep="")); return(NULL); } 
+      Outputs_Sim <- Outputs_Sim[!duplicated(Outputs_Sim)];
+
+    ##check_Outputs_Cal
+      if(is.null(Outputs_Cal)){
+        if("GR" %in% ObjectClass                               ){ Outputs_Cal <- c("Qsim"); }
+        if("CemaNeige" %in% ObjectClass                        ){ Outputs_Cal <- c("all"); }
+        if("GR" %in% ObjectClass & "CemaNeige" %in% ObjectClass){ Outputs_Cal <- c("PliqAndMelt","Qsim"); }
+      } else {
+        if(!is.vector(   Outputs_Cal)){ stop("Outputs_Cal must be a vector of characters \n"); return(NULL);  }
+        if(!is.character(Outputs_Cal)){ stop("Outputs_Cal must be a vector of characters \n"); return(NULL);  }
+        if(sum(is.na(Outputs_Cal))!=0){ stop("Outputs_Cal must not contain NA \n"); return(NULL);  }
+      }
+      if("all" %in% Outputs_Cal){ Outputs_Cal <- c("DatesR",Outputs_all,"StateEnd");  }
+      Test <- which(Outputs_Cal %in% c("DatesR",Outputs_all,"StateEnd") == FALSE); if(length(Test)!=0){ 
+        stop(paste("Outputs_Cal is incorrectly defined: ",paste(Outputs_Cal[Test],collapse=", ")," not found \n",sep="")); return(NULL); } 
+      Outputs_Cal <- Outputs_Cal[!duplicated(Outputs_Cal)];
+
+
+  ##check_RunSnowModule
+    if("CemaNeige" %in% ObjectClass){
+      if(!is.vector( RunSnowModule)){ stop("RunSnowModule must be a single boolean \n"); return(NULL);  }
+      if(!is.logical(RunSnowModule)){ stop("RunSnowModule must be either TRUE or FALSE \n"); return(NULL);  }
+      if(length(RunSnowModule)!=1  ){ stop("RunSnowModule must be either TRUE or FALSE \n"); return(NULL);  }
+    }
+
+
+  ##check_MeanAnSolidPrecip
+    if("CemaNeige" %in% ObjectClass & is.null(MeanAnSolidPrecip)){
+      NLayers <- length(InputsModel$LayerPrecip);
+      SolidPrecip <- NULL; for(iLayer in 1:NLayers){
+        if(iLayer==1){ SolidPrecip <- InputsModel$LayerFracSolidPrecip[[1]]*InputsModel$LayerPrecip[[iLayer]]/NLayers;
+              } else { SolidPrecip <- SolidPrecip + InputsModel$LayerFracSolidPrecip[[iLayer]]*InputsModel$LayerPrecip[[iLayer]]/NLayers; } }
+      Factor <- NULL;
+      if(inherits(InputsModel,"hourly" )){ Factor <- 365.25*24; }
+      if(inherits(InputsModel,"daily"  )){ Factor <-    365.25; }
+      if(inherits(InputsModel,"monthly")){ Factor <-        12; }
+      if(inherits(InputsModel,"yearly" )){ Factor <-         1; }
+      if(is.null(Factor)){ stop("InputsModel must be of class 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL);  }
+      MeanAnSolidPrecip <- rep(mean(SolidPrecip)*Factor,NLayers); ### default value: same Gseuil for all layers
+      if(!quiet){ warning("\t MeanAnSolidPrecip not defined -> it was automatically set to c(",paste(round(MeanAnSolidPrecip),collapse=","),") \n"); }
+    }
+    if("CemaNeige" %in% ObjectClass & !is.null(MeanAnSolidPrecip)){
+      if(!is.vector( MeanAnSolidPrecip)    ){ stop(paste("MeanAnSolidPrecip must be a vector of numeric values \n",sep="")); return(NULL);  }
+      if(!is.numeric(MeanAnSolidPrecip)    ){ stop(paste("MeanAnSolidPrecip must be a vector of numeric values \n",sep="")); return(NULL);  }
+      if(length(MeanAnSolidPrecip)!=NLayers){ stop(paste("MeanAnSolidPrecip must be a numeric vector of length ",NLayers," \n",sep="")); return(NULL);  }
+    }
+
+
+  ##check_PliqAndMelt
+    if(RunSnowModule & "GR" %in% ObjectClass & "CemaNeige" %in% ObjectClass){
+      if("PliqAndMelt" %in% Outputs_Cal == FALSE & "all" %in% Outputs_Cal == FALSE){
+        WTxt <- NULL;
+        WTxt <- paste(WTxt,"\t PliqAndMelt was not defined in Outputs_Cal but is needed to feed the hydrological model with the snow module outputs \n",sep="");
+        WTxt <- paste(WTxt,"\t -> it was automatically added \n",sep="");
+        if(!is.null(WTxt) & !quiet){ warning(WTxt); }
+        Outputs_Cal <- c(Outputs_Cal,"PliqAndMelt"); }
+      if("PliqAndMelt" %in% Outputs_Sim == FALSE & "all" %in% Outputs_Sim == FALSE){
+        WTxt <- NULL;
+        WTxt <- paste(WTxt,"\t PliqAndMelt was not defined in Outputs_Sim but is needed to feed the hydrological model with the snow module outputs \n",sep="");
+        WTxt <- paste(WTxt,"\t -> it was automatically added \n",sep="");
+        if(!is.null(WTxt) & !quiet){ warning(WTxt); }
+        Outputs_Sim <- c(Outputs_Sim,"PliqAndMelt"); }
+    }
+
+
+  ##Create_RunOptions
+    RunOptions <- list(IndPeriod_WarmUp=IndPeriod_WarmUp,IndPeriod_Run=IndPeriod_Run,IniStates=IniStates,IniResLevels=IniResLevels,
+                       Outputs_Cal=Outputs_Cal,Outputs_Sim=Outputs_Sim);
+    if("CemaNeige" %in% ObjectClass){
+        RunOptions <- c(RunOptions,list(RunSnowModule=RunSnowModule,MeanAnSolidPrecip=MeanAnSolidPrecip));    }
+    class(RunOptions) <- c("RunOptions",ObjectClass);
+    return(RunOptions);
+
+
+}
+
diff --git a/R/DataAltiExtrapolation_HBAN.R b/R/DataAltiExtrapolation_HBAN.R
new file mode 100644
index 00000000..7a5354b6
--- /dev/null
+++ b/R/DataAltiExtrapolation_HBAN.R
@@ -0,0 +1,540 @@
+#*****************************************************************************************************************
+#' Function which extrapolates the precipitation and air temperature series for different elevation layers (method from Valery, 2010).
+#'
+#' Elevation layers of equal surface are created the 101 elevation quantiles (\emph{HypsoData}) 
+#' and the number requested elevation layers (\emph{NLayers}). \cr
+#' Forcing data (precipitation and air temperature) are extrapolated using gradients from Valery (2010).
+#' (e.g. gradP=0.0004 [m-1] for France and gradT=0.434 [degreC/100m] for January, 1st). \cr
+#' This function is used by the \emph{CreateInputsModel} function. \cr
+#*****************************************************************************************************************
+#' @title   Altitudinal extrapolation of precipitation and temperature series
+#' @author  Laurent Coron, Pierre Brigode (June 2014)
+#' @references
+#'   Turcotte, R., L.-G. Fortin, V. Fortin, J.-P. Fortin and J.-P. Villeneuve (2007), 
+#'       Operational analysis of the spatial distribution and the temporal evolution of the snowpack water equivalent 
+#'       in southern Quebec, Canada, Nordic Hydrology, 38(3), 211, doi:10.2166/nh.2007.009. \cr
+#'   Valéry, A. (2010), Modélisation précipitations-débit sous influence nivale ? : Elaboration d'un module neige 
+#'       et évaluation sur 380 bassins versants, PhD thesis (in french), AgroParisTech, Paris, France. \cr
+#'   USACE (1956), Snow Hydrology, pp. 437, U.S. Army Coprs of Engineers (USACE) North Pacific Division, Portland, Oregon, USA.
+#' @seealso \code{\link{CreateInputsModel}}, \code{\link{RunModel_CemaNeigeGR4J}}
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  DatesR      [POSIXlt] vector of dates
+#' @param  Precip      [numeric] time series of daily total precipitation (catchment average) [mm]
+#' @param  TempMean    [numeric] time series of daily mean air temperature [degC]
+#' @param  TempMin     (optional) [numeric] time series of daily min air temperature [degC]
+#' @param  TempMax     (optional) [numeric] time series of daily max air temperature [degC]
+#' @param  ZInputs     [numeric] real giving the mean elevation of the Precip and Temp series (before extrapolation) [m]
+#' @param  HypsoData   [numeric] vector of 101 reals: min, q01 to q99 and max of catchment elevation distribution [m]
+#' @param  NLayers     [numeric] integer giving the number of elevation layers requested [-]
+#' @param  quiet       (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  list containing the extrapolated series of precip. and air temp. on each elevation layer
+#'          \tabular{ll}{                                                                                                      
+#'            \emph{$LayerPrecip         }  \tab  [list] list of time series of daily precipitation (layer average) [mm]           \cr
+#'            \emph{$LayerTempMean       }  \tab  [list] list of time series of daily mean air temperature (layer average) [degC]  \cr
+#'            \emph{$LayerTempMin        }  \tab  [list] list of time series of daily min air temperature (layer average) [degC]   \cr
+#'            \emph{$LayerTempMax        }  \tab  [list] list of time series of daily max air temperature (layer average) [degC]   \cr
+#'            \emph{$LayerFracSolidPrecip}  \tab  [list] list of time series of daily solid precip. fract. (layer average) [-]     \cr
+#'            \emph{$ZLayers             }  \tab  [numeric] vector of median elevation for each layer                              \cr
+#'          }                                                                                                                  
+#*****************************************************************************************************************
+DataAltiExtrapolation_HBAN <- function(DatesR,Precip,TempMean,TempMin=NULL,TempMax=NULL,ZInputs,HypsoData,NLayers,quiet=FALSE){
+
+
+    ##Altitudinal_gradient_functions_______________________________________________________________
+      ##unique_gradient_for_precipitation
+      GradP_Valery2010 <- function(){ 
+        return(0.00041); ### value from Val? PhD thesis page 126
+      }
+      ##daily_gradients_for_mean_min_and_max_air_temperature
+      GradT_Valery2010 <- function(){ 
+        RESULT <- matrix(c(
+               1,  1, 0.434, 0.366, 0.498,
+               2,  1, 0.434, 0.366, 0.500,
+               3,  1, 0.435, 0.367, 0.501,
+               4,  1, 0.436, 0.367, 0.503,
+               5,  1, 0.437, 0.367, 0.504,
+               6,  1, 0.439, 0.367, 0.506,
+               7,  1, 0.440, 0.367, 0.508,
+               8,  1, 0.441, 0.368, 0.510,
+               9,  1, 0.442, 0.368, 0.512,
+              10,  1, 0.444, 0.368, 0.514,
+              11,  1, 0.445, 0.368, 0.517,
+              12,  1, 0.446, 0.368, 0.519,
+              13,  1, 0.448, 0.369, 0.522,
+              14,  1, 0.450, 0.369, 0.525,
+              15,  1, 0.451, 0.369, 0.527,
+              16,  1, 0.453, 0.370, 0.530,
+              17,  1, 0.455, 0.370, 0.533,
+              18,  1, 0.456, 0.370, 0.537,
+              19,  1, 0.458, 0.371, 0.540,
+              20,  1, 0.460, 0.371, 0.543,
+              21,  1, 0.462, 0.371, 0.547,
+              22,  1, 0.464, 0.372, 0.550,
+              23,  1, 0.466, 0.372, 0.554,
+              24,  1, 0.468, 0.373, 0.558,
+              25,  1, 0.470, 0.373, 0.561,
+              26,  1, 0.472, 0.374, 0.565,
+              27,  1, 0.474, 0.374, 0.569,
+              28,  1, 0.476, 0.375, 0.573,
+              29,  1, 0.478, 0.375, 0.577,
+              30,  1, 0.480, 0.376, 0.582,
+              31,  1, 0.483, 0.376, 0.586,
+               1,  2, 0.485, 0.377, 0.590,
+               2,  2, 0.487, 0.377, 0.594,
+               3,  2, 0.489, 0.378, 0.599,
+               4,  2, 0.492, 0.379, 0.603,
+               5,  2, 0.494, 0.379, 0.607,
+               6,  2, 0.496, 0.380, 0.612,
+               7,  2, 0.498, 0.381, 0.616,
+               8,  2, 0.501, 0.381, 0.621,
+               9,  2, 0.503, 0.382, 0.625,
+              10,  2, 0.505, 0.383, 0.630,
+              11,  2, 0.508, 0.384, 0.634,
+              12,  2, 0.510, 0.384, 0.639,
+              13,  2, 0.512, 0.385, 0.643,
+              14,  2, 0.515, 0.386, 0.648,
+              15,  2, 0.517, 0.387, 0.652,
+              16,  2, 0.519, 0.387, 0.657,
+              17,  2, 0.522, 0.388, 0.661,
+              18,  2, 0.524, 0.389, 0.666,
+              19,  2, 0.526, 0.390, 0.670,
+              20,  2, 0.528, 0.391, 0.674,
+              21,  2, 0.530, 0.392, 0.679,
+              22,  2, 0.533, 0.393, 0.683,
+              23,  2, 0.535, 0.393, 0.687,
+              24,  2, 0.537, 0.394, 0.691,
+              25,  2, 0.539, 0.395, 0.695,
+              26,  2, 0.541, 0.396, 0.699,
+              27,  2, 0.543, 0.397, 0.703,
+              28,  2, 0.545, 0.398, 0.707,
+              29,  2, 0.546, 0.399, 0.709,
+               1,  3, 0.547, 0.399, 0.711,
+               2,  3, 0.549, 0.400, 0.715,
+               3,  3, 0.551, 0.401, 0.718,
+               4,  3, 0.553, 0.402, 0.722,
+               5,  3, 0.555, 0.403, 0.726,
+               6,  3, 0.557, 0.404, 0.729,
+               7,  3, 0.559, 0.405, 0.732,
+               8,  3, 0.560, 0.406, 0.736,
+               9,  3, 0.562, 0.406, 0.739,
+              10,  3, 0.564, 0.407, 0.742,
+              11,  3, 0.566, 0.408, 0.745,
+              12,  3, 0.567, 0.409, 0.748,
+              13,  3, 0.569, 0.410, 0.750,
+              14,  3, 0.570, 0.411, 0.753,
+              15,  3, 0.572, 0.412, 0.756,
+              16,  3, 0.573, 0.413, 0.758,
+              17,  3, 0.575, 0.414, 0.761,
+              18,  3, 0.576, 0.415, 0.763,
+              19,  3, 0.577, 0.416, 0.765,
+              20,  3, 0.579, 0.417, 0.767,
+              21,  3, 0.580, 0.417, 0.769,
+              22,  3, 0.581, 0.418, 0.771,
+              23,  3, 0.582, 0.419, 0.773,
+              24,  3, 0.583, 0.420, 0.774,
+              25,  3, 0.584, 0.421, 0.776,
+              26,  3, 0.585, 0.422, 0.777,
+              27,  3, 0.586, 0.422, 0.779,
+              28,  3, 0.587, 0.423, 0.780,
+              29,  3, 0.588, 0.424, 0.781,
+              30,  3, 0.589, 0.425, 0.782,
+              31,  3, 0.590, 0.425, 0.783,
+               1,  4, 0.591, 0.426, 0.784,
+               2,  4, 0.591, 0.427, 0.785,
+               3,  4, 0.592, 0.427, 0.785,
+               4,  4, 0.593, 0.428, 0.786,
+               5,  4, 0.593, 0.429, 0.787,
+               6,  4, 0.594, 0.429, 0.787,
+               7,  4, 0.595, 0.430, 0.787,
+               8,  4, 0.595, 0.431, 0.788,
+               9,  4, 0.596, 0.431, 0.788,
+              10,  4, 0.596, 0.432, 0.788,
+              11,  4, 0.597, 0.432, 0.788,
+              12,  4, 0.597, 0.433, 0.788,
+              13,  4, 0.597, 0.433, 0.788,
+              14,  4, 0.598, 0.434, 0.788,
+              15,  4, 0.598, 0.434, 0.788,
+              16,  4, 0.598, 0.435, 0.787,
+              17,  4, 0.599, 0.435, 0.787,
+              18,  4, 0.599, 0.436, 0.787,
+              19,  4, 0.599, 0.436, 0.786,
+              20,  4, 0.599, 0.436, 0.786,
+              21,  4, 0.600, 0.437, 0.785,
+              22,  4, 0.600, 0.437, 0.785,
+              23,  4, 0.600, 0.437, 0.784,
+              24,  4, 0.600, 0.438, 0.784,
+              25,  4, 0.600, 0.438, 0.783,
+              26,  4, 0.601, 0.438, 0.783,
+              27,  4, 0.601, 0.438, 0.782,
+              28,  4, 0.601, 0.439, 0.781,
+              29,  4, 0.601, 0.439, 0.781,
+              30,  4, 0.601, 0.439, 0.780,
+               1,  5, 0.601, 0.439, 0.779,
+               2,  5, 0.601, 0.439, 0.778,
+               3,  5, 0.601, 0.439, 0.778,
+               4,  5, 0.601, 0.440, 0.777,
+               5,  5, 0.601, 0.440, 0.776,
+               6,  5, 0.601, 0.440, 0.775,
+               7,  5, 0.601, 0.440, 0.775,
+               8,  5, 0.601, 0.440, 0.774,
+               9,  5, 0.601, 0.440, 0.773,
+              10,  5, 0.602, 0.440, 0.772,
+              11,  5, 0.602, 0.440, 0.772,
+              12,  5, 0.602, 0.440, 0.771,
+              13,  5, 0.602, 0.440, 0.770,
+              14,  5, 0.602, 0.440, 0.770,
+              15,  5, 0.602, 0.440, 0.769,
+              16,  5, 0.602, 0.440, 0.768,
+              17,  5, 0.602, 0.440, 0.768,
+              18,  5, 0.602, 0.440, 0.767,
+              19,  5, 0.602, 0.440, 0.767,
+              20,  5, 0.602, 0.440, 0.766,
+              21,  5, 0.602, 0.440, 0.766,
+              22,  5, 0.602, 0.440, 0.765,
+              23,  5, 0.602, 0.440, 0.765,
+              24,  5, 0.602, 0.440, 0.764,
+              25,  5, 0.602, 0.440, 0.764,
+              26,  5, 0.602, 0.440, 0.764,
+              27,  5, 0.602, 0.439, 0.763,
+              28,  5, 0.602, 0.439, 0.763,
+              29,  5, 0.602, 0.439, 0.763,
+              30,  5, 0.602, 0.439, 0.762,
+              31,  5, 0.602, 0.439, 0.762,
+               1,  6, 0.602, 0.439, 0.762,
+               2,  6, 0.602, 0.439, 0.762,
+               3,  6, 0.602, 0.439, 0.762,
+               4,  6, 0.602, 0.439, 0.762,
+               5,  6, 0.602, 0.439, 0.762,
+               6,  6, 0.602, 0.438, 0.761,
+               7,  6, 0.602, 0.438, 0.761,
+               8,  6, 0.602, 0.438, 0.761,
+               9,  6, 0.602, 0.438, 0.761,
+              10,  6, 0.602, 0.438, 0.761,
+              11,  6, 0.602, 0.438, 0.762,
+              12,  6, 0.602, 0.438, 0.762,
+              13,  6, 0.602, 0.438, 0.762,
+              14,  6, 0.602, 0.438, 0.762,
+              15,  6, 0.602, 0.437, 0.762,
+              16,  6, 0.602, 0.437, 0.762,
+              17,  6, 0.602, 0.437, 0.762,
+              18,  6, 0.602, 0.437, 0.762,
+              19,  6, 0.602, 0.437, 0.763,
+              20,  6, 0.602, 0.437, 0.763,
+              21,  6, 0.602, 0.437, 0.763,
+              22,  6, 0.602, 0.436, 0.763,
+              23,  6, 0.602, 0.436, 0.763,
+              24,  6, 0.602, 0.436, 0.764,
+              25,  6, 0.602, 0.436, 0.764,
+              26,  6, 0.601, 0.436, 0.764,
+              27,  6, 0.601, 0.436, 0.764,
+              28,  6, 0.601, 0.436, 0.764,
+              29,  6, 0.601, 0.435, 0.765,
+              30,  6, 0.601, 0.435, 0.765,
+               1,  7, 0.601, 0.435, 0.765,
+               2,  7, 0.600, 0.435, 0.765,
+               3,  7, 0.600, 0.435, 0.765,
+               4,  7, 0.600, 0.434, 0.766,
+               5,  7, 0.600, 0.434, 0.766,
+               6,  7, 0.599, 0.434, 0.766,
+               7,  7, 0.599, 0.434, 0.766,
+               8,  7, 0.599, 0.434, 0.766,
+               9,  7, 0.598, 0.433, 0.766,
+              10,  7, 0.598, 0.433, 0.766,
+              11,  7, 0.598, 0.433, 0.766,
+              12,  7, 0.597, 0.433, 0.766,
+              13,  7, 0.597, 0.432, 0.767,
+              14,  7, 0.597, 0.432, 0.767,
+              15,  7, 0.596, 0.432, 0.767,
+              16,  7, 0.596, 0.432, 0.766,
+              17,  7, 0.595, 0.431, 0.766,
+              18,  7, 0.595, 0.431, 0.766,
+              19,  7, 0.594, 0.431, 0.766,
+              20,  7, 0.594, 0.430, 0.766,
+              21,  7, 0.593, 0.430, 0.766,
+              22,  7, 0.593, 0.430, 0.766,
+              23,  7, 0.592, 0.429, 0.765,
+              24,  7, 0.592, 0.429, 0.765,
+              25,  7, 0.591, 0.428, 0.765,
+              26,  7, 0.590, 0.428, 0.765,
+              27,  7, 0.590, 0.428, 0.764,
+              28,  7, 0.589, 0.427, 0.764,
+              29,  7, 0.588, 0.427, 0.764,
+              30,  7, 0.588, 0.426, 0.763,
+              31,  7, 0.587, 0.426, 0.763,
+               1,  8, 0.586, 0.425, 0.762,
+               2,  8, 0.586, 0.425, 0.762,
+               3,  8, 0.585, 0.424, 0.761,
+               4,  8, 0.584, 0.424, 0.761,
+               5,  8, 0.583, 0.423, 0.760,
+               6,  8, 0.583, 0.423, 0.760,
+               7,  8, 0.582, 0.422, 0.759,
+               8,  8, 0.581, 0.421, 0.758,
+               9,  8, 0.580, 0.421, 0.758,
+              10,  8, 0.579, 0.420, 0.757,
+              11,  8, 0.578, 0.420, 0.756,
+              12,  8, 0.578, 0.419, 0.755,
+              13,  8, 0.577, 0.418, 0.754,
+              14,  8, 0.576, 0.418, 0.754,
+              15,  8, 0.575, 0.417, 0.753,
+              16,  8, 0.574, 0.416, 0.752,
+              17,  8, 0.573, 0.415, 0.751,
+              18,  8, 0.572, 0.415, 0.750,
+              19,  8, 0.571, 0.414, 0.749,
+              20,  8, 0.570, 0.413, 0.748,
+              21,  8, 0.569, 0.413, 0.747,
+              22,  8, 0.569, 0.412, 0.746,
+              23,  8, 0.568, 0.411, 0.745,
+              24,  8, 0.567, 0.410, 0.744,
+              25,  8, 0.566, 0.409, 0.743,
+              26,  8, 0.565, 0.409, 0.742,
+              27,  8, 0.564, 0.408, 0.741,
+              28,  8, 0.563, 0.407, 0.740,
+              29,  8, 0.562, 0.406, 0.738,
+              30,  8, 0.561, 0.405, 0.737,
+              31,  8, 0.560, 0.405, 0.736,
+               1,  9, 0.558, 0.404, 0.735,
+               2,  9, 0.557, 0.403, 0.734,
+               3,  9, 0.556, 0.402, 0.732,
+               4,  9, 0.555, 0.401, 0.731,
+               5,  9, 0.554, 0.401, 0.730,
+               6,  9, 0.553, 0.400, 0.728,
+               7,  9, 0.552, 0.399, 0.727,
+               8,  9, 0.551, 0.398, 0.725,
+               9,  9, 0.550, 0.397, 0.724,
+              10,  9, 0.549, 0.396, 0.723,
+              11,  9, 0.548, 0.396, 0.721,
+              12,  9, 0.546, 0.395, 0.720,
+              13,  9, 0.545, 0.394, 0.718,
+              14,  9, 0.544, 0.393, 0.717,
+              15,  9, 0.543, 0.392, 0.715,
+              16,  9, 0.542, 0.391, 0.713,
+              17,  9, 0.541, 0.391, 0.712,
+              18,  9, 0.540, 0.390, 0.710,
+              19,  9, 0.538, 0.389, 0.709,
+              20,  9, 0.537, 0.388, 0.707,
+              21,  9, 0.536, 0.388, 0.705,
+              22,  9, 0.535, 0.387, 0.703,
+              23,  9, 0.533, 0.386, 0.702,
+              24,  9, 0.532, 0.385, 0.700,
+              25,  9, 0.531, 0.385, 0.698,
+              26,  9, 0.530, 0.384, 0.696,
+              27,  9, 0.528, 0.383, 0.694,
+              28,  9, 0.527, 0.383, 0.692,
+              29,  9, 0.526, 0.382, 0.690,
+              30,  9, 0.525, 0.381, 0.688,
+               1, 10, 0.523, 0.381, 0.686,
+               2, 10, 0.522, 0.380, 0.684,
+               3, 10, 0.521, 0.379, 0.682,
+               4, 10, 0.519, 0.379, 0.680,
+               5, 10, 0.518, 0.378, 0.678,
+               6, 10, 0.517, 0.377, 0.676,
+               7, 10, 0.515, 0.377, 0.674,
+               8, 10, 0.514, 0.376, 0.671,
+               9, 10, 0.512, 0.376, 0.669,
+              10, 10, 0.511, 0.375, 0.667,
+              11, 10, 0.510, 0.375, 0.664,
+              12, 10, 0.508, 0.374, 0.662,
+              13, 10, 0.507, 0.374, 0.659,
+              14, 10, 0.505, 0.373, 0.657,
+              15, 10, 0.504, 0.373, 0.654,
+              16, 10, 0.502, 0.372, 0.652,
+              17, 10, 0.501, 0.372, 0.649,
+              18, 10, 0.499, 0.372, 0.647,
+              19, 10, 0.498, 0.371, 0.644,
+              20, 10, 0.496, 0.371, 0.641,
+              21, 10, 0.495, 0.371, 0.639,
+              22, 10, 0.493, 0.370, 0.636,
+              23, 10, 0.492, 0.370, 0.633,
+              24, 10, 0.490, 0.370, 0.630,
+              25, 10, 0.489, 0.369, 0.628,
+              26, 10, 0.487, 0.369, 0.625,
+              27, 10, 0.485, 0.369, 0.622,
+              28, 10, 0.484, 0.368, 0.619,
+              29, 10, 0.482, 0.368, 0.616,
+              30, 10, 0.481, 0.368, 0.613,
+              31, 10, 0.479, 0.368, 0.610,
+               1, 11, 0.478, 0.368, 0.607,
+               2, 11, 0.476, 0.367, 0.604,
+               3, 11, 0.475, 0.367, 0.601,
+               4, 11, 0.473, 0.367, 0.598,
+               5, 11, 0.471, 0.367, 0.595,
+               6, 11, 0.470, 0.367, 0.592,
+               7, 11, 0.468, 0.367, 0.589,
+               8, 11, 0.467, 0.366, 0.586,
+               9, 11, 0.465, 0.366, 0.583,
+              10, 11, 0.464, 0.366, 0.580,
+              11, 11, 0.462, 0.366, 0.577,
+              12, 11, 0.461, 0.366, 0.574,
+              13, 11, 0.459, 0.366, 0.571,
+              14, 11, 0.458, 0.366, 0.568,
+              15, 11, 0.456, 0.366, 0.565,
+              16, 11, 0.455, 0.366, 0.562,
+              17, 11, 0.454, 0.366, 0.559,
+              18, 11, 0.452, 0.365, 0.556,
+              19, 11, 0.451, 0.365, 0.553,
+              20, 11, 0.450, 0.365, 0.550,
+              21, 11, 0.448, 0.365, 0.547,
+              22, 11, 0.447, 0.365, 0.544,
+              23, 11, 0.446, 0.365, 0.542,
+              24, 11, 0.445, 0.365, 0.539,
+              25, 11, 0.443, 0.365, 0.536,
+              26, 11, 0.442, 0.365, 0.533,
+              27, 11, 0.441, 0.365, 0.531,
+              28, 11, 0.440, 0.365, 0.528,
+              29, 11, 0.439, 0.365, 0.526,
+              30, 11, 0.438, 0.365, 0.523,
+               1, 12, 0.437, 0.365, 0.521,
+               2, 12, 0.436, 0.365, 0.519,
+               3, 12, 0.435, 0.365, 0.517,
+               4, 12, 0.434, 0.365, 0.515,
+               5, 12, 0.434, 0.365, 0.513,
+               6, 12, 0.433, 0.365, 0.511,
+               7, 12, 0.432, 0.365, 0.509,
+               8, 12, 0.431, 0.365, 0.507,
+               9, 12, 0.431, 0.365, 0.505,
+              10, 12, 0.430, 0.365, 0.504,
+              11, 12, 0.430, 0.365, 0.502,
+              12, 12, 0.429, 0.365, 0.501,
+              13, 12, 0.429, 0.365, 0.500,
+              14, 12, 0.429, 0.365, 0.498,
+              15, 12, 0.428, 0.365, 0.497,
+              16, 12, 0.428, 0.365, 0.496,
+              17, 12, 0.428, 0.365, 0.496,
+              18, 12, 0.428, 0.365, 0.495,
+              19, 12, 0.428, 0.365, 0.494,
+              20, 12, 0.428, 0.365, 0.494,
+              21, 12, 0.428, 0.365, 0.494,
+              22, 12, 0.428, 0.365, 0.493,
+              23, 12, 0.429, 0.365, 0.493,
+              24, 12, 0.429, 0.366, 0.493,
+              25, 12, 0.429, 0.366, 0.493,
+              26, 12, 0.430, 0.366, 0.494,
+              27, 12, 0.430, 0.366, 0.494,
+              28, 12, 0.431, 0.366, 0.495,
+              29, 12, 0.431, 0.366, 0.495,
+              30, 12, 0.432, 0.366, 0.496,
+              31, 12, 0.433, 0.366, 0.497),ncol=5,byrow=TRUE);
+        dimnames(RESULT) <- list(1:366,c("day","month","grad_Tmean","grad_Tmin","grad_Tmax"));
+        return(RESULT);
+      }
+
+
+
+    ##Format_______________________________________________________________________________________
+      HypsoData <- as.double(HypsoData);
+      ZInputs   <- as.double(ZInputs);
+
+
+    ##ElevationLayers_Creation_____________________________________________________________________
+      ZLayers   <-  as.double(rep(NA,NLayers));
+      if(!identical(HypsoData,as.double(rep(NA,101)))){
+        nmoy   <- 100 %/% NLayers;
+        nreste <- 100 %% NLayers;
+        ncont  <- 0;
+        for(iLayer in 1:NLayers){
+          if(nreste > 0){ nn <- nmoy+1; nreste <- nreste-1; } else { nn <- nmoy; }
+          if(nn==1){ ZLayers[iLayer] <- HypsoData[ncont+1]; }
+          if(nn==2){ ZLayers[iLayer] <- 0.5 * (HypsoData[ncont+1] + HypsoData[ncont+2]); }
+          if(nn>2 ){ ZLayers[iLayer] <- HypsoData[ncont+nn/2]; }
+          ncont <- ncont+nn;
+        }
+      }
+  
+
+    ##Precipitation_extrapolation__________________________________________________________________
+      ##Initialisation
+      LayerPrecip <- list();
+      if(identical(ZInputs,HypsoData[51]) & NLayers==1){
+        LayerPrecip[[1]] <- as.double(Precip);
+      } else {
+      ##Elevation_gradients_for_daily_mean_precipitation
+        GradP    <- GradP_Valery2010(); ### single value
+        TabGradP <- rep(GradP,length(Precip));
+      ##Extrapolation
+        ##Thresold_of_inputs_median_elevation
+        Zthreshold <- 4000;
+        ##_On_each_elevation_layer...
+        for(iLayer in 1:NLayers){
+          ##If_layer_elevation_smaller_than_Zthreshold
+          if(ZLayers[iLayer] <= Zthreshold){ 
+            LayerPrecip[[iLayer]] <- as.double(Precip*exp(TabGradP*(ZLayers[iLayer]-ZInputs))); 
+          ##If_layer_elevation_greater_than_Zthreshold
+          } else {
+            ##If_inputs_median_elevation_smaller_than_Zthreshold
+            if(ZInputs <= Zthreshold){ LayerPrecip[[iLayer]] <- as.double(Precip*exp(TabGradP*(Zthreshold-ZInputs)));
+            ##If_inputs_median_elevation_greater_then_Zthreshold
+            } else { LayerPrecip[[iLayer]] <- as.double(Precip); }
+          }
+        }
+      }
+
+
+
+    ##Temperature_extrapolation____________________________________________________________________
+      ##Initialisation
+      LayerTempMean <- list(); LayerTempMin <- list(); LayerTempMax <- list();
+      if(identical(ZInputs,HypsoData[51]) & NLayers==1){
+        LayerTempMean[[1]] <- as.double(TempMean);
+        if(!is.null(TempMin) & !is.null(TempMax)){ LayerTempMin[[1]] <- as.double(TempMin); LayerTempMax[[1]] <- as.double(TempMax); }
+      } else {
+      ##Elevation_gradients_for_daily_mean_min_and_max_temperature
+        GradT    <- GradT_Valery2010(); ### Day, Month, GradTmean, GradTmin and GradTmax for iCol=1,2,3,4,5, respectively
+        TabGradT <- matrix(NA,nrow=length(Precip),ncol=3);
+        for(iday in 1:366){
+          ind <- which(as.numeric(format(DatesR,format="%d"))==GradT[iday,1] & as.numeric(format(DatesR,format="%m"))==GradT[iday,2]);
+          TabGradT[ind,1:3] <- GradT[iday,3:5];
+        }
+      ##Extrapolation
+        ##On_each_elevation_layer...
+        for(iLayer in 1:NLayers){
+          LayerTempMean[[iLayer]] <- as.double(TempMean + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,1])/100);
+          if(!is.null(TempMin) & !is.null(TempMax)){
+          LayerTempMin[[iLayer]]  <- as.double(TempMin  + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,2])/100);
+          LayerTempMax[[iLayer]]  <- as.double(TempMax  + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,3])/100);
+          }
+        }
+      }
+
+
+ 
+    ##Solid_Fraction_for_each_elevation_layer______________________________________________________
+      LayerFracSolidPrecip <- list();
+      ##Thresold_of_inputs_median_elevation
+      Zthreshold <- 1500;
+      ##On_each_elevation_layer...
+      for(iLayer in 1:NLayers){
+        Option <- "USACE";
+        if(!is.na(ZInputs)){ if(ZInputs < Zthreshold & !is.null(TempMin) & !is.null(TempMax)){ Option <- "Hydrotel"; } }
+        ##Turcotte_formula_from_Hydrotel
+        if(Option=="Hydrotel"){
+          TempMin <- LayerTempMin[[iLayer]];
+          TempMax <- LayerTempMax[[iLayer]];
+          SolidFraction <- 1 - TempMax/(TempMax - TempMin);
+          SolidFraction[TempMin >= 0] <- 0;
+          SolidFraction[TempMax <= 0] <- 1;
+        }
+        ##USACE_formula
+        if(Option=="USACE"){
+          USACE_Tmin <- -1.0;
+          USACE_Tmax <-  3.0;
+          TempMean <- LayerTempMean[[iLayer]];
+          SolidFraction <- 1- (TempMean - USACE_Tmin)/(USACE_Tmax - USACE_Tmin);
+          SolidFraction[TempMean > USACE_Tmax] <- 0;
+          SolidFraction[TempMean < USACE_Tmin] <- 1;
+        }
+        LayerFracSolidPrecip[[iLayer]] <- as.double(SolidFraction);
+      }
+
+
+
+
+    ##END__________________________________________________________________________________________
+    return(list(LayerPrecip=LayerPrecip,LayerTempMean=LayerTempMean,LayerTempMin=LayerTempMin,LayerTempMax=LayerTempMax,
+                LayerFracSolidPrecip=LayerFracSolidPrecip,ZLayers=ZLayers));
+
+}
+
+
diff --git a/R/ErrorCrit.R b/R/ErrorCrit.R
new file mode 100644
index 00000000..fe874c83
--- /dev/null
+++ b/R/ErrorCrit.R
@@ -0,0 +1,22 @@
+#*****************************************************************************************************************
+#' Function which computes an error criterion with the provided function.
+#*****************************************************************************************************************
+#' @title  Error criterion using the provided function
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}
+#' @example tests/example_ErrorCrit.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsCrit      [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  OutputsModel    [object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#' @param  FUN_CRIT        [function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)
+#' @param  quiet           (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs, see \code{\link{ErrorCrit_RMSE}} or \code{\link{ErrorCrit_NSE}} for details
+#*****************************************************************************************************************'
+ErrorCrit <- function(InputsCrit,OutputsModel,FUN_CRIT,quiet=FALSE){
+    return( FUN_CRIT(InputsCrit,OutputsModel,quiet=quiet) )
+}
+
diff --git a/R/ErrorCrit_KGE.R b/R/ErrorCrit_KGE.R
new file mode 100644
index 00000000..b7d8972b
--- /dev/null
+++ b/R/ErrorCrit_KGE.R
@@ -0,0 +1,128 @@
+#*****************************************************************************************************************
+#' Function which computes an error criterion based on the KGE formula proposed by Gupta et al. (2009).
+#'
+#' 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 
+#' (e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+#*****************************************************************************************************************
+#' @title  Error criterion based on the KGE formula
+#' @author Laurent Coron (June 2014)
+#' @references
+#'   Gupta, H. V., Kling, H., Yilmaz, K. K. and Martinez, G. F. (2009), 
+#'       Decomposition of the mean squared error and NSE performance criteria: Implications
+#'       for improving hydrological modelling, Journal of Hydrology, 377(1-2), 80-91, doi:10.1016/j.jhydrol.2009.08.003. \cr
+#' @seealso \code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE2}}
+#' @examples ## see example of the ErrorCrit function
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsCrit      [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  OutputsModel    [object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#' @param  quiet           (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+#'          \emph{$CritName       }   \tab   [character] name of the criterion \cr
+#'          \emph{$SubCritValues  }   \tab   [numeric] values of the sub-criteria \cr
+#'          \emph{$SubCritNames   }   \tab   [character] names of the sub-criteria \cr
+#'          \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+#'          \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+#'          \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+#'          }
+#*****************************************************************************************************************
+ErrorCrit_KGE <- function(InputsCrit,OutputsModel,quiet=FALSE){
+
+
+##Arguments_check________________________________
+  if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+  if(inherits(OutputsModel,"OutputsModel")==FALSE){ stop("OutputsModel must be of class 'OutputsModel' \n"); return(NULL); }  
+
+
+##Initialisation_________________________________
+  CritName <- NA;
+  if(InputsCrit$transfo==""    ){ CritName <- "KGE[Q]"      ; }
+  if(InputsCrit$transfo=="sqrt"){ CritName <- "KGE[sqrt(Q)]"; }
+  if(InputsCrit$transfo=="log" ){ CritName <- "KGE[log(Q)]" ; }
+  if(InputsCrit$transfo=="inv" ){ CritName <- "KGE[1/Q]"    ; }
+  if(InputsCrit$transfo=="sort"){ CritName <- "KGE[sort(Q)]"; }
+  CritValue       <- NA;
+  CritBestValue   <- +1;
+  Multiplier      <- -1; ### must be equal to -1 or +1 only
+
+
+##Data_preparation_______________________________
+  VarObs <- InputsCrit$Qobs  ; VarObs[!InputsCrit$BoolCrit] <- NA; 
+  VarSim <- OutputsModel$Qsim; VarSim[!InputsCrit$BoolCrit] <- NA;  
+  ##Data_transformation
+  if("Ind_zeroes" %in% names(InputsCrit) & "epsilon" %in% names(InputsCrit)){ if(length(InputsCrit$Ind_zeroes)>0){
+    VarObs <- VarObs + InputsCrit$epsilon;
+    VarSim <- VarSim + InputsCrit$epsilon;
+  } }
+  if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
+  if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
+  if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
+  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  ##TS_ignore
+  TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
+  Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
+  if(sum(!TS_ignore)==0){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); }
+  if(sum(!TS_ignore)==1){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); } ### to avoid a problem in standard deviation computation
+  if(inherits(OutputsModel,"hourly" )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"daily"  )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"monthly")){ WarningTS <-  12; }
+  if(inherits(OutputsModel,"yearly" )){ WarningTS <-   3; }
+  if(sum(!TS_ignore)<WarningTS & !quiet){ warning(paste("\t criterion computed on less than ",WarningTS," time-steps \n",sep="")); }
+  ##Other_variables_preparation
+  meanVarObs <- mean(VarObs[!TS_ignore]);
+  meanVarSim <- mean(VarSim[!TS_ignore]);
+  iCrit           <- 0;
+  SubCritNames    <- NULL;
+  SubCritValues   <- NULL;
+
+
+
+##SubErrorCrit_____KGE_rPearson__________________
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <- paste(CritName," rPEARSON(sim vs. obs)",sep="");
+  SubCritValues[iCrit] <- NA;
+  Numer <- sum( (VarObs[!TS_ignore]-meanVarObs)*(VarSim[!TS_ignore]-meanVarSim) );
+  Deno1 <- sqrt( sum((VarObs[!TS_ignore]-meanVarObs)^2) );
+  Deno2 <- sqrt( sum((VarSim[!TS_ignore]-meanVarSim)^2) );
+  if(Numer==0){ if(Deno1==0 & Deno2==0){ Crit <- 1; } else { Crit <- 0; } 
+  } else { Crit  <- Numer/(Deno1*Deno2); }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##SubErrorCrit_____KGE_alpha_____________________
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <-  paste(CritName," STDEVsim/STDEVobs",sep="");
+  SubCritValues[iCrit] <- NA;
+  Numer <- sd(VarSim[!TS_ignore]); 
+  Denom <- sd(VarObs[!TS_ignore]); 
+  if(Numer==0 & Denom==0){ Crit <- 1; } else { Crit <- Numer/Denom ; }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##SubErrorCrit_____KGE_beta______________________  
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <-  paste(CritName," MEANsim/MEANobs",sep="");
+  SubCritValues[iCrit] <- NA;
+  if(meanVarSim==0 & meanVarObs==0){ Crit <- 1; } else { Crit <- meanVarSim/meanVarObs ; }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##ErrorCrit______________________________________
+  if(sum(is.na(SubCritValues))==0){
+  CritValue <- ( 1 - sqrt( (SubCritValues[1]-1)^2 + (SubCritValues[2]-1)^2 + (SubCritValues[3]-1)^2 ) );
+  }
+
+
+##Output_________________________________________
+  OutputsCrit <- list(CritValue,CritName,SubCritValues,SubCritNames,CritBestValue,Multiplier,Ind_TS_ignore);
+  names(OutputsCrit) <- c("CritValue","CritName","SubCritValues","SubCritNames","CritBestValue","Multiplier","Ind_notcomputed");
+  return(OutputsCrit);
+
+}
+
+
diff --git a/R/ErrorCrit_KGE2.R b/R/ErrorCrit_KGE2.R
new file mode 100644
index 00000000..48741328
--- /dev/null
+++ b/R/ErrorCrit_KGE2.R
@@ -0,0 +1,130 @@
+#*****************************************************************************************************************
+#' Function which computes an error criterion based on the KGE' formula proposed by Kling et al. (2012).
+#'
+#' 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 
+#' (e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+#*****************************************************************************************************************
+#' @title  Error criterion based on the KGE' formula
+#' @author Laurent Coron (June 2014)
+#' @references
+#'   Gupta, H. V., Kling, H., Yilmaz, K. K. and Martinez, G. F. (2009), 
+#'       Decomposition of the mean squared error and NSE performance criteria: Implications
+#'       for improving hydrological modelling, Journal of Hydrology, 377(1-2), 80-91, doi:10.1016/j.jhydrol.2009.08.003. \cr
+#'   Kling, H., Fuchs, M. and Paulin, M. (2012), 
+#'       Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios,
+#'       Journal of Hydrology, 424-425, 264-277, doi:10.1016/j.jhydrol.2012.01.011.
+#' @seealso \code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}
+#' @examples ## see example of the ErrorCrit function
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsCrit      [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  OutputsModel    [object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#' @param  quiet           (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+#'          \emph{$CritName       }   \tab   [character] name of the criterion \cr
+#'          \emph{$SubCritValues  }   \tab   [numeric] values of the sub-criteria \cr
+#'          \emph{$SubCritNames   }   \tab   [character] names of the sub-criteria \cr
+#'          \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+#'          \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+#'          \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+#'          }
+#*****************************************************************************************************************'
+ErrorCrit_KGE2 <- function(InputsCrit,OutputsModel,quiet=FALSE){
+
+
+##Arguments_check________________________________
+  if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+  if(inherits(OutputsModel,"OutputsModel")==FALSE){ stop("OutputsModel must be of class 'OutputsModel' \n"); return(NULL); }  
+
+
+##Initialisation_________________________________
+  CritName <- NA;
+  if(InputsCrit$transfo==""    ){ CritName <- "KGE'[Q]"      ; }
+  if(InputsCrit$transfo=="sqrt"){ CritName <- "KGE'[sqrt(Q)]"; }
+  if(InputsCrit$transfo=="log" ){ CritName <- "KGE'[log(Q)]" ; }
+  if(InputsCrit$transfo=="inv" ){ CritName <- "KGE'[1/Q]"    ; }
+  if(InputsCrit$transfo=="sort"){ CritName <- "KGE'[sort(Q)]"; }
+  CritValue       <- NA;
+  CritBestValue   <- +1;
+  Multiplier      <- -1; ### must be equal to -1 or +1 only
+
+
+##Data_preparation_______________________________
+  VarObs <- InputsCrit$Qobs  ; VarObs[!InputsCrit$BoolCrit] <- NA; 
+  VarSim <- OutputsModel$Qsim; VarSim[!InputsCrit$BoolCrit] <- NA;  
+  ##Data_transformation
+  if("Ind_zeroes" %in% names(InputsCrit) & "epsilon" %in% names(InputsCrit)){ if(length(InputsCrit$Ind_zeroes)>0){
+    VarObs <- VarObs + InputsCrit$epsilon;
+    VarSim <- VarSim + InputsCrit$epsilon;
+  } }
+  if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
+  if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
+  if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
+  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  ##TS_ignore
+  TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
+  Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
+  if(sum(!TS_ignore)==0){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); }
+  if(sum(!TS_ignore)==1){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); } ### to avoid a problem in standard deviation computation
+  if(inherits(OutputsModel,"hourly" )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"daily"  )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"monthly")){ WarningTS <-  12; }
+  if(inherits(OutputsModel,"yearly" )){ WarningTS <-   3; }
+  if(sum(!TS_ignore)<WarningTS & !quiet){ warning(paste("\t criterion computed on less than ",WarningTS," time-steps \n",sep="")); }
+  ##Other_variables_preparation
+  meanVarObs <- mean(VarObs[!TS_ignore]);
+  meanVarSim <- mean(VarSim[!TS_ignore]);
+  iCrit           <- 0;
+  SubCritNames    <- NULL;
+  SubCritValues   <- NULL;
+
+
+##SubErrorCrit_____KGE_rPearson__________________
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <- paste(CritName," rPEARSON(sim vs. obs)",sep="");
+  SubCritValues[iCrit] <- NA;
+  Numer <- sum( (VarObs[!TS_ignore]-meanVarObs)*(VarSim[!TS_ignore]-meanVarSim) );
+  Deno1 <- sqrt( sum((VarObs[!TS_ignore]-meanVarObs)^2) );
+  Deno2 <- sqrt( sum((VarSim[!TS_ignore]-meanVarSim)^2) );
+  if(Numer==0){ if(Deno1==0 & Deno2==0){ Crit <- 1; } else { Crit <- 0; } 
+  } else { Crit  <- Numer/(Deno1*Deno2); }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##SubErrorCrit_____KGE_gama______________________
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <-  paste(CritName," CVsim/CVobs",sep="");
+  SubCritValues[iCrit] <- NA;
+  if(meanVarSim==0){ if(sd(VarSim[!TS_ignore])==0){ CVsim <- 1; } else { CVsim <- 99999; } } else { CVsim <- sd(VarSim[!TS_ignore])/meanVarSim; }
+  if(meanVarObs==0){ if(sd(VarObs[!TS_ignore])==0){ CVobs <- 1; } else { CVobs <- 99999; } } else { CVobs <- sd(VarObs[!TS_ignore])/meanVarObs; }
+  if(CVsim==0 & CVobs==0){ Crit <- 1; } else { Crit <- CVsim/CVobs ; }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##SubErrorCrit_____KGE_beta______________________
+  iCrit <- iCrit+1;
+  SubCritNames[iCrit]  <-  paste(CritName," MEANsim/MEANobs",sep="");
+  SubCritValues[iCrit] <- NA;
+  if(meanVarSim==0 & meanVarObs==0){ Crit <- 1; } else { Crit <- meanVarSim/meanVarObs ; }
+  if(is.numeric(Crit) & is.finite(Crit)){ SubCritValues[iCrit] <- Crit; }
+
+
+##ErrorCrit______________________________________
+  if(sum(is.na(SubCritValues))==0){
+  CritValue <- ( 1 - sqrt( (SubCritValues[1]-1)^2 + (SubCritValues[2]-1)^2 + (SubCritValues[3]-1)^2 ) );
+  }
+
+
+##Output_________________________________________
+  OutputsCrit <- list(CritValue,CritName,SubCritValues,SubCritNames,CritBestValue,Multiplier,Ind_TS_ignore);
+  names(OutputsCrit) <- c("CritValue","CritName","SubCritValues","SubCritNames","CritBestValue","Multiplier","Ind_notcomputed");
+  return(OutputsCrit);
+
+}
+
+
diff --git a/R/ErrorCrit_NSE.R b/R/ErrorCrit_NSE.R
new file mode 100644
index 00000000..3db43d1b
--- /dev/null
+++ b/R/ErrorCrit_NSE.R
@@ -0,0 +1,92 @@
+#*****************************************************************************************************************
+#' Function which computes an error criterion based on the NSE formula proposed by Nash & Sutcliffe (1970).
+#'
+#' 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 
+#' (e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+#*****************************************************************************************************************
+#' @title  Error criterion based on the NSE formula
+#' @author Laurent Coron (June 2014)
+#' @references
+#'   Nash, J.E. and Sutcliffe, J.V. (1970), 
+#'       River flow forecasting through conceptual models part 1.
+#'       A discussion of principles, Journal of Hydrology, 10(3), 282-290, doi:10.1016/0022-1694(70)90255-6. \cr
+#' @seealso \code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_KGE}}, \code{\link{ErrorCrit_KGE2}}
+#' @examples ## see example of the ErrorCrit function
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsCrit      [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  OutputsModel    [object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#' @param  quiet           (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+#'          \emph{$CritName       }   \tab   [character] name of the criterion \cr
+#'          \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+#'          \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+#'          \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+#'          }
+#*****************************************************************************************************************
+ErrorCrit_NSE <- function(InputsCrit,OutputsModel,quiet=FALSE){
+
+
+##Arguments_check________________________________
+  if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+  if(inherits(OutputsModel,"OutputsModel")==FALSE){ stop("OutputsModel must be of class 'OutputsModel' \n"); return(NULL); }  
+
+
+##Initialisation_________________________________
+  CritName <- NA;
+  if(InputsCrit$transfo==""    ){ CritName <- "NSE[Q]"      ; }
+  if(InputsCrit$transfo=="sqrt"){ CritName <- "NSE[sqrt(Q)]"; }
+  if(InputsCrit$transfo=="log" ){ CritName <- "NSE[log(Q)]" ; }
+  if(InputsCrit$transfo=="inv" ){ CritName <- "NSE[1/Q]"    ; }
+  if(InputsCrit$transfo=="sort"){ CritName <- "NSE[sort(Q)]"; }
+  CritValue       <- NA;
+  CritBestValue   <- +1;
+  Multiplier      <- -1; ### must be equal to -1 or +1 only
+
+
+##Data_preparation_______________________________
+  VarObs <- InputsCrit$Qobs  ; VarObs[!InputsCrit$BoolCrit] <- NA; 
+  VarSim <- OutputsModel$Qsim; VarSim[!InputsCrit$BoolCrit] <- NA;  
+  ##Data_transformation
+  if("Ind_zeroes" %in% names(InputsCrit) & "epsilon" %in% names(InputsCrit)){ if(length(InputsCrit$Ind_zeroes)>0){
+    VarObs <- VarObs + InputsCrit$epsilon;
+    VarSim <- VarSim + InputsCrit$epsilon;
+  } }
+  if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
+  if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
+  if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
+  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  ##TS_ignore
+  TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
+  Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
+  if(sum(!TS_ignore)==0){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); }
+  if(inherits(OutputsModel,"hourly" )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"daily"  )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"monthly")){ WarningTS <-  12; }
+  if(inherits(OutputsModel,"yearly" )){ WarningTS <-   3; }
+  if(sum(!TS_ignore)<WarningTS & !quiet){ warning(paste("\t criterion computed on less than ",WarningTS," time-steps \n",sep="")); }
+  ##Other_variables_preparation
+  meanVarObs <- mean(VarObs[!TS_ignore]);
+  meanVarSim <- mean(VarSim[!TS_ignore]);
+
+
+##ErrorCrit______________________________________
+  Emod <- sum((VarSim[!TS_ignore]-VarObs[!TS_ignore])^2);
+  Eref <- sum((VarObs[!TS_ignore]-mean(VarObs[!TS_ignore]))^2);
+  if(Emod==0 & Eref==0){ Crit <- 0; } else { Crit <- (1-Emod/Eref); }
+  if(is.numeric(Crit) & is.finite(Crit)){ CritValue <- Crit; }
+
+
+##Output_________________________________________
+  OutputsCrit <- list(CritValue,CritName,CritBestValue,Multiplier,Ind_TS_ignore);
+  names(OutputsCrit) <- c("CritValue","CritName","CritBestValue","Multiplier","Ind_notcomputed");
+  return(OutputsCrit);
+
+}
+
+
diff --git a/R/ErrorCrit_RMSE.R b/R/ErrorCrit_RMSE.R
new file mode 100644
index 00000000..b4d1d93a
--- /dev/null
+++ b/R/ErrorCrit_RMSE.R
@@ -0,0 +1,86 @@
+#*****************************************************************************************************************
+#' Function which computes an error criterion based on the root mean square error (RMSE).
+#'
+#' 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 
+#' (e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+#*****************************************************************************************************************
+#' @title  Error criterion based on the RMSE
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}, \code{\link{ErrorCrit_KGE2}}
+#' @examples ## see example of the ErrorCrit function
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsCrit      [object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details
+#' @param  OutputsModel    [object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#' @param  quiet           (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:
+#'          \tabular{ll}{
+#'          \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+#'          \emph{$CritName       }   \tab   [character] name of the criterion \cr
+#'          \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+#'          \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+#'          \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+#'          }
+#*****************************************************************************************************************
+ErrorCrit_RMSE <- function(InputsCrit,OutputsModel,quiet=FALSE){
+
+
+##Arguments_check________________________________
+  if(inherits(InputsCrit,"InputsCrit")==FALSE){ stop("InputsCrit must be of class 'InputsCrit' \n"); return(NULL); }  
+  if(inherits(OutputsModel,"OutputsModel")==FALSE){ stop("OutputsModel must be of class 'OutputsModel' \n"); return(NULL); }  
+
+
+##Initialisation_________________________________
+  CritName <- NA;
+  if(InputsCrit$transfo==""    ){ CritName <- "RMSE[Q]"      ; }
+  if(InputsCrit$transfo=="sqrt"){ CritName <- "RMSE[sqrt(Q)]"; }
+  if(InputsCrit$transfo=="log" ){ CritName <- "RMSE[log(Q)]" ; }
+  if(InputsCrit$transfo=="inv" ){ CritName <- "RMSE[1/Q]"    ; }
+  if(InputsCrit$transfo=="sort"){ CritName <- "RMSE[sort(Q)]"; }
+
+  CritValue       <- NA;
+  CritBestValue   <- +1;
+  Multiplier      <- +1; ### must be equal to -1 or +1 only
+
+
+##Data_preparation_______________________________
+  VarObs <- InputsCrit$Qobs  ; VarObs[!InputsCrit$BoolCrit] <- NA; 
+  VarSim <- OutputsModel$Qsim; VarSim[!InputsCrit$BoolCrit] <- NA;  
+  ##Data_transformation
+  if("Ind_zeroes" %in% names(InputsCrit) & "epsilon" %in% names(InputsCrit)){ if(length(InputsCrit$Ind_zeroes)>0){
+    VarObs <- VarObs + InputsCrit$epsilon;
+    VarSim <- VarSim + InputsCrit$epsilon;
+  } }
+  if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
+  if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
+  if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
+  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  ##TS_ignore
+  TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
+  Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
+  if(sum(!TS_ignore)==0){ OutputsCrit <- list(NA); names(OutputsCrit) <- c("CritValue"); return(OutputsCrit); }
+  if(inherits(OutputsModel,"hourly" )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"daily"  )){ WarningTS <- 365; }
+  if(inherits(OutputsModel,"monthly")){ WarningTS <-  12; }
+  if(inherits(OutputsModel,"yearly" )){ WarningTS <-   3; }
+  if(sum(!TS_ignore)<WarningTS & !quiet){ warning(paste("\t criterion computed on less than ",WarningTS," time-steps \n",sep="")); }
+
+
+##ErrorCrit______________________________________
+  Numer <- sum((VarSim-VarObs)^2,na.rm=TRUE);
+  Denom <- sum(!is.na(VarObs));
+  if(Numer==0){ Crit <- 0; } else { Crit <- sqrt(Numer/Denom); }
+  if(is.numeric(Crit) & is.finite(Crit)){ CritValue <- Crit; }
+
+
+##Output_________________________________________
+  OutputsCrit <- list(CritValue,CritName,CritBestValue,Multiplier,Ind_TS_ignore);
+  names(OutputsCrit) <- c("CritValue","CritName","CritBestValue","Multiplier","Ind_notcomputed");
+  return(OutputsCrit);
+
+}
+
+
diff --git a/R/PEdaily_Oudin.R b/R/PEdaily_Oudin.R
new file mode 100644
index 00000000..1f3b2c6d
--- /dev/null
+++ b/R/PEdaily_Oudin.R
@@ -0,0 +1,58 @@
+#*****************************************************************************************************************
+#' Function which computes daily PE using the formula from Oudin et al. (2005).
+#*****************************************************************************************************************
+#' @title   Computation of daily series of potential evapotranspiration with Oudin's formula
+#' @author  Laurent Coron (December 2013)
+#' @references
+#'   Oudin, L., F. Hervieu, C. Michel, C. Perrin, V. Andréassian, F. Anctil and C. Loumagne (2005),
+#'       Which potential evapotranspiration input for a lumped rainfall-runoff model?: Part 2-Towards a 
+#'       simple and efficient potential evapotranspiration model for rainfall-runoff modelling, Journal of Hydrology, 
+#'       303(1-4), 290-306, doi:10.1016/j.jhydrol.2004.08.026.
+#' @examples 
+#'    require(airGR)
+#'    data(L0123001)
+#'    PotEvap <- PEdaily_Oudin(JD=as.POSIXlt(BasinObs$DatesR)$yday,Temp=BasinObs$T,LatRad=0.8)
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param   JD       [numeric] time series of julian day [-]
+#' @param   Temp     [numeric] time series of daily mean air temperature [degC]
+#' @param   LatRad   [numeric] latitude of measurement for the temperature series [rad]
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [numeric] time series of daily potential evapotranspiration [mm/d]
+#*****************************************************************************************************************'
+PEdaily_Oudin <- function(JD,Temp,LatRad){
+
+    PE_Oudin_D <- rep(NA,length(Temp));
+    for(k in 1:length(Temp)){
+
+      FI <- LatRad  ### latitude in rad
+      ### FI <- LatDeg/(180/pi)  ### conversion from deg to rad
+      COSFI <- cos(FI)
+      AFI <- abs(LatRad/42.)
+     
+      TETA <- 0.4093*sin(JD[k]/58.1-1.405)
+      COSTETA <- cos(TETA)
+      COSGZ <- max(0.001,cos(FI-TETA))
+      GZ <- acos(COSGZ)
+      COSGZ2 <- COSGZ*COSGZ
+      if(COSGZ2 >= 1){ SINGZ <- 0. } else { SINGZ <- sqrt(1.-COSGZ2) }
+      COSOM <- 1.-COSGZ/COSFI/COSTETA
+      if(COSOM < -1.){ COSOM <- -1. }
+      if(COSOM >  1.){ COSOM <-  1. }
+      COSOM2 <- COSOM*COSOM
+      if(COSOM2 >= 1.){ SINOM <- 0. } else { SINOM <- sqrt(1.-COSOM2) }
+      OM <- acos(COSOM)
+      COSPZ <- COSGZ+COSFI*COSTETA*(SINOM/OM-1.)
+      if(COSPZ < 0.001){ COSPZ <- 0.001 }
+      ETA <- 1.+cos(JD[k]/58.1)/30.
+      GE <- 446.*OM*COSPZ*ETA
+      
+      if(Temp[k] >= -5.0) { PE_Oudin_D[k] <- GE*(Temp[k]+5.)/100./28.5 } else { PE_Oudin_D[k] <- 0 }
+
+    }
+
+    return(PE_Oudin_D);
+
+}
+
diff --git a/R/RunModel.R b/R/RunModel.R
new file mode 100644
index 00000000..4acfd1e2
--- /dev/null
+++ b/R/RunModel.R
@@ -0,0 +1,22 @@
+#*****************************************************************************************************************
+#' Function which performs a single model run with the provided function.
+#*****************************************************************************************************************
+#' @title  Run with the provided hydrological model function
+#' @author Laurent Coron (June 2014)
+#' @seealso \code{\link{RunModel_GR4J}}, \code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of model parameters
+#' @param  FUN_MOD             [function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+#*****************************************************************************************************************'
+RunModel <- function(InputsModel,RunOptions,Param,FUN_MOD){
+    return( FUN_MOD(InputsModel,RunOptions,Param) )
+}
+
diff --git a/R/RunModel_CemaNeige.R b/R/RunModel_CemaNeige.R
new file mode 100644
index 00000000..cfce9e20
--- /dev/null
+++ b/R/RunModel_CemaNeige.R
@@ -0,0 +1,132 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the CemaNeige daily snow module.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the CemaNeige snow module
+#' @author Laurent Coron (January 2014)
+#' @references
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine? 
+#'       Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? 
+#'       Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+#' @seealso \code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_CemaNeige.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 2 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+#'                             CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }                                  \tab [POSIXlt] series of dates                                    \cr
+#'          \emph{$CemaNeigeLayers}                           \tab [list] list of CemaNeige outputs (1 list per layer)          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                    \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                     \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                           \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]           \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                             \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm]                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm]                    \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm]   \cr
+#'          \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: CemaNeige states [mm & degC] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_CemaNeige <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 2;
+    FortranOutputsCemaNeige <- c("Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt");
+
+    ##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); }  
+      if(inherits(InputsModel,"CemaNeige"  )==FALSE){ stop("InputsModel must be of class 'CemaNeige'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"CemaNeige"   )==FALSE){ stop("RunOptions must be of class 'CemaNeige'    \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,0)){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1    <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      IndPeriod2    <- (length(RunOptions$IndPeriod_WarmUp)+1):length(IndPeriod1);
+      ExportDatesR    <- "DatesR"   %in% RunOptions$Outputs_Sim;
+      ExportStateEnd  <- "StateEnd" %in% RunOptions$Outputs_Sim;
+
+
+
+    ##SNOW_MODULE________________________________________________________________________________##
+      ParamCemaNeige  <- Param;
+      NLayers         <- length(InputsModel$LayerPrecip);
+      if(sum(is.na(ParamCemaNeige))!=0){ stop("Param contains missing values \n"); return(NULL); }
+      if("all" %in% RunOptions$Outputs_Sim){ IndOutputsCemaNeige <- as.integer(1:length(FortranOutputsCemaNeige)); 
+      } else { IndOutputsCemaNeige <- which(FortranOutputsCemaNeige %in% RunOptions$Outputs_Sim);  }
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- "CemaNeigeLayers";
+
+    ##Call_DLL_CemaNeige_________________________
+      for(iLayer in 1:NLayers){
+        StateStartCemaNeige <- RunOptions$IniStates[ (2*(iLayer-1)+1):(2*(iLayer-1)+2) ];
+        RESULTS <- .Fortran("frun_cemaneige",PACKAGE="airgr",
+                        ##inputs
+                            LInputs=as.integer(length(IndPeriod1)),                                        ### length of input and output series
+                            InputsPrecip=InputsModel$LayerPrecip[[iLayer]][IndPeriod1],                    ### input series of total precipitation [mm/d]
+                            InputsFracSolidPrecip=InputsModel$LayerFracSolidPrecip[[iLayer]][IndPeriod1],  ### input series of fraction of solid precipitation [0-1]
+                            InputsTemp=InputsModel$LayerTemp[[iLayer]][IndPeriod1],                        ### input series of air mean temperature [degC]
+                            MeanAnSolidPrecip=RunOptions$MeanAnSolidPrecip[iLayer],                        ### value of annual mean solid precip [mm/y]
+                            NParam=as.integer(2),                                                          ### number of model parameter = 2
+                            Param=ParamCemaNeige,                                                          ### parameter set
+                            NStates=as.integer(2),                                                         ### number of state variables used for model initialising = 2
+                            StateStart=StateStartCemaNeige,                                                ### state variables used when the model run starts
+                            NOutputs=as.integer(length(IndOutputsCemaNeige)),                              ### number of output series
+                            IndOutputs=IndOutputsCemaNeige,                                                ### indices of output series
+                        ##outputs                                                               
+                            Outputs=matrix(as.double(-999.999),nrow=length(IndPeriod1),ncol=length(IndOutputsCemaNeige)),  ### output series [mm]
+                            StateEnd=rep(as.double(-999.999),as.integer(2))                                                ### state variables at the end of the model run (reservoir levels [mm] and HU)
+                         )
+        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];
+        if(ExportStateEnd){ CemaNeigeStateEnd <- c(CemaNeigeStateEnd,RESULTS$StateEnd); }
+        rm(RESULTS); 
+      } ###ENDFOR_iLayer
+      names(CemaNeigeLayers) <- paste("Layer",formatC(1:NLayers,width=2,flag="0"),sep="");
+
+      ##Output_data_preparation
+      if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
+        OutputsModel <- list(CemaNeigeLayers);
+        names(OutputsModel) <- NameCemaNeigeLayers;   }
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c("DatesR",NameCemaNeigeLayers);   }
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( list(CemaNeigeLayers),
+                           CemaNeigeStateEnd );
+        names(OutputsModel) <- c(NameCemaNeigeLayers,"StateEnd");   }
+      if(ExportDatesR==TRUE & ExportStateEnd==TRUE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           list(CemaNeigeLayers),
+                           CemaNeigeStateEnd );
+        names(OutputsModel) <- c("DatesR",NameCemaNeigeLayers,"StateEnd");   }
+
+    ##End
+      class(OutputsModel) <- c("OutputsModel","daily","CemaNeige");
+      return(OutputsModel);
+
+}
+  
diff --git a/R/RunModel_CemaNeigeGR4J.R b/R/RunModel_CemaNeigeGR4J.R
new file mode 100644
index 00000000..abde2411
--- /dev/null
+++ b/R/RunModel_CemaNeigeGR4J.R
@@ -0,0 +1,209 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the CemaNeige-GR4J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the CemaNeigeGR4J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Perrin, C., C. Michel and V. Andréassian (2003), 
+#'       Improvement of a parsimonious model for streamflow simulation, 
+#'       Journal of Hydrology, 279(1-4), 275-289, doi:10.1016/S0022-1694(03)00225-7. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine? 
+#'       Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? 
+#'       Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+#' @seealso \code{\link{RunModel_CemaNeigeGR5J}}, \code{\link{RunModel_CemaNeigeGR6J}}, \code{\link{RunModel_GR4J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_CemaNeigeGR4J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 6 parameters                                                             
+#'                             \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 X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+#'                             CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+#'          \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_CemaNeigeGR4J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 6;
+    FortranOutputsCemaNeige <- c("Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt");
+    FortranOutputsMod       <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(InputsModel,"CemaNeige"  )==FALSE){ stop("InputsModel must be of class 'CemaNeige'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(inherits(RunOptions,"CemaNeige"   )==FALSE){ stop("RunOptions must be of class 'CemaNeige'    \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1     <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      LInputSeries   <- as.integer(length(IndPeriod1))
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ParamCemaNeige <- Param[(length(Param)-1):length(Param)];
+      NParamMod      <- as.integer(length(Param)-2);
+      ParamMod       <- Param[1:NParamMod];
+      NLayers        <- length(InputsModel$LayerPrecip);
+      NStatesMod     <- as.integer(length(RunOptions$IniStates)-2*NLayers);
+      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)); 
+      } else { IndOutputsCemaNeige <- which(FortranOutputsCemaNeige %in% RunOptions$Outputs_Sim);  }
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- "CemaNeigeLayers";
+
+    ##Call_DLL_CemaNeige_________________________
+      for(iLayer in 1:NLayers){
+        StateStartCemaNeige <- RunOptions$IniStates[ (NStatesMod+2*(iLayer-1)+1):(NStatesMod+2*(iLayer-1)+2) ];
+        RESULTS <- .Fortran("frun_cemaneige",PACKAGE="airgr",
+                        ##inputs
+                            LInputs=LInputSeries,                                                          ### length of input and output series
+                            InputsPrecip=InputsModel$LayerPrecip[[iLayer]][IndPeriod1],                    ### input series of total precipitation [mm/d]
+                            InputsFracSolidPrecip=InputsModel$LayerFracSolidPrecip[[iLayer]][IndPeriod1],  ### input series of fraction of solid precipitation [0-1]
+                            InputsTemp=InputsModel$LayerTemp[[iLayer]][IndPeriod1],                        ### input series of air mean temperature [degC]
+                            MeanAnSolidPrecip=RunOptions$MeanAnSolidPrecip[iLayer],                        ### value of annual mean solid precip [mm/y]
+                            NParam=as.integer(2),                                                          ### number of model parameter = 2
+                            Param=ParamCemaNeige,                                                          ### parameter set
+                            NStates=as.integer(2),                                                         ### number of state variables used for model initialising = 2
+                            StateStart=StateStartCemaNeige,                                                ### state variables used when the model run starts
+                            NOutputs=as.integer(length(IndOutputsCemaNeige)),                              ### number of output series
+                            IndOutputs=IndOutputsCemaNeige,                                                ### indices of output series
+                        ##outputs                                                               
+                            Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsCemaNeige)),  ### output series [mm]
+                            StateEnd=rep(as.double(-999.999),as.integer(2))                                          ### state variables at the end of the model run (reservoir levels [mm] and HU)
+                         )
+        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];
+        IndPliqAndMelt <- which(names(CemaNeigeLayers[[iLayer]]) == "PliqAndMelt");
+        if(iLayer==1){ CatchMeltAndPliq <- RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(iLayer >1){ CatchMeltAndPliq <- CatchMeltAndPliq + RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(ExportStateEnd){ CemaNeigeStateEnd <- c(CemaNeigeStateEnd,RESULTS$StateEnd); }
+        rm(RESULTS); 
+      } ###ENDFOR_iLayer
+      names(CemaNeigeLayers) <- paste("Layer",formatC(1:NLayers,width=2,flag="0"),sep="");
+    } ###ENDIF_RunSnowModule
+    if(RunOptions$RunSnowModule==FALSE){
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- NULL;
+      CatchMeltAndPliq  <- InputsModel$Precip[IndPeriod1]; }
+
+
+
+    ##MODEL______________________________________________________________________________________##
+      if("all" %in% RunOptions$Outputs_Sim){ IndOutputsMod <- as.integer(1:length(FortranOutputsMod)); 
+      } else { IndOutputsMod <- which(FortranOutputsMod %in% RunOptions$Outputs_Sim);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% RunOptions){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*ParamMod[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*ParamMod[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr4j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                         ### length of input and output series
+                     InputsPrecip=CatchMeltAndPliq,                ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],     ### input series potential evapotranspiration [mm/d]
+                     NParam=NParamMod,                             ### number of model parameter
+                     Param=ParamMod,                               ### parameter set
+                     NStates=NStatesMod,                           ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates[1:NStatesMod], ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputsMod)),   ### number of output series
+                     IndOutputs=IndOutputsMod,                     ### indices of output series
+                 ##outputs                                        
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsMod)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                     ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+      if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
+
+    ##Output_data_preparation
+      ##OutputsModel_only
+      if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers); }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if(ExportDatesR==TRUE & ExportStateEnd==TRUE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR","CemaNeige");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_CemaNeigeGR5J.R b/R/RunModel_CemaNeigeGR5J.R
new file mode 100644
index 00000000..59c37e47
--- /dev/null
+++ b/R/RunModel_CemaNeigeGR5J.R
@@ -0,0 +1,211 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the CemaNeige-GR5J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the CemaNeigeGR5J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Le Moine, N. (2008), Le bassin versant de surface vu par le souterrain : une voie d'amélioration des performances 
+#'       et du réalisme des modèles pluie-débit ?, PhD thesis (french), UPMC, Paris, France. \cr
+#'   Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011), 
+#'       A downward structural sensitivity analysis of hydrological models to improve low-flow simulation, 
+#'       Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine? 
+#'       Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? 
+#'       Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+#' @seealso \code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{RunModel_CemaNeigeGR6J}}, \code{\link{RunModel_GR5J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_CemaNeigeGR5J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 7 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR5J X1      \tab production store capacity [mm]                                \cr
+#'                             GR5J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+#'                             GR5J X3      \tab routing store capacity [mm]                                   \cr
+#'                             GR5J X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             GR5J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+#'                             CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+#'                             CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+#'          \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_CemaNeigeGR5J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 7;
+    FortranOutputsCemaNeige <- c("Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt");
+    FortranOutputsMod       <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(InputsModel,"CemaNeige"  )==FALSE){ stop("InputsModel must be of class 'CemaNeige'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(inherits(RunOptions,"CemaNeige"   )==FALSE){ stop("RunOptions must be of class 'CemaNeige'    \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1     <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      LInputSeries   <- as.integer(length(IndPeriod1))
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ParamCemaNeige <- Param[(length(Param)-1):length(Param)];
+      NParamMod      <- as.integer(length(Param)-2);
+      ParamMod       <- Param[1:NParamMod];
+      NLayers        <- length(InputsModel$LayerPrecip);
+      NStatesMod     <- as.integer(length(RunOptions$IniStates)-2*NLayers);
+      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)); 
+      } else { IndOutputsCemaNeige <- which(FortranOutputsCemaNeige %in% RunOptions$Outputs_Sim);  }
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- "CemaNeigeLayers";
+
+    ##Call_DLL_CemaNeige_________________________
+      for(iLayer in 1:NLayers){
+        StateStartCemaNeige <- RunOptions$IniStates[ (NStatesMod+2*(iLayer-1)+1):(NStatesMod+2*(iLayer-1)+2) ];
+        RESULTS <- .Fortran("frun_cemaneige",PACKAGE="airgr",
+                        ##inputs
+                            LInputs=LInputSeries,                                                          ### length of input and output series
+                            InputsPrecip=InputsModel$LayerPrecip[[iLayer]][IndPeriod1],                    ### input series of total precipitation [mm/d]
+                            InputsFracSolidPrecip=InputsModel$LayerFracSolidPrecip[[iLayer]][IndPeriod1],  ### input series of fraction of solid precipitation [0-1]
+                            InputsTemp=InputsModel$LayerTemp[[iLayer]][IndPeriod1],                        ### input series of air mean temperature [degC]
+                            MeanAnSolidPrecip=RunOptions$MeanAnSolidPrecip[iLayer],                        ### value of annual mean solid precip [mm/y]
+                            NParam=as.integer(2),                                                          ### number of model parameter = 2
+                            Param=ParamCemaNeige,                                                          ### parameter set
+                            NStates=as.integer(2),                                                         ### number of state variables used for model initialising = 2
+                            StateStart=StateStartCemaNeige,                                                ### state variables used when the model run starts
+                            NOutputs=as.integer(length(IndOutputsCemaNeige)),                              ### number of output series
+                            IndOutputs=IndOutputsCemaNeige,                                                ### indices of output series
+                        ##outputs                                                               
+                            Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsCemaNeige)),  ### output series [mm]
+                            StateEnd=rep(as.double(-999.999),as.integer(2))                                          ### state variables at the end of the model run (reservoir levels [mm] and HU)
+                         )
+        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];
+        IndPliqAndMelt <- which(names(CemaNeigeLayers[[iLayer]]) == "PliqAndMelt");
+        if(iLayer==1){ CatchMeltAndPliq <- RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(iLayer >1){ CatchMeltAndPliq <- CatchMeltAndPliq + RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(ExportStateEnd){ CemaNeigeStateEnd <- c(CemaNeigeStateEnd,RESULTS$StateEnd); }
+        rm(RESULTS); 
+      } ###ENDFOR_iLayer
+      names(CemaNeigeLayers) <- paste("Layer",formatC(1:NLayers,width=2,flag="0"),sep="");
+    } ###ENDIF_RunSnowModule
+    if(RunOptions$RunSnowModule==FALSE){
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- NULL;
+      CatchMeltAndPliq  <- InputsModel$Precip[IndPeriod1]; }
+
+
+
+    ##MODEL______________________________________________________________________________________##
+      if("all" %in% RunOptions$Outputs_Sim){ IndOutputsMod <- as.integer(1:length(FortranOutputsMod)); 
+      } else { IndOutputsMod <- which(FortranOutputsMod %in% RunOptions$Outputs_Sim);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% RunOptions){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*ParamMod[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*ParamMod[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr5j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                         ### length of input and output series
+                     InputsPrecip=CatchMeltAndPliq,                ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],     ### input series potential evapotranspiration [mm/d]
+                     NParam=NParamMod,                             ### number of model parameter
+                     Param=ParamMod,                               ### parameter set
+                     NStates=NStatesMod,                           ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates[1:NStatesMod], ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputsMod)),   ### number of output series
+                     IndOutputs=IndOutputsMod,                     ### indices of output series
+                 ##outputs                                        
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsMod)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                     ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+      if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
+
+    ##Output_data_preparation
+      ##OutputsModel_only
+      if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers); }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if(ExportDatesR==TRUE & ExportStateEnd==TRUE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR","CemaNeige");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_CemaNeigeGR6J.R b/R/RunModel_CemaNeigeGR6J.R
new file mode 100644
index 00000000..a572ea0a
--- /dev/null
+++ b/R/RunModel_CemaNeigeGR6J.R
@@ -0,0 +1,213 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the CemaNeige-GR6J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the CemaNeigeGR6J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011), 
+#'       A downward structural sensitivity analysis of hydrological models to improve low-flow simulation, 
+#'       Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine? 
+#'       Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+#'   Valéry, A., V. Andréassian and C. Perrin (2014), 
+#'       "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? 
+#'       Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+#' @seealso \code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{RunModel_CemaNeigeGR5J}}, \code{\link{RunModel_GR6J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_CemaNeigeGR6J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 8 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR6J X1      \tab production store capacity [mm]                                \cr
+#'                             GR6J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+#'                             GR6J X3      \tab routing store capacity [mm]                                   \cr
+#'                             GR6J X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             GR6J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+#'                             GR6J X6      \tab coefficient for emptying exponential store [-]                \cr
+#'                             CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+#'                             CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QR1     }          \tab [numeric] series of exponential store outflow (QR1) [mm/d]                    \cr
+#'          \emph{$Exp     }          \tab [numeric] series of exponential store level (X(6)) (negative) [mm]            \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+#'          \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+#'          \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_CemaNeigeGR6J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 8;
+    FortranOutputsCemaNeige <- c("Pliq","Psol","SnowPack","ThermalState","Gratio","PotMelt","Melt","PliqAndMelt");
+    FortranOutputsMod       <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QR1","Exp","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(InputsModel,"CemaNeige"  )==FALSE){ stop("InputsModel must be of class 'CemaNeige'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(inherits(RunOptions,"CemaNeige"   )==FALSE){ stop("RunOptions must be of class 'CemaNeige'    \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1     <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      LInputSeries   <- as.integer(length(IndPeriod1))
+      IndPeriod2     <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries;
+      ParamCemaNeige <- Param[(length(Param)-1):length(Param)];
+      NParamMod      <- as.integer(length(Param)-2);
+      ParamMod       <- Param[1:NParamMod];
+      NLayers        <- length(InputsModel$LayerPrecip);
+      NStatesMod     <- as.integer(length(RunOptions$IniStates)-2*NLayers);
+      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)); 
+      } else { IndOutputsCemaNeige <- which(FortranOutputsCemaNeige %in% RunOptions$Outputs_Sim);  }
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- "CemaNeigeLayers";
+
+    ##Call_DLL_CemaNeige_________________________
+      for(iLayer in 1:NLayers){
+        StateStartCemaNeige <- RunOptions$IniStates[ (NStatesMod+2*(iLayer-1)+1):(NStatesMod+2*(iLayer-1)+2) ];
+        RESULTS <- .Fortran("frun_cemaneige",PACKAGE="airgr",
+                        ##inputs
+                            LInputs=LInputSeries,                                                          ### length of input and output series
+                            InputsPrecip=InputsModel$LayerPrecip[[iLayer]][IndPeriod1],                    ### input series of total precipitation [mm/d]
+                            InputsFracSolidPrecip=InputsModel$LayerFracSolidPrecip[[iLayer]][IndPeriod1],  ### input series of fraction of solid precipitation [0-1]
+                            InputsTemp=InputsModel$LayerTemp[[iLayer]][IndPeriod1],                        ### input series of air mean temperature [degC]
+                            MeanAnSolidPrecip=RunOptions$MeanAnSolidPrecip[iLayer],                        ### value of annual mean solid precip [mm/y]
+                            NParam=as.integer(2),                                                          ### number of model parameter = 2
+                            Param=ParamCemaNeige,                                                          ### parameter set
+                            NStates=as.integer(2),                                                         ### number of state variables used for model initialising = 2
+                            StateStart=StateStartCemaNeige,                                                ### state variables used when the model run starts
+                            NOutputs=as.integer(length(IndOutputsCemaNeige)),                              ### number of output series
+                            IndOutputs=IndOutputsCemaNeige,                                                ### indices of output series
+                        ##outputs                                                               
+                            Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsCemaNeige)),  ### output series [mm]
+                            StateEnd=rep(as.double(-999.999),as.integer(2))                                          ### state variables at the end of the model run (reservoir levels [mm] and HU)
+                         )
+        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];
+        IndPliqAndMelt <- which(names(CemaNeigeLayers[[iLayer]]) == "PliqAndMelt");
+        if(iLayer==1){ CatchMeltAndPliq <- RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(iLayer >1){ CatchMeltAndPliq <- CatchMeltAndPliq + RESULTS$Outputs[,IndPliqAndMelt]/NLayers; }
+        if(ExportStateEnd){ CemaNeigeStateEnd <- c(CemaNeigeStateEnd,RESULTS$StateEnd); }
+        rm(RESULTS); 
+      } ###ENDFOR_iLayer
+      names(CemaNeigeLayers) <- paste("Layer",formatC(1:NLayers,width=2,flag="0"),sep="");
+    } ###ENDIF_RunSnowModule
+    if(RunOptions$RunSnowModule==FALSE){
+      CemaNeigeLayers <- list(); CemaNeigeStateEnd <- NULL; NameCemaNeigeLayers <- NULL;
+      CatchMeltAndPliq  <- InputsModel$Precip[IndPeriod1]; }
+
+
+
+    ##MODEL______________________________________________________________________________________##
+      if("all" %in% RunOptions$Outputs_Sim){ IndOutputsMod <- as.integer(1:length(FortranOutputsMod)); 
+      } else { IndOutputsMod <- which(FortranOutputsMod %in% RunOptions$Outputs_Sim);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% RunOptions){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*ParamMod[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*ParamMod[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr6j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                         ### length of input and output series
+                     InputsPrecip=CatchMeltAndPliq,                ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],     ### input series potential evapotranspiration [mm/d]
+                     NParam=NParamMod,                             ### number of model parameter
+                     Param=ParamMod,                               ### parameter set
+                     NStates=NStatesMod,                           ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates[1:NStatesMod], ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputsMod)),   ### number of output series
+                     IndOutputs=IndOutputsMod,                     ### indices of output series
+                 ##outputs                                        
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputsMod)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                     ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+      if(RunOptions$RunSnowModule & "Precip" %in% RunOptions$Outputs_Sim){ RESULTS$Outputs[,which(FortranOutputsMod[IndOutputsMod]=="Precip")] <- InputsModel$Precip[IndPeriod1]; }
+
+    ##Output_data_preparation
+      ##OutputsModel_only
+      if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers); }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c(FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if(ExportDatesR==TRUE & ExportStateEnd==TRUE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(CemaNeigeLayers),
+                           list(c(RESULTS$StateEnd,CemaNeigeStateEnd)) );
+        names(OutputsModel) <- c("DatesR",FortranOutputsMod[IndOutputsMod],NameCemaNeigeLayers,"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR","CemaNeige");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR1A.R b/R/RunModel_GR1A.R
new file mode 100644
index 00000000..c0525db3
--- /dev/null
+++ b/R/RunModel_GR1A.R
@@ -0,0 +1,123 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR1A yearly lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR1A hydrological model
+#' @author Laurent Coron (March 2015)
+#' @example tests/example_RunModel_GR1A.R
+#' @references
+#'   Mouelhi S. (2003), 
+#'       Vers une chaîne cohérente de modèles pluie-débit conceptuels globaux aux pas de temps pluriannuel, annuel, mensuel et journalier,
+#'       PhD thesis (in French), ENGREF, Cemagref Antony, France. \cr
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 4 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR1A X1      \tab model parameter [mm] \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_GR1A <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 1;
+    FortranOutputs <- c("PotEvap","Precip","Qsim");
+
+    ##Arguments_check
+      if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
+      if(inherits(InputsModel,"yearly"     )==FALSE){ stop("InputsModel must be of class 'yearly'      \n"); return(NULL); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    
+    BOOL_Fortran <- FALSE; if(BOOL_Fortran){
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr1a",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/y]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/y]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    } else {
+    ##R_version
+      L  <- length(IndPeriod1)
+      P0 <- InputsModel$Precip[ IndPeriod1][1:(L-1)]
+      P1 <- InputsModel$Precip[ IndPeriod1][2: L   ]
+      E1 <- InputsModel$PotEvap[IndPeriod1][2: L   ]
+      Q1 <- P1*(1.-1./(1.+((0.7*P1+0.3*P0)/Param[1]/E1)^2.0)^0.5)
+      PEQ <- rbind(c(NA,NA,NA),cbind(P1,E1,Q1))
+      Outputs <- PEQ[,IndOutputs]
+      if(is.vector(Outputs)){ Outputs <- cbind(Outputs); }
+      RESULTS <- list(NOutputs=length(IndOutputs),IndOutputs=IndOutputs,Outputs=Outputs,StatesEnd=NA)
+   }
+        
+    
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","yearly","GR");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR2M.R b/R/RunModel_GR2M.R
new file mode 100644
index 00000000..f21542a6
--- /dev/null
+++ b/R/RunModel_GR2M.R
@@ -0,0 +1,128 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR2M monthly lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR2M hydrological model
+#' @author Laurent Coron (March 2015)
+#' @example tests/example_RunModel_GR2M.R
+#' @references
+#'   Mouelhi S. (2003), 
+#'       Vers une chaîne cohérente de modèles pluie-débit conceptuels globaux aux pas de temps pluriannuel, annuel, mensuel et journalier,
+#'       PhD thesis (in French), ENGREF, Cemagref Antony, France. \cr
+#'   Mouelhi, S., C. Michel, C. Perrin and V. Andréassian (2006),
+#'       Stepwise development of a two-parameter monthly water balance model,
+#'       Journal of Hydrology, 318(1-4), 200-214, doi:10.1016/j.jhydrol.2005.06.014.
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 4 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR2M X1      \tab production store capacity [mm]                 \cr
+#'                             GR2M X2      \tab groundwater exchange coefficient [mm/month]    \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/h]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/h]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/h]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/h]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/h]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/h]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/h]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/h]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/h]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+#'          \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************
+RunModel_GR2M <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 2;
+    FortranOutputs <- c("PotEvap","Precip","Prod","Rout","Qsim");
+    ### FortranOutputs <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QD","Qsim");
+
+    ##Arguments_check
+      if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
+      if(inherits(InputsModel,"monthly"    )==FALSE){ stop("InputsModel must be of class 'monthly'      \n"); return(NULL); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% names(RunOptions)){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr2m",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/month]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/month]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","monthly","GR");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR4H.R b/R/RunModel_GR4H.R
new file mode 100644
index 00000000..2befb604
--- /dev/null
+++ b/R/RunModel_GR4H.R
@@ -0,0 +1,129 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR4H hourly lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR4H hydrological model
+#' @author Laurent Coron (July 2014)
+#' @seealso \code{\link{RunModel_GR4J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_GR4H.R
+#' @references
+#'   Mathevet, T. (2005), 
+#'       Quels modèles pluie-débit globaux pour le pas de temps horaire ? Développement empirique et comparaison de modèles sur un large échantillon de bassins versants, 
+#'       PhD thesis (in French), ENGREF - Cemagref (Antony), Paris, France.
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 4 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR4H X1      \tab production store capacity [mm]                                \cr
+#'                             GR4H X2      \tab groundwater exchange coefficient [mm/h]                       \cr
+#'                             GR4H X3      \tab routing store capacity [mm]                                   \cr
+#'                             GR4H X4      \tab unit hydrograph time constant [h]                             \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/h]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/h]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/h]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/h]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/h]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/h]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/h]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/h]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/h]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+#'          \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************'
+RunModel_GR4H <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 4;
+    FortranOutputs <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QD","Qsim");
+
+    ##Arguments_check
+      if(inherits(InputsModel,"InputsModel")==FALSE){ stop("InputsModel must be of class 'InputsModel' \n"); return(NULL); }  
+      if(inherits(InputsModel,"hourly"     )==FALSE){ stop("InputsModel must be of class 'hourly'      \n"); return(NULL); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% names(RunOptions)){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*Param[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr4h",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/h]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/h]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","hourly","GR");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR4J.R b/R/RunModel_GR4J.R
new file mode 100644
index 00000000..50c7e373
--- /dev/null
+++ b/R/RunModel_GR4J.R
@@ -0,0 +1,129 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR4J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR4J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Perrin, C., C. Michel and V. Andréassian (2003), 
+#'       Improvement of a parsimonious model for streamflow simulation, 
+#'       Journal of Hydrology, 279(1-4), 275-289, doi:10.1016/S0022-1694(03)00225-7.
+#' @seealso \code{\link{RunModel_GR5J}}, \code{\link{RunModel_GR6J}}, \code{\link{RunModel_CemaNeigeGR4J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_GR4J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 4 parameters                                                             
+#'                             \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 X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************'
+RunModel_GR4J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 4;
+    FortranOutputs <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% names(RunOptions)){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*Param[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr4j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/d]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR5J.R b/R/RunModel_GR5J.R
new file mode 100644
index 00000000..7d3a60ea
--- /dev/null
+++ b/R/RunModel_GR5J.R
@@ -0,0 +1,132 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR5J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR5J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Le Moine, N. (2008), Le bassin versant de surface vu par le souterrain : une voie d'amélioration des performances
+#'       et du réalisme des modèles pluie-débit ?, PhD thesis (french), UPMC, Paris, France. \cr
+#'   Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet, and V. Andréassian (2011), 
+#'       A downward structural sensitivity analysis of hydrological models to improve low-flow simulation, 
+#'       Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+#' @seealso \code{\link{RunModel_GR4J}}, \code{\link{RunModel_GR6J}}, \code{\link{RunModel_CemaNeigeGR5J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_GR5J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 5 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR5J X1      \tab production store capacity [mm]                                \cr
+#'                             GR5J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+#'                             GR5J X3      \tab routing store capacity [mm]                                   \cr
+#'                             GR5J X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             GR5J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************'
+RunModel_GR5J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 5;
+    FortranOutputs <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% names(RunOptions)){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*Param[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr5j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/d]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR");
+      return(OutputsModel);
+
+}
+
diff --git a/R/RunModel_GR6J.R b/R/RunModel_GR6J.R
new file mode 100644
index 00000000..b9e930a0
--- /dev/null
+++ b/R/RunModel_GR6J.R
@@ -0,0 +1,133 @@
+#*****************************************************************************************************************
+#' Function which performs a single run for the GR6J daily lumped model.
+#'
+#' For further details on the model, see the references section.
+#' For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+#*****************************************************************************************************************
+#' @title Run with the GR6J hydrological model
+#' @author Laurent Coron (December 2013)
+#' @references
+#'   Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011), 
+#'       A downward structural sensitivity analysis of hydrological models to improve low-flow simulation, 
+#'       Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+#' @seealso \code{\link{RunModel_GR4J}}, \code{\link{RunModel_GR5J}}, \code{\link{RunModel_CemaNeigeGR6J}},
+#'          \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+#' @example tests/example_RunModel_GR6J.R
+#' @useDynLib airgr
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  InputsModel         [object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details
+#' @param  RunOptions          [object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details
+#' @param  Param               [numeric] vector of 6 parameters                                                             
+#'                             \tabular{ll}{                                                                      
+#'                             GR6J X1      \tab production store capacity [mm]                                \cr
+#'                             GR6J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+#'                             GR6J X3      \tab routing store capacity [mm]                                   \cr
+#'                             GR6J X4      \tab unit hydrograph time constant [d]                             \cr
+#'                             GR6J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+#'                             GR6J X6      \tab coefficient for emptying exponential store [-]                \cr
+#'                             }                                                                                  
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  [list] list containing the function outputs organised as follows:                                         
+#'          \tabular{ll}{                                                                                         
+#'          \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+#'          \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+#'          \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+#'          \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+#'          \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+#'          \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+#'          \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+#'          \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+#'          \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+#'          \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+#'          \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+#'          \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+#'          \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+#'          \emph{$QR1     }          \tab [numeric] series of exponential store outflow (QR1) [mm/d]                    \cr
+#'          \emph{$Exp     }          \tab [numeric] series of exponential store level (X(6)) (negative) [mm]            \cr
+#'          \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+#'          \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+#'          \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+#'          }                                                                                                     
+#'          (refer to the provided references or to the package source code for further details on these model outputs)
+#*****************************************************************************************************************'
+RunModel_GR6J <- function(InputsModel,RunOptions,Param){
+
+    NParam <- 6;
+    FortranOutputs <- c("PotEvap","Precip","Prod","AE","Perc","PR","Q9","Q1","Rout","Exch","AExch","QR","QR1","Exp","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); }  
+      if(inherits(InputsModel,"GR"         )==FALSE){ stop("InputsModel must be of class 'GR'          \n"); return(NULL); }  
+      if(inherits(RunOptions,"RunOptions"  )==FALSE){ stop("RunOptions must be of class 'RunOptions'   \n"); return(NULL); }  
+      if(inherits(RunOptions,"GR"          )==FALSE){ stop("RunOptions must be of class 'GR'           \n"); return(NULL); }  
+      if(!is.vector(Param)){ stop("Param must be a vector \n"); return(NULL); }
+      if(sum(!is.na(Param))!=NParam){ stop(paste("Param must be a vector of length ",NParam," and contain no NA \n",sep="")); return(NULL); }
+      Param <- as.double(Param);
+
+    ##Input_data_preparation
+      if(identical(RunOptions$IndPeriod_WarmUp,as.integer(0))){ RunOptions$IndPeriod_WarmUp <- NULL; }
+      IndPeriod1   <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run);
+      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);  }
+
+    ##Use_of_IniResLevels
+      if("IniResLevels" %in% names(RunOptions)){
+        RunOptions$IniStates[1] <- RunOptions$IniResLevels[2]*Param[3];  ### routing store level (mm)
+        RunOptions$IniStates[2] <- RunOptions$IniResLevels[1]*Param[1];  ### production store level (mm)
+      }
+
+    ##Call_fortan
+      RESULTS <- .Fortran("frun_gr6j",PACKAGE="airgr",
+                 ##inputs
+                     LInputs=LInputSeries,                             ### length of input and output series
+                     InputsPrecip=InputsModel$Precip[IndPeriod1],      ### input series of total precipitation [mm/d]
+                     InputsPE=InputsModel$PotEvap[IndPeriod1],         ### input series potential evapotranspiration [mm/d]
+                     NParam=as.integer(length(Param)),                 ### number of model parameter
+                     Param=Param,                                      ### parameter set
+                     NStates=as.integer(length(RunOptions$IniStates)), ### number of state variables used for model initialising
+                     StateStart=RunOptions$IniStates,                  ### state variables used when the model run starts
+                     NOutputs=as.integer(length(IndOutputs)),          ### number of output series
+                     IndOutputs=IndOutputs,                            ### indices of output series
+                 ##outputs
+                     Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)),  ### output series [mm]
+                     StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates))                  ### state variables at the end of the model run
+                     )
+      RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
+      RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+
+    ##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]);
+        names(OutputsModel) <- FortranOutputs[IndOutputs];      }
+      ##DatesR_and_OutputsModel_only
+      if(ExportDatesR==TRUE & ExportStateEnd==FALSE){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]);      }
+      ##OutputsModel_and_SateEnd_only
+      if(ExportDatesR==FALSE & ExportStateEnd==TRUE){
+        OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd");      }
+      ##DatesR_and_OutputsModel_and_SateEnd
+      if((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim){
+        OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]),
+                           lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]),
+                           list(RESULTS$StateEnd) );
+        names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd");      }
+
+    ##End
+      rm(RESULTS); 
+      class(OutputsModel) <- c("OutputsModel","daily","GR");
+      return(OutputsModel);
+
+}
+  
diff --git a/R/SeriesAggreg.R b/R/SeriesAggreg.R
new file mode 100644
index 00000000..ec67f7ac
--- /dev/null
+++ b/R/SeriesAggreg.R
@@ -0,0 +1,134 @@
+#*************************************************************************************************
+#' Conversion of time series to another time-step (aggregation only).
+#' Warning : on the aggregated outputs, the dates correpond to the beginning ot the time-step
+#' (e.g. for daily time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 01/03/2005 23:59 )
+#' (e.g. for monthly time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 31/03/2005 23:59 )
+#' (e.g. for yearly time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 28/02/2006 23:59 )
+#*************************************************************************************************
+#' @title  Conversion of time series to another time-step (aggregation only)
+#' @author Laurent Coron (March 2015)
+#' @example tests/example_SeriesAggreg.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________
+#' @param  TabSeries           [POSIXlt+numeric] dataframe containing the vector of dates and the time series values
+#' @param  TimeFormat          [character] desired format (i.e. "hourly", "daily", "monthly" or "yearly")
+#' @param  NewTimeFormat       [character] desired format (i.e. "hourly", "daily", "monthly" or "yearly")
+#' @param  ConvertFun          [character] names of aggregation functions (e.g. for P[mm],T[deg],Q[mm] : ConvertFun=c("sum","mean","sum"))
+#' @param  YearFirstMonth      (optional) [numeric] integer used when NewTimeFormat="yearly" to set when the starting month of the year (e.g. 01 for calendar year or 09 for hydrological year starting in september)
+#' @param  quiet               (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________
+#' @return  [POSIXlt+numeric] dataframe containing a vector of aggregated dates and time series values
+#**************************************************************************************************'
+SeriesAggreg <- function(TabSeries,TimeFormat,NewTimeFormat,ConvertFun,YearFirstMonth=01,quiet=FALSE){
+
+
+  ##_Arguments_check
+
+    ##check_TabSeries
+      if(is.null(TabSeries)       ){ stop("TabSeries must be a dataframe containing the dates and data to be converted \n"); return(NULL); }
+      if(!is.data.frame(TabSeries)){ stop("TabSeries must be a dataframe containing the dates and data to be converted \n"); return(NULL); }
+      if(ncol(TabSeries)<2){ stop("TabSeries must contain at least two columns (including the coulmn of dates \n"); return(NULL); }
+      if("POSIXlt" %in% class(TabSeries[,1]) == FALSE & "POSIXct" %in% class(TabSeries[,1]) == FALSE){ stop("TabSeries first column must be a vector of class POSIXlt or POSIXct \n"); return(NULL); }
+      for(iCol in 2:ncol(TabSeries)){
+      if(!is.numeric(TabSeries[,iCol])){ stop("TabSeries columns (other than the first one) be of numeric class \n"); return(NULL); }  }
+    ##check_TimeFormat
+      if(is.null(      TimeFormat)){ stop("TimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(!is.vector(   TimeFormat)){ stop("TimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(!is.character(TimeFormat)){ stop("TimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(length(TimeFormat)!=1    ){ stop("TimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(TimeFormat %in% c("hourly","daily","monthly","yearly")==FALSE){
+                                    stop("TimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+    ##check_NewTimeFormat
+      if(is.null(      NewTimeFormat)){ stop("NewTimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(!is.vector(   NewTimeFormat)){ stop("NewTimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(!is.character(NewTimeFormat)){ stop("NewTimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(length(NewTimeFormat)!=1    ){ stop("NewTimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+      if(NewTimeFormat %in% c("hourly","daily","monthly","yearly")==FALSE){
+                                    stop("NewTimeFormat must be 'hourly', 'daily', 'monthly' or 'yearly' \n"); return(NULL); } 
+    ##check_ConvertFun
+      if(is.null(      ConvertFun)){ stop("ConvertFun must be a vector of character \n"); return(NULL); } 
+      if(!is.vector(   ConvertFun)){ stop("ConvertFun must be a vector of character \n"); return(NULL); } 
+      if(!is.character(ConvertFun)){ stop("ConvertFun must be a vector of character \n"); return(NULL); } 
+      if(length(ConvertFun)!=(ncol(TabSeries)-1)){ stop(paste("ConvertFun must be of length ",ncol(TabSeries)-1," (length=ncol(TabSeries)-1) \n",sep="")); return(NULL); } 
+      if(sum(ConvertFun %in% c("sum","mean")==FALSE)!=0){ stop("ConvertFun elements must be either 'sum' or 'mean' \n"); return(NULL); } 
+    ##check_YearFirstMonth
+      if(is.null(    YearFirstMonth)){ stop("YearFirstMonth must be an integer between 1 and 12 \n"); return(NULL); } 
+      if(!is.vector( YearFirstMonth)){ stop("YearFirstMonth must be an integer between 1 and 12 \n"); return(NULL); } 
+      if(!is.numeric(YearFirstMonth)){ stop("YearFirstMonth must be an integer between 1 and 12 \n"); return(NULL); } 
+      YearFirstMonth <- as.integer(YearFirstMonth);
+      if(length(YearFirstMonth)!=1){ stop(paste("YearFirstMonth must be only one integer between 1 and 12 \n",sep="")); return(NULL); } 
+      if(YearFirstMonth %in% (1:12) == FALSE){ stop(paste("YearFirstMonth must be only one integer between 1 and 12 \n",sep="")); return(NULL); } 
+    ##check_DatesR_integrity
+      if(TimeFormat=="hourly" ){ by <- "hours" ; }
+      if(TimeFormat=="daily"  ){ by <- "days"  ; }
+      if(TimeFormat=="monthly"){ by <- "months"; }
+      if(TimeFormat=="yearly" ){ by <- "years" ; }
+      TmpDatesR <- seq(from=TabSeries[1,1],to=tail(TabSeries[,1],1),by=by)
+      if(!identical(TabSeries[,1],TmpDatesR)){ stop("Problem detected in TabSeries dates vector (in comparison with seq(from=TabSeries[1,1],to=tail(TabSeries[,1],1))) \n"); return(NULL); }
+    ##check_conversion_direction
+      if((TimeFormat == "daily"   & NewTimeFormat %in% c("hourly")                  ) |
+         (TimeFormat == "monthly" & NewTimeFormat %in% c("hourly","daily")          ) |
+         (TimeFormat == "yearly"  & NewTimeFormat %in% c("hourly","daily","monthly"))){ 
+           stop("only time aggregation can be performed \n"); return(NULL); } 
+    ##check_if_conversion_not_needed
+      if((TimeFormat == "hourly"  & NewTimeFormat=="hourly" ) |
+         (TimeFormat == "daily"   & NewTimeFormat=="daily"  ) |
+         (TimeFormat == "monthly" & NewTimeFormat=="monthly") |
+         (TimeFormat == "yearly"  & NewTimeFormat=="yearly" )){ 
+           if(!quiet){ warning("\t The old and new format are identical \n\t -> no time-step conversion was performed \n"); return(TabSeries); } }
+
+
+  ##_Time_step_conversion
+
+    ##_Handle_conventional_difference_between_hourly_series_and_others
+      TmpDatesR <- TabSeries[,1];
+      if(TimeFormat=="hourly"){ TmpDatesR <- TmpDatesR - 60*60; }
+      Hmax <- "00"; if(TimeFormat=="hourly"){ Hmax <- "23" }
+
+    ##_Identify_the_part_of_the_series_to_be_aggregated
+      NDaysInMonth <- list("31",c("28","29"),"31","30","31","30","31","31","30","31","30","31")
+      YearLastMonth <- YearFirstMonth+11; if(YearLastMonth>12){ YearLastMonth <- YearLastMonth-12; }
+      YearFirstMonthTxt <- formatC(YearFirstMonth,format="d",width=2,flag="0")
+      YearLastMonthTxt  <- formatC(YearLastMonth,format="d",width=2,flag="0")
+      if(NewTimeFormat=="daily"  ){ Ind1 <- which(format(TmpDatesR,    "%H")=="00"); 
+                                    Ind2 <- which(format(TmpDatesR,    "%H")==Hmax); 
+                                    if(Ind2[1]<Ind1[1]){ Ind2 <- Ind2[2:length(Ind2)]; }
+                                    if(tail(Ind1,1)>tail(Ind2,1)){ Ind1 <- Ind1[1:(length(Ind1)-1)]; }
+                                    ### Aggr <- NULL; iii <- 0; for(kkk in 1:length(Ind1)){ 
+                                      ### iii <- iii+1; Aggr <- c(Aggr,rep(iii,length(Ind1[kkk]:Ind2[kkk]))); }
+                                    Aggr <- as.numeric(format(TmpDatesR[min(Ind1):max(Ind2)],"%Y%m%d")); ### more efficient
+                                    NewDatesR <- data.frame(seq(from=TmpDatesR[min(Ind1)],to=TmpDatesR[max(Ind2)],by="days"))
+                                  }
+      if(NewTimeFormat=="monthly"){ Ind1 <- which(format(TmpDatesR,  "%d%H")=="0100");
+                                    Ind2 <- which(format(TmpDatesR,"%m%d%H") %in% paste(c("0131","0228","0229","0331","0430","0531","0630","0731","0831","0930","1031","1130","1231"),Hmax,sep="")); 
+                                    Ind2[1:(length(Ind2)-1)][diff(Ind2)==1] <- NA; Ind2 <- Ind2[!is.na(Ind2)]; ### to keep only feb 29 if both feb 28 and feb 29 exists
+                                    if(Ind2[1]<Ind1[1]){ Ind2 <- Ind2[2:length(Ind2)]; }
+                                    if(tail(Ind1,1)>tail(Ind2,1)){ Ind1 <- Ind1[1:(length(Ind1)-1)]; }
+                                    ### Aggr <- NULL; iii <- 0; for(kkk in 1:length(Ind1)){ 
+                                      ### iii <- iii+1; Aggr <- c(Aggr,rep(iii,length(Ind1[kkk]:Ind2[kkk]))); }
+                                    Aggr <- as.numeric(format(TmpDatesR[min(Ind1):max(Ind2)],"%Y%m"));  ### more efficient
+                                    NewDatesR <- data.frame(seq(from=TmpDatesR[min(Ind1)],to=TmpDatesR[max(Ind2)],by="months"))
+                                  }
+      if(NewTimeFormat=="yearly" ){ Ind1 <- which(format(TmpDatesR,"%m%d%H") %in% paste(YearFirstMonthTxt,"0100",sep="")); 
+                                    Ind2 <- which(format(TmpDatesR,"%m%d%H") %in% paste(YearLastMonthTxt,NDaysInMonth[[YearLastMonth]],Hmax,sep="")); 
+                                    Ind2[1:(length(Ind2)-1)][diff(Ind2)==1] <- NA; Ind2 <- Ind2[!is.na(Ind2)]; ### to keep only feb 29 if both feb 28 and feb 29 exists
+                                    if(Ind2[1]<Ind1[1]){ Ind2 <- Ind2[2:length(Ind2)]; }
+                                    if(tail(Ind1,1)>tail(Ind2,1)){ Ind1 <- Ind1[1:(length(Ind1)-1)]; }
+                                    Aggr <- NULL; iii <- 0; for(kkk in 1:length(Ind1)){ 
+                                      iii <- iii+1; Aggr <- c(Aggr,rep(iii,length(Ind1[kkk]:Ind2[kkk]))); }
+                                    ### Aggr <- as.numeric(format(TmpDatesR[min(Ind1):max(Ind2)],"%Y")); ### not working if YearFirstMonth != 01
+                                    NewDatesR <- data.frame(seq(from=TmpDatesR[min(Ind1)],to=TmpDatesR[max(Ind2)],by="years"))
+                                  }
+    ##_Aggreation_and_export
+      NewTabSeries <- data.frame(NewDatesR)
+      for(iCol in 2:ncol(TabSeries)){
+      AggregData <- aggregate(TabSeries[min(Ind1):max(Ind2),iCol],by=list(Aggr),FUN=ConvertFun[iCol-1],na.rm=F)[,2]
+      NewTabSeries <- data.frame(NewTabSeries,AggregData)
+      }
+      names(NewTabSeries) <- names(TabSeries)
+      return(NewTabSeries);
+
+
+}
+
diff --git a/R/TransfoParam.R b/R/TransfoParam.R
new file mode 100644
index 00000000..ae0da09c
--- /dev/null
+++ b/R/TransfoParam.R
@@ -0,0 +1,19 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa) using the provided function.
+#**************************************************************************************************
+#' @title   Transformation of the parameters using the provided function
+#' @author  Laurent Coron (June 2014)
+#' @seealso \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+#' @example tests/example_TransfoParam.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn      [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction    [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @param   FUN_TRANSFO  [function] model parameters transformation function (e.g. TransfoParam_GR4J, TransfoParam_CemaNeigeGR4J)
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************'
+TransfoParam <- function(ParamIn,Direction,FUN_TRANSFO){
+    return( FUN_TRANSFO(ParamIn,Direction) )
+}
+
diff --git a/R/TransfoParam_CemaNeige.R b/R/TransfoParam_CemaNeige.R
new file mode 100644
index 00000000..73ba2134
--- /dev/null
+++ b/R/TransfoParam_CemaNeige.R
@@ -0,0 +1,37 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the CemaNeige module
+#' @author  Laurent Coron (December 2013)
+#' @seealso \code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}
+#' @example tests/example_TransfoParam_CemaNeige.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_CemaNeige <- function(ParamIn,Direction){
+
+  NParam <- 2;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the CemaNeige module requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- (ParamIn[,1]+9.99)/19.98;            ### CemaNeige X1 (weighting coefficient for snow pack thermal state) 
+    ParamOut[,2] <- exp(ParamIn[,2]);                    ### CemaNeige X2 (degree-day melt coefficient)     
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- ParamIn[,1]*19.98-9.99;              ### CemaNeige X1 (weighting coefficient for snow pack thermal state) 
+    ParamOut[,2] <- log(ParamIn[,2]);                    ### CemaNeige X2 (degree-day melt coefficient)                      
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR1A.R b/R/TransfoParam_GR1A.R
new file mode 100644
index 00000000..963d6bd4
--- /dev/null
+++ b/R/TransfoParam_GR1A.R
@@ -0,0 +1,31 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR1A model
+#' @author  Laurent Coron (March 2015)
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR1A <- function(ParamIn,Direction){
+
+  NParam <- 1;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR1A model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  (ParamIn+10.0)/8;
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn*8-10.0;
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR2M.R b/R/TransfoParam_GR2M.R
new file mode 100644
index 00000000..e3fba4cd
--- /dev/null
+++ b/R/TransfoParam_GR2M.R
@@ -0,0 +1,35 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR2M model
+#' @author  Laurent Coron (March 2015)
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR2M <- function(ParamIn,Direction){
+
+  NParam <- 2;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR2M model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <-  exp(1.5*ParamIn[,1]);
+    ParamOut[,2] <-  ParamIn[,2]/5;               
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <-  log(ParamIn[,1])/1.5;
+    ParamOut[,2] <-  ParamIn[,2]*5;  
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR4H.R b/R/TransfoParam_GR4H.R
new file mode 100644
index 00000000..caa4ac6c
--- /dev/null
+++ b/R/TransfoParam_GR4H.R
@@ -0,0 +1,39 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR4H model
+#' @author  Laurent Coron (July 2014)
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR4H <- function(ParamIn,Direction){
+
+  NParam <- 4;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR4H model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- exp(1.5*ParamIn[,1]);                ### GR4H X1 (production store capacity)    
+    ParamOut[,2] <- sinh(ParamIn[,2]);                   ### GR4H X2 (groundwater exchange coefficient)      
+    ParamOut[,3] <- exp(ParamIn[,3]);                    ### GR4H X3 (routing store capacity)       
+    ParamOut[,4] <- 20+(19.5*24)*(ParamIn[,4]-9.99)/(19.98*24);    ### GR4H X4 (unit hydrograph time constant)
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- log(ParamIn[,1])/1.5;                ### GR4H X1 (production store capacity)    
+    ParamOut[,2] <- asinh(ParamIn[,2]);                  ### GR4H X2 (groundwater exchange coefficient)      
+    ParamOut[,3] <- log(ParamIn[,3]);                    ### GR4H X3 (routing store capacity)       
+    ParamOut[,4] <- 9.99+(19.98*24)*(ParamIn[,4]-20)/(19.5*24);    ### GR4H X4 (unit hydrograph time constant)
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR4J.R b/R/TransfoParam_GR4J.R
new file mode 100644
index 00000000..2613179d
--- /dev/null
+++ b/R/TransfoParam_GR4J.R
@@ -0,0 +1,41 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR4J model
+#' @author  Laurent Coron (December 2013)
+#' @seealso \code{\link{TransfoParam}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+#' @example tests/example_TransfoParam_GR4J.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR4J <- function(ParamIn,Direction){
+
+  NParam <- 4;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR4J model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- exp(1.5*ParamIn[,1]);                ### GR4J X1 (production store capacity)    
+    ParamOut[,2] <- sinh(ParamIn[,2]);                   ### GR4J X2 (groundwater exchange coefficient)      
+    ParamOut[,3] <- exp(ParamIn[,3]);                    ### GR4J X3 (routing store capacity)       
+    ParamOut[,4] <- 20+19.5*(ParamIn[,4]-9.99)/19.98;    ### GR4J X4 (unit hydrograph time constant)
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- log(ParamIn[,1])/1.5;                ### GR4J X1 (production store capacity)    
+    ParamOut[,2] <- asinh(ParamIn[,2]);                  ### GR4J X2 (groundwater exchange coefficient)      
+    ParamOut[,3] <- log(ParamIn[,3]);                    ### GR4J X3 (routing store capacity)       
+    ParamOut[,4] <- 9.99+19.98*(ParamIn[,4]-20)/19.5;    ### GR4J X4 (unit hydrograph time constant)
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR5J.R b/R/TransfoParam_GR5J.R
new file mode 100644
index 00000000..126d25ba
--- /dev/null
+++ b/R/TransfoParam_GR5J.R
@@ -0,0 +1,45 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR5J model
+#' @author  Laurent Coron (December 2013)
+#' @seealso \code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+#' @example tests/example_TransfoParam_GR5J.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR5J <- function(ParamIn,Direction){
+
+  NParam <- 5;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR5J model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- exp(1.5*ParamIn[,1]);                ### GR5J X1 (production store capacity)
+    ParamOut[,2] <- sinh(ParamIn[,2]);                   ### GR5J X2 (groundwater exchange coefficient 1)
+    ParamOut[,3] <- exp(ParamIn[,3]);                    ### GR5J X3 (routing store capacity)
+    ParamOut[,4] <- 20+19.5*(ParamIn[,4]-9.99)/19.98;    ### GR5J X4 (unit hydrograph time constant)
+    ### ParamOut[,5] <- sinh(ParamIn[,5]);                   ### GR5J X5 (groundwater exchange coefficient 2)
+    ParamOut[,5] <- ParamIn[,5]/5;                       ### GR5J X5 (groundwater exchange coefficient 2)
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- log(ParamIn[,1]) / 1.5;              ### GR5J X1 (production store capacity)
+    ParamOut[,2] <- asinh(ParamIn[,2]);                  ### GR5J X2 (groundwater exchange coefficient 1)
+    ParamOut[,3] <- log(ParamIn[,3]);                    ### GR5J X3 (routing store capacity)
+    ParamOut[,4] <- 9.99+19.98*(ParamIn[,4]-20)/19.5;    ### GR5J X4 (unit hydrograph time constant)
+    ### ParamOut[,5] <- asinh(ParamIn[,5]);                  ### GR5J X5 (groundwater exchange coefficient 2)
+    ParamOut[,5] <- ParamIn[,5]*5;                       ### GR5J X5 (groundwater exchange coefficient 2)
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/TransfoParam_GR6J.R b/R/TransfoParam_GR6J.R
new file mode 100644
index 00000000..ed558b69
--- /dev/null
+++ b/R/TransfoParam_GR6J.R
@@ -0,0 +1,47 @@
+#**************************************************************************************************
+#' Function which transforms model parameters (from real to transformed parameters and vice versa).
+#**************************************************************************************************
+#' @title   Transformation of the parameters from the GR6J model
+#' @author  Laurent Coron (December 2013)
+#' @seealso \code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_CemaNeige}}
+#' @example tests/example_TransfoParam_GR6J.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputsOutputs____________________________________________________________________________
+#' @param   ParamIn   [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#' @param   Direction [character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real
+#' @return  \emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+#**************************************************************************************************
+TransfoParam_GR6J <- function(ParamIn,Direction){
+
+  NParam <- 6;
+  Bool <- is.matrix(ParamIn);
+  if(Bool==FALSE){ ParamIn <- rbind(ParamIn); }
+  if(ncol(ParamIn)!=NParam){ stop(paste("the GR6J model requires ",NParam," parameters \n",sep="")); return(NULL); }  
+
+  if(Direction=="TR"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- exp(1.5*ParamIn[,1]);                ### GR6J X1 (production store capacity)
+    ParamOut[,2] <- sinh(ParamIn[,2]);                   ### GR6J X2 (groundwater exchange coefficient 1)
+    ParamOut[,3] <- exp(ParamIn[,3]);                    ### GR6J X3 (routing store capacity)
+    ParamOut[,4] <- 20+19.5*(ParamIn[,4]-9.99)/19.98;    ### GR6J X4 (unit hydrograph time constant)
+    ### ParamOut[,5] <- sinh(ParamIn[,5]);                   ### GR6J X5 (groundwater exchange coefficient 2)
+    ParamOut[,5] <- ParamIn[,5]/5;                       ### GR6J X5 (groundwater exchange coefficient 2)
+    ParamOut[,6] <- exp(ParamIn[,6]);                    ### GR6J X6 (coefficient for emptying exponential store)
+  }	
+  if(Direction=="RT"){
+    ParamOut     <-  ParamIn;
+    ParamOut[,1] <- log(ParamIn[,1]) / 1.5;              ### GR6J X1 (production store capacity)
+    ParamOut[,2] <- asinh(ParamIn[,2]);                  ### GR6J X2 (groundwater exchange coefficient 1)
+    ParamOut[,3] <- log(ParamIn[,3]);                    ### GR6J X3 (routing store capacity)
+    ParamOut[,4] <- 9.99+19.98*(ParamIn[,4]-20)/19.5;    ### GR6J X4 (unit hydrograph time constant)
+    ### ParamOut[,5] <- asinh(ParamIn[,5]);                  ### GR6J X5 (groundwater exchange coefficient 2)
+    ParamOut[,5] <- ParamIn[,5]*5;                       ### GR6J X5 (groundwater exchange coefficient 2)
+    ParamOut[,6] <- log(ParamIn[,6]);                    ### GR6J X6 (coefficient for emptying exponential store)
+  }	
+
+  if(Bool==FALSE){ ParamOut <- ParamOut[1,]; }
+  return(ParamOut);
+
+}
+
diff --git a/R/airGR b/R/airGR
deleted file mode 100644
index 3b65e3cb..00000000
--- a/R/airGR
+++ /dev/null
@@ -1,27 +0,0 @@
-#  File share/R/nspackloader.R
-#  Part of the R package, http://www.R-project.org
-#
-#  Copyright (C) 1995-2012 The R Core Team
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  A copy of the GNU General Public License is available at
-#  http://www.r-project.org/Licenses/
-
-local({
-    info <- loadingNamespaceInfo()
-    pkg <- info$pkgname
-    ns <- .getNamespace(as.name(pkg))
-    if (is.null(ns))
-        stop("cannot find namespace environment for ", pkg, domain = NA);
-    dbbase <- file.path(info$libname, pkg, "R", pkg)
-    lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
-})
diff --git a/R/airGR.rdb b/R/airGR.rdb
deleted file mode 100644
index f499c91aa680b1580687738478a2d764bcd9c0da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 56780
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

diff --git a/R/airGR.rdx b/R/airGR.rdx
deleted file mode 100644
index 413f2cb20471dbd88745f64272c0ee51ad01a3a8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 721
zcmV;?0xta@iwFP!0000027Q&!YZE~f$7l1Sv^BB6v}ipFiU`3rtwObj7(;3`X-Rr$
zFD}#UG+nycU1qn{_99qC#2-jKsNl(qB6!e)h(##Xzrdph_28wThk{qFZ#TR9W}CEu
z&705nyZh$7$;@V|oe&ZsQMe*eXV?Q@Q7;~YE9v?qG6M0Wz~93hb@H4LI1TX!at!iy
zd`0g0O-Rc&a^EjPTK^&+-Gm&Q$j84B(sl*8{}dq!fkz$?a<GD2+Jg85xqOF^_!jc?
zGR&VsmR~}RuaK1z@IB<YZxGgy=bu7cMb=;~TFxNz8R+K*^72pM737sF@O|XFf8hB;
z$g2sc_cHS1Dd5}4&tU!Iw~(JJVSWK?7k`NSdI{$Hg#7Lt#G3-I6C!OOzlYkT>&PD@
z;5W!?Zy^Z%euViVN08TJVSnQ+gfZmLQ0w75tTBv<L}H{3VqB*+X2GD--F$ViBPGkl
zOd(gE$YgV}obu!YAeYkxX3rUlHA!bQhF&6N(#kxovLfX3w0&8ssWY6~s-b&Qry$9r
z=QBl5?-F&xwAGqtbZ0rEHgoN9)3L1}mFry8%>~=aa@7t}33|a$m==DZw4jF*^<AJg
z&1kloyJmB08d^hjZ8^>jF3gb(1o=`v=ZX76;y~lA#d4EdONBs9PUIA-YD@C?f};8>
z)(Z8CU3B{_XIYIFnOgOiySLHFmj=i7a)<VGPy22%aPy`9OcQaS&_o;@Z6-F$In+!H
zW>1tESDBTmRynKs+9apCHET>zPW`RYD{2j^(-m@sK6V;GFFTE(p9W)W7h`BQBj~Nm
z)C?PbZyPr&A^*Jpf*77%3EuTm8rl6^71$X+LXOPUHRr5L+urexd6Tv<eQ|iWKSTo|
zN{48$UK43|-y7}~${Y2M$s*;d^IGsvRy$|2j5EE0O2w#|oLLrAoTUE&Qpt<{3kLuI
DtCD8N

diff --git a/R/plot_OutputsModel.R b/R/plot_OutputsModel.R
new file mode 100644
index 00000000..0ef583f5
--- /dev/null
+++ b/R/plot_OutputsModel.R
@@ -0,0 +1,395 @@
+#*****************************************************************************************************************
+#' Function which creates a screen plot giving an overview of the model outputs
+#'
+#' Dashboard of results including various graphs (depending on the model):
+#' (1) time series of total precipitation and simulated flows (and observed flows if provided)
+#' (2) interannual median monthly simulated flow (and observed flows if provided)
+#' (3) correlation plot between simulated and observed flows (if observed flows provided)
+#' (4) cumulative frequency plot for simulated flows (and observed flows if provided)
+#*****************************************************************************************************************
+#' @title   Default preview of model outputs
+#' @author  Laurent Coron (June 2014)
+## @example tests/example_plot_OutputsModel.R
+#' @encoding UTF-8
+#' @export
+#_FunctionInputs__________________________________________________________________________________________________
+#' @param  OutputsModel      [object of class \emph{OutputsModel}] list of model outputs (which must at least include DatesR, Precip and Qsim) [POSIXlt, mm, mm]
+#' @param  Qobs              (optional) [numeric] time series of observed flow (for the same time-steps than simulated) [mm]
+#' @param  IndPeriod_Plot    (optional) [numeric] indices of the time-steps to be plotted (among the OutputsModel series)
+#' @param  BasinArea         (optional) [numeric] basin area [km2], used to plot flow axes in m3/s
+#' @param  PlotChoice        (optional) [character] choice of plots \cr (e.g. c("Precip","SnowPack","Flows","Regime","CumFreq","CorQQ")), default="all"
+#' @param  quiet             (optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE
+#_FunctionOutputs_________________________________________________________________________________________________
+#' @return  screen plot window
+#*****************************************************************************************************************
+plot_OutputsModel <- function(OutputsModel,Qobs=NULL,IndPeriod_Plot=NULL,BasinArea=NULL,PlotChoice="all",quiet=FALSE){
+
+
+  if(!inherits(OutputsModel,"GR") & !inherits(OutputsModel,"CemaNeige")){ stop(paste("OutputsModel not in the correct format for default plotting \n",sep="")); return(NULL); }
+
+  BOOL_Dates <- FALSE; 
+      if("DatesR" %in% names(OutputsModel)){ BOOL_Dates <- TRUE; }
+  BOOL_Pobs <- FALSE; 
+      if("Precip" %in% names(OutputsModel)){ BOOL_Pobs <- TRUE; }
+  BOOL_Qsim <- FALSE; 
+      if("Qsim"   %in% names(OutputsModel)){ BOOL_Qsim <- TRUE; }
+  BOOL_Qobs <- FALSE;
+      if(BOOL_Qsim & length(Qobs)==length(OutputsModel$Qsim)){ if(sum(is.na(Qobs))!=length(Qobs)){ BOOL_Qobs <- TRUE; } }
+  BOOL_Snow <- FALSE;
+      if("CemaNeigeLayers" %in% names(OutputsModel)){ if("SnowPack" %in% names(OutputsModel$CemaNeigeLayers[[1]])){ BOOL_Snow <- TRUE; } }
+  BOOL_Psol <- FALSE;
+      if("CemaNeigeLayers" %in% names(OutputsModel)){ if("Psol"     %in% names(OutputsModel$CemaNeigeLayers[[1]])){ BOOL_Psol <- TRUE; } }
+
+
+  if( is.null(     PlotChoice)){ stop("PlotChoice must be a vector of character \n"); return(NULL); } 
+  if(!is.vector(   PlotChoice)){ stop("PlotChoice must be a vector of character \n"); return(NULL); } 
+  if(!is.character(PlotChoice)){ stop("PlotChoice must be a vector of character \n"); return(NULL); } 
+  if(sum(PlotChoice %in% c("all","Precip","SnowPack","Flows","Regime","CumFreq","CorQQ")==FALSE)!=0){
+    cat("Incorrect element found in PlotChoice \n");
+    stop("PlotChoice can only contain 'all', 'Precip', 'SnowPack', 'Flows', 'Regime', 'CumFreq' or 'CorQQ') \n");
+    return(NULL); } 
+  if("all" %in% PlotChoice){ PlotChoice <- c("Precip","SnowPack","Flows","Regime","CumFreq","CorQQ"); }
+
+  if(!BOOL_Dates){
+    stop(paste("OutputsModel must contain at least DatesR to allow plotting \n",sep="")); return(NULL); }
+  if(inherits(OutputsModel,"GR") & !BOOL_Qsim){
+    stop(paste("OutputsModel must contain at least Qsim to allow plotting \n",sep="")); return(NULL); }
+
+  if(BOOL_Dates){
+    MyRollMean1 <- function(x,n){
+      return(filter(x,rep(1/n,n),sides=2)); }
+    MyRollMean2 <- function(x,n){
+      return(filter(c(tail(x,n%/%2),x,x[1:(n%/%2)]),rep(1/n,n),sides=2)[(n%/%2+1):(length(x)+n%/%2)]); }
+    BOOL_TS  <- FALSE;
+    TimeStep <- difftime(tail(OutputsModel$DatesR,1),tail(OutputsModel$DatesR,2),units="secs")[[1]];
+    if(inherits(OutputsModel,"hourly" ) & TimeStep %in% (                  60*60)){ BOOL_TS <- TRUE; NameTS <- "hour" ; plotunit <- "[mm/h]";     formatAxis <- "%m/%Y"; }
+    if(inherits(OutputsModel,"daily"  ) & TimeStep %in% (               24*60*60)){ BOOL_TS <- TRUE; NameTS <- "day"  ; plotunit <- "[mm/d]";     formatAxis <- "%m/%Y"; }
+    if(inherits(OutputsModel,"monthly") & TimeStep %in% (c(28,29,30,31)*24*60*60)){ BOOL_TS <- TRUE; NameTS <- "month"; plotunit <- "[mm/month]"; formatAxis <- "%m/%Y"; }
+    if(inherits(OutputsModel,"yearly" ) & TimeStep %in% (    c(365,366)*24*60*60)){ BOOL_TS <- TRUE; NameTS <- "year" ; plotunit <- "[mm/y]";     formatAxis <- "%Y"   ; }
+    if(!BOOL_TS){ stop(paste("the time step of the model inputs could not be found \n",sep="")); return(NULL); } 
+  }
+  if(length(IndPeriod_Plot)==0){ IndPeriod_Plot <- 1:length(OutputsModel$DatesR); }
+  if(inherits(OutputsModel,"CemaNeige")){ NLayers <- length(OutputsModel$CemaNeigeLayers); }
+  PsolLayerMean <- NULL; if(BOOL_Psol){
+    for(iLayer in 1:NLayers){
+      if(iLayer==1){ PsolLayerMean <- OutputsModel$CemaNeigeLayers[[iLayer]]$Psol/NLayers; 
+            } else { PsolLayerMean <- PsolLayerMean + OutputsModel$CemaNeigeLayers[[iLayer]]$Psol/NLayers; } } }
+  BOOL_QobsZero <- FALSE; if(BOOL_Qobs){ SelectQobsNotZero <- (round(Qobs[IndPeriod_Plot]             ,4)!=0); BOOL_QobsZero <- sum(!SelectQobsNotZero,na.rm=TRUE)>0; }
+  BOOL_QsimZero <- FALSE; if(BOOL_Qsim){ SelectQsimNotZero <- (round(OutputsModel$Qsim[IndPeriod_Plot],4)!=0); BOOL_QsimZero <- sum(!SelectQsimNotZero,na.rm=TRUE)>0; }
+  if(BOOL_QobsZero & !quiet){ warning("\t zeroes detected in Qobs -> some plots in the log space will not be created using all time-steps \n"); }
+  if(BOOL_QsimZero & !quiet){ warning("\t zeroes detected in Qsim -> some plots in the log space will not be created using all time-steps \n"); }
+  BOOL_FilterZero <- TRUE;
+
+  ##Plots_choices
+  BOOLPLOT_Precip   <- ( "Precip"   %in% PlotChoice & BOOL_Pobs )
+  BOOLPLOT_SnowPack <- ( "SnowPack" %in% PlotChoice & BOOL_Snow )
+  BOOLPLOT_Flows    <- ( "Flows"    %in% PlotChoice & (BOOL_Qsim | BOOL_Qobs) )
+  BOOLPLOT_Regime   <- ( "Regime"   %in% PlotChoice & BOOL_TS & BOOL_Qsim & (NameTS %in% c("hour","day","month")) )
+  BOOLPLOT_CumFreq  <- ( "CumFreq"  %in% PlotChoice & (BOOL_Qsim | BOOL_Qobs) & BOOL_FilterZero )
+  BOOLPLOT_CorQQ    <- ( "CorQQ"    %in% PlotChoice & (BOOL_Qsim & BOOL_Qobs) & BOOL_FilterZero )
+
+
+  ##Options
+  BLOC <- TRUE; if(BLOC){
+    cexaxis <- 1.0; cexlab <- 0.9; cexleg=1.0; lwdLine=1.8; lineX=2.6; lineY=2.6; bgleg <- rgb(1,1,1,alpha=0.7); bgleg <- NA;
+
+    matlayout <- NULL; iPlot <- 0;
+    Sum1 <- sum(c(BOOLPLOT_Precip,BOOLPLOT_SnowPack,BOOLPLOT_Flows))
+    Sum2 <- sum(c(BOOLPLOT_Regime,BOOLPLOT_CumFreq,BOOLPLOT_CorQQ))
+    if(BOOLPLOT_Precip){ 
+      matlayout <- rbind(matlayout,c(iPlot+1,iPlot+1,iPlot+1)); iPlot <- iPlot+1; }
+    if(BOOLPLOT_SnowPack){ 
+      matlayout <- rbind(matlayout,c(iPlot+1,iPlot+1,iPlot+1),c(iPlot+1,iPlot+1,iPlot+1)); iPlot <- iPlot+1; }
+    if(BOOLPLOT_Flows){ 
+      matlayout <- rbind(matlayout,c(iPlot+1,iPlot+1,iPlot+1),c(iPlot+1,iPlot+1,iPlot+1)); iPlot <- iPlot+1; }
+    if((Sum1>=1 & Sum2!=0) | (Sum1==0 & Sum2==3)){ 
+      matlayout <- rbind(matlayout,c(iPlot+1,iPlot+2,iPlot+3),c(iPlot+1,iPlot+2,iPlot+3)); iPlot <- iPlot+3; }
+    if(Sum1==0 & Sum2==2){ 
+      matlayout <- rbind(matlayout,c(iPlot+1,iPlot+2)); iPlot <- iPlot+2; }
+    if(Sum1==0 & Sum2==1){ 
+      matlayout <- rbind(matlayout,iPlot+1); iPlot <- iPlot+1; }
+    iPlotMax <- iPlot;
+
+    isRStudio <- Sys.getenv("RSTUDIO") == "1";
+    if(!isRStudio){ 
+      if(Sum1==1 & Sum2==0){ width=10; height=05; }
+      if(Sum1==1 & Sum2!=0){ width=10; height=07; }
+      if(Sum1==2 & Sum2==0){ width=10; height=05; }
+      if(Sum1==2 & Sum2!=0){ width=10; height=07; }
+      if(Sum1==3 & Sum2==0){ width=10; height=07; }
+      if(Sum1==3 & Sum2!=0){ width=10; height=10; }
+      if(Sum1==0 & Sum2==1){ width=05; height=05; }
+      if(Sum1==0 & Sum2==2){ width=10; height=04; }
+      if(Sum1==0 & Sum2==3){ width=10; height=03; }
+      dev.new(width=width,height=height)
+    }
+    layout(matlayout);
+
+    Xaxis <- 1:length(IndPeriod_Plot);
+    if(BOOL_Dates){
+      if(NameTS %in% c("hour","day","month")){
+      Seq1 <- which(OutputsModel$DatesR[IndPeriod_Plot]$mday==1 & OutputsModel$DatesR[IndPeriod_Plot]$mon %in% c(0,3,6,9));
+      Seq2 <- which(OutputsModel$DatesR[IndPeriod_Plot]$mday==1 & OutputsModel$DatesR[IndPeriod_Plot]$mon==0);
+      Labels2 <- format(OutputsModel$DatesR[IndPeriod_Plot],format=formatAxis)[Seq2];
+      }
+      if(NameTS %in% c("year")){
+      Seq1 <- 1:length(OutputsModel$DatesR[IndPeriod_Plot]);
+      Seq2 <- 1:length(OutputsModel$DatesR[IndPeriod_Plot]);
+      Labels2 <- format(OutputsModel$DatesR[IndPeriod_Plot],format=formatAxis)[Seq2];
+      }
+    }
+
+    if(!is.null(BasinArea)){
+      Factor_MMH_M3S <- BasinArea/(             60*60/1000); 
+      Factor_MMD_M3S <- BasinArea/(          24*60*60/1000); 
+      Factor_MMM_M3S <- BasinArea/(365.25/12*24*60*60/1000); 
+      Factor_MMY_M3S <- BasinArea/(   365.25*24*60*60/1000); 
+      if(NameTS=="hour" ){ Factor_UNIT_M3S <- Factor_MMH_M3S; }
+      if(NameTS=="day"  ){ Factor_UNIT_M3S <- Factor_MMD_M3S; }
+      if(NameTS=="month"){ Factor_UNIT_M3S <- Factor_MMM_M3S; }
+      if(NameTS=="year" ){ Factor_UNIT_M3S <- Factor_MMY_M3S; }
+    }
+  }
+
+  kPlot <- 0;
+
+  ##Precip
+  if(BOOLPLOT_Precip){
+    kPlot <- kPlot+1; mar <- c(3,5,1,5);
+    par(new=FALSE,mar=mar,las=0)
+    ylim1 <- range(OutputsModel$Precip[IndPeriod_Plot],na.rm=TRUE); ylim2 <- ylim1;  ylim2 <- rev(ylim2); 
+    lwdP <- 0.7; if(NameTS %in% c("month","year")){ lwdP <- 2; }
+    plot(Xaxis,OutputsModel$Precip[IndPeriod_Plot],type="h",ylim=ylim2,col="royalblue",lwd=lwdP,xaxt="n",yaxt="n",xlab="",ylab="",yaxs="i");
+    axis(side=2,at=pretty(ylim1),labels=pretty(ylim1),cex.axis=cexaxis)
+    par(las=0); mtext(side=2,paste("precip.  ",plotunit,sep=""),line=lineY,cex=cexlab,adj=1); par(las=0); 
+    if(BOOL_Psol){
+      par(new=TRUE);
+      plot(Xaxis,PsolLayerMean[IndPeriod_Plot],type="h",ylim=ylim2,col="lightblue",lwd=lwdP,xaxt="n",yaxt="n",xlab="",ylab="",yaxs="i");
+    }
+    if(BOOL_Dates){
+      axis(side=1,at=Seq1,labels=FALSE,cex.axis=cexaxis);
+      axis(side=1,at=Seq2,labels=Labels2,lwd.ticks=1.5,cex.axis=cexaxis);
+    } else { axis(side=1,at=pretty(Xaxis),labels=pretty(Xaxis),cex.axis=cexaxis); }
+  }
+
+
+  ##SnowPack
+  if(BOOLPLOT_SnowPack){
+    kPlot <- kPlot+1; mar <- c(3,5,1,5);
+    par(new=FALSE,mar=mar,las=0)
+    ylim1 <- c(+99999,-99999)
+    for(iLayer in 1:NLayers){
+      ylim1[1] <- min(ylim1[1],OutputsModel$CemaNeigeLayers[[iLayer]]$SnowPack);
+      ylim1[2] <- max(ylim1[2],OutputsModel$CemaNeigeLayers[[iLayer]]$SnowPack);
+      if(iLayer==1){ SnowPackLayerMean <- OutputsModel$CemaNeigeLayers[[iLayer]]$SnowPack/NLayers; 
+            } else { SnowPackLayerMean <- SnowPackLayerMean + OutputsModel$CemaNeigeLayers[[iLayer]]$SnowPack/NLayers; }
+    }
+    plot(SnowPackLayerMean[IndPeriod_Plot],type="l",ylim=ylim1,lwd=lwdLine*1.2,col="royalblue",xlab="",ylab="",xaxt="n",yaxt="n")
+    for(iLayer in 1:NLayers){ lines(OutputsModel$CemaNeigeLayers[[iLayer]]$SnowPack[IndPeriod_Plot],lty=3,col="royalblue",lwd=lwdLine*0.8); }
+    axis(side=2,at=pretty(ylim1),labels=pretty(ylim1),cex.axis=cexaxis)
+    par(las=0); mtext(side=2,paste("snow pack  ","[mm]",sep=""),line=lineY,cex=cexlab); par(las=0);
+    legend("topright",c(paste("mean snow pack",sep=""),paste("snow pack for each layer",sep="")),col=c("royalblue","royalblue"),lty=c(1,3),lwd=c(lwdLine*1.2,lwdLine*0.8),bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    box()
+    if(BOOL_Dates){
+      axis(side=1,at=Seq1,labels=FALSE,cex.axis=cexaxis);
+      axis(side=1,at=Seq2,labels=Labels2,lwd.ticks=1.5,cex.axis=cexaxis);
+    } else { axis(side=1,at=pretty(Xaxis),labels=pretty(Xaxis),cex.axis=cexaxis); }
+  }
+
+
+  ##Flows
+  if(BOOLPLOT_Flows){
+    kPlot <- kPlot+1; mar <- c(3,5,1,5);
+    par(new=FALSE,mar=mar,las=0)
+    ylim1 <- range(OutputsModel$Qsim[IndPeriod_Plot],na.rm=TRUE);
+    if(BOOL_Qobs){ ylim1 <- range(c(ylim1,Qobs[IndPeriod_Plot]),na.rm=TRUE); }
+    ylim2 <- c(ylim1[1],1.2*ylim1[2]);
+    plot(Xaxis,rep(NA,length(Xaxis)),type="n",ylim=ylim2,xlab="",ylab="",xaxt="n",yaxt="n");
+    txtleg <- NULL; colleg <- NULL;
+    if(BOOL_Qobs){ lines(Xaxis,Qobs[IndPeriod_Plot],lwd=lwdLine,lty=1,col="black"); txtleg <- c(txtleg,"observed"); colleg <- c(colleg,"black"); }
+    if(BOOL_Qsim){ lines(Xaxis,OutputsModel$Qsim[IndPeriod_Plot],lwd=lwdLine,lty=1,col="orangered"); txtleg <- c(txtleg,"simulated"); colleg <- c(colleg,"orangered"); }
+    axis(side=2,at=pretty(ylim1),labels=pretty(ylim1),cex.axis=cexaxis)
+    par(las=0); mtext(side=2,paste("flow  ",plotunit,sep=""),line=lineY,cex=cexlab); par(las=0);
+    if(!is.null(BasinArea)){
+      Factor <- Factor_UNIT_M3S;
+      axis(side=4,at=pretty(ylim1*Factor)/Factor,labels=pretty(ylim1*Factor),cex.axis=cexaxis);
+      par(las=0); mtext(side=4,paste("flow  ","m3/s",sep=""),line=lineY,cex=cexlab); par(las=0); }
+    if(BOOL_Dates){
+      axis(side=1,at=Seq1,labels=FALSE,cex.axis=cexaxis);
+      axis(side=1,at=Seq2,labels=Labels2,lwd.ticks=1.5,cex.axis=cexaxis);
+    } else { axis(side=1,at=pretty(Xaxis),labels=pretty(Xaxis),cex.axis=cexaxis); }
+    legend("topright",txtleg,col=colleg,lty=1,lwd=lwdLine,bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    box()
+  }
+
+
+  ##Regime
+  if(BOOLPLOT_Regime){
+    kPlot <- kPlot+1; mar <- c(6,5,1,5); plotunitregime <- "[mm/month]";
+    par(new=FALSE,mar=mar,las=0)
+    ##Data_formating_as_table
+    DataModel <- as.data.frame(matrix(as.numeric(NA),nrow=length(IndPeriod_Plot),ncol=5));
+                   DataModel[,1] <- as.numeric(format(OutputsModel$DatesR[IndPeriod_Plot],format="%Y%m%d%H"));
+    if(BOOL_Pobs){ DataModel[,2] <- OutputsModel$Precip[IndPeriod_Plot]; }
+    if(BOOL_Psol){ DataModel[,3] <- PsolLayerMean[IndPeriod_Plot]; }
+    if(BOOL_Qobs){ DataModel[,4] <- Qobs[IndPeriod_Plot]; }
+    if(BOOL_Qsim){ DataModel[,5] <- OutputsModel$Qsim[IndPeriod_Plot]; }
+    colnames(DataModel) <- c("Dates","Precip","Psol","Qobs","Qsim");
+    TxtDatesDataModel <- formatC(DataModel$Dates,format="d",width=8,flag="0");
+    ##Building_of_daily_time_series_if_needed
+    if(NameTS=="month"){ DataDaily <- NULL; }
+    if(NameTS=="day"  ){ DataDaily <- DataModel; }
+    if(NameTS=="hour" ){ DataDaily <- as.data.frame(aggregate(DataModel[,2:5],by=list(as.numeric(substr(TxtDatesDataModel,1,8))),FUN=sum,na.rm=T));  }
+    if(NameTS %in% c("hour","day")){
+    colnames(DataDaily) <- c("Dates","Precip","Psol","Qobs","Qsim"); 
+    TxtDatesDataDaily <- formatC(DataDaily$Dates,format="d",width=8,flag="0");  }
+    ##Building_of_monthly_time_series_if_needed
+    if(NameTS=="month"){ DataMonthly <- DataModel; }
+    if(NameTS=="day"  ){ DataMonthly <- as.data.frame(aggregate(DataDaily[,2:5],by=list(as.numeric(substr(TxtDatesDataDaily,1,6))),FUN=sum,na.rm=T)); }
+    if(NameTS=="hour" ){ DataMonthly <- as.data.frame(aggregate(DataDaily[,2:5],by=list(as.numeric(substr(TxtDatesDataDaily,1,6))),FUN=sum,na.rm=T)); }
+    colnames(DataMonthly) <- c("Dates","Precip","Psol","Qobs","Qsim");
+    TxtDatesDataMonthly <- formatC(DataMonthly$Dates,format="d",width=6,flag="0");
+    ##Computation_of_interannual_mean_series
+    if(!is.null(DataDaily)){
+    DataDailyInterAn <- as.data.frame(aggregate(DataDaily[,2:5],by=list(as.numeric(substr(TxtDatesDataDaily ,5,8))),FUN=mean,na.rm=T));
+    colnames(DataDailyInterAn) <- c("Dates","Precip","Psol","Qobs","Qsim"); }
+    if(!is.null(DataMonthly)){
+    DataMonthlyInterAn <- as.data.frame(aggregate(DataMonthly[,2:5],by=list(as.numeric(substr(TxtDatesDataMonthly,5,6))),FUN=mean,na.rm=T));
+    colnames(DataMonthlyInterAn) <- c("Dates","Precip","Psol","Qobs","Qsim"); }
+    ##Smoothing_of_daily_series_and_scale_conversion_to_make_them_become_a_monthly_regime
+    if(!is.null(DataDaily)){
+      ##Smoothing
+      NDaysWindow <- 30; 
+      DataDailyInterAn <- as.data.frame(cbind(DataDailyInterAn$Dates, 
+                                        MyRollMean2(DataDailyInterAn$Precip,NDaysWindow), MyRollMean2(DataDailyInterAn$Psol,NDaysWindow), 
+                                        MyRollMean2(DataDailyInterAn$Qobs  ,NDaysWindow), MyRollMean2(DataDailyInterAn$Qsim,NDaysWindow)));
+      colnames(DataDailyInterAn) <- c("Dates","Precip","Psol","Qobs","Qsim");
+      ##Scale_conversion_to_make_them_become_a_monthly_regime
+      if(plotunitregime!="[mm/month]"){ stop(paste("incorrect unit for regime plot \n",sep="")); return(NULL); }
+      DataDailyInterAn <- as.data.frame(cbind(DataDailyInterAn[1],DataDailyInterAn[2:5]*30));
+    }
+    ##Plot_preparation
+    DataPlotP <- DataMonthlyInterAn;
+    if(!is.null(DataDaily)){
+    DataPlotQ <- DataDailyInterAn;
+    SeqX1 <- c(  1, 32, 61, 92,122,153,183,214,245,275,306,336,366);
+    SeqX2 <- c( 15, 46, 75,106,136,167,197,228,259,289,320,350);  
+    labX <- "30-days rolling mean";
+    } else {
+    DataPlotQ <- DataMonthlyInterAn; 
+    SeqX1 <- seq(from=0.5,to=12.5,by=1);
+    SeqX2 <- seq(from=1  ,to=12  ,by=1);
+    labX <- "";
+    }
+    xLabels1 <- rep("",13);
+    xLabels2 <- c("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
+    ylimQ <- range(c(DataPlotQ$Qobs,DataPlotQ$Qsim),na.rm=TRUE);
+    if(BOOL_Pobs){ ylimP <- c(max(DataPlotP$Precip,na.rm=TRUE),0);  }
+    txtleg <- NULL; colleg <- NULL; lwdleg <- NULL; lwdP=10;
+    ##Plot_forcings
+    if(BOOL_Pobs){
+    plot(SeqX2,DataPlotP$Precip,type="h",xlim=range(SeqX1),ylim=c(3*ylimP[1],ylimP[2]),lwd=lwdP,lend=1,lty=1,col="royalblue",xlab="",ylab="",xaxt="n",yaxt="n",yaxs="i",bty="n")
+    txtleg <- c(txtleg,"Ptot" ); colleg <- c(colleg,"royalblue"); lwdleg <- c(lwdleg,lwdP/3); 
+    axis(side=2,at=pretty(0.8*ylimP,n=3),labels=pretty(0.8*ylimP,n=3),cex.axis=cexaxis,col.axis="royalblue",col.ticks="royalblue");
+    par(new=TRUE); }
+    if(BOOL_Psol){
+    plot(SeqX2,DataPlotP$Psol,type="h",xlim=range(SeqX1),ylim=c(3*ylimP[1],ylimP[2]),lwd=lwdP,lend=1,lty=1,col="lightblue",xlab="",ylab="",xaxt="n",yaxt="n",yaxs="i",bty="n");
+    txtleg <- c(txtleg,"Psol" ); colleg <- c(colleg,"lightblue"); lwdleg <- c(lwdleg,lwdP/3); 
+    par(new=TRUE); }
+    ##Plot_flows
+    plot(NULL,type="n",xlim=range(SeqX1),ylim=c(ylimQ[1],2*ylimQ[2]),xlab="",ylab="",xaxt="n",yaxt="n")
+    if(BOOL_Qobs){ lines(1:nrow(DataPlotQ),DataPlotQ$Qobs,lwd=lwdLine,lty=1,col="black"    ); txtleg <- c(txtleg,"Qobs" ); colleg <- c(colleg,"black"    ); lwdleg <- c(lwdleg,lwdLine); }
+    if(BOOL_Qsim){ lines(1:nrow(DataPlotQ),DataPlotQ$Qsim,lwd=lwdLine,lty=1,col="orangered"); txtleg <- c(txtleg,"Qsim"); colleg <- c(colleg,"orangered"); lwdleg <- c(lwdleg,lwdLine); }
+    ##Axis_and_legend
+    axis(side=1,at=SeqX1,tick=TRUE ,labels=xLabels1,cex.axis=cexaxis)
+    axis(side=1,at=SeqX2,tick=FALSE,labels=xLabels2,cex.axis=cexaxis)
+    axis(side=2,at=pretty(ylimQ),labels=pretty(ylimQ),cex.axis=cexaxis)
+    par(las=0); mtext(side=1,labX,line=lineX,cex=cexlab); par(las=0);
+    posleg <- "topright"; txtlab <- "flow regime";
+    if(BOOL_Pobs){ posleg <- "right"; txtlab <- "precip. & flow regime"; }
+    par(las=0); mtext(side=2,paste(txtlab,"  ",plotunitregime,sep=""),line=lineY,cex=cexlab); par(las=0);
+    if(!is.null(BasinArea)){
+      Factor <- Factor_MMM_M3S;
+      axis(side=4,at=pretty(ylimQ*Factor)/Factor,labels=pretty(ylimQ*Factor),cex.axis=cexaxis);
+      par(las=0); mtext(side=4,paste("flow  ","m3/s",sep=""),line=lineY,cex=cexlab); par(las=0); }
+    ### posleg <- "topright"; if(BOOL_Pobs){ posleg <- "right"; }
+    ### legend(posleg,txtleg,col=colleg,lty=1,lwd=lwdleg,bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    box()
+  }
+
+
+  
+  ##Cumulative_frequency
+  if(BOOLPLOT_CumFreq){
+    kPlot <- kPlot+1; mar <- c(6,5,1,5);
+    par(new=FALSE,mar=mar,las=0)
+    xlim <- c(0,1);
+    if(BOOL_Qobs & !BOOL_Qsim){ SelectNotZero <- SelectQobsNotZero;
+                                ylim <- range(log(Qobs[IndPeriod_Plot][SelectNotZero]),na.rm=TRUE); }
+    if(BOOL_Qsim & !BOOL_Qobs){ SelectNotZero <- SelectQsimNotZero;
+                                ylim <- range(log(OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero]),na.rm=TRUE); }
+    if(BOOL_Qobs &  BOOL_Qsim){ SelectNotZero <- SelectQobsNotZero & SelectQsimNotZero;
+                                ylim <- range(log(c(Qobs[IndPeriod_Plot][SelectNotZero],OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero])),na.rm=TRUE); }
+    seqDATA1 <- log(c(0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000)); seqDATA2 <- exp(seqDATA1);
+    plot(0,0,type="n",xlim=xlim,ylim=ylim,xaxt="n",yaxt="n",xlab="",ylab="",main="");
+    ### abline(h=0,lty=2,col=grey(0.5));
+    ### abline(h=1,lty=2,col=grey(0.5));
+    axis(side=1,at=pretty(xlim),labels=pretty(xlim),cex.axis=cexaxis);
+    par(las=0); mtext(side=1,text="non-exceedance prob. [-]",line=lineY,cex=cexlab); par(las=0);
+    axis(side=2,at=seqDATA1,labels=seqDATA2,cex.axis=cexaxis); 
+    par(las=0); mtext(side=2,text=paste("flow  ",plotunit,"",sep=""),line=lineY,cex=cexlab); par(las=0);
+    txtleg <- NULL; colleg <- NULL;
+    if(BOOL_Qobs){
+      DATA2 <- log(Qobs[IndPeriod_Plot][SelectNotZero]);
+      SeqQuant <- seq(0,1,by=1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2,SeqQuant,na.rm=TRUE));
+      Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
+      lines(XX,YY,lwd=1,col="black");
+      txtleg <- c(txtleg,"observed"); colleg <- c(colleg,"black"); }
+    if(BOOL_Qsim){
+      DATA2 <- log(OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero]);
+      SeqQuant <- seq(0,1,by=1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2,SeqQuant,na.rm=TRUE));
+      Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
+      lines(XX,YY,lwd=1,col="orangered");
+      txtleg <- c(txtleg,"simulated"); colleg <- c(colleg,"orangered"); }
+    if(!is.null(BasinArea)){
+      Factor <- Factor_UNIT_M3S;
+      axis(side=4,at=seqDATA1,labels=round(seqDATA2*Factor),cex.axis=cexaxis);
+      par(las=0); mtext(side=4,paste("flow  ","m3/s",sep=""),line=lineY,cex=cexlab); par(las=0); }
+    legend("topleft",txtleg,col=colleg,lty=1,lwd=lwdLine,bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    legend("bottomright","log scale",lty=1,col=NA,bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    box()
+  }
+
+
+  ##Correlation_QQ
+  if(BOOLPLOT_CorQQ){
+    kPlot <- kPlot+1; mar <- c(6,5,1,5);
+    par(new=FALSE,mar=mar,las=0)
+    ylim <- log(range(c(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero],OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),na.rm=TRUE));
+    plot(log(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),log(OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),type="p",pch=1,cex=0.9,col="black",xlim=ylim,ylim=ylim,xaxt="n",yaxt="n",xlab="",ylab="")
+    abline(a=0,b=1,col="royalblue");
+    seqDATA1 <- log(c(0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000)); seqDATA2 <- exp(seqDATA1);
+    axis(side=1,at=seqDATA1,labels=seqDATA2,cex=cexaxis);
+    axis(side=2,at=seqDATA1,labels=seqDATA2,cex=cexaxis);
+    par(las=0); mtext(side=1,paste("observed flow  ",plotunit,"",sep=""),line=lineX,cex=cexlab); par(las=0);
+    par(las=0); mtext(side=2,paste("simulated flow  ",plotunit,"",sep=""),line=lineY,cex=cexlab); par(las=0);
+    if(!is.null(BasinArea)){
+      Factor <- Factor_UNIT_M3S;
+      axis(side=4,at=seqDATA1,labels=round(seqDATA2*Factor),cex.axis=cexaxis);
+      par(las=0); mtext(side=4,paste("flow  ","m3/s",sep=""),line=lineY,cex=cexlab); par(las=0); }
+    legend("bottomright","log scale",lty=1,col=NA,bty="o",bg=bgleg,box.col=bgleg,cex=cexleg)
+    box()
+  }
+
+  ##Empty_plots
+  while(kPlot < iPlotMax){
+    kPlot <- kPlot+1;
+    par(new=FALSE)
+    plot(0,0,type="n",xlab="",ylab="",axes=FALSE)
+  }
+
+  ##Restoring_layout_options
+  layout(1);
+  
+
+}
diff --git a/help/AnIndex b/help/AnIndex
deleted file mode 100644
index 31263de4..00000000
--- a/help/AnIndex
+++ /dev/null
@@ -1,38 +0,0 @@
-airGR	airGR
-BasinInfo	BasinInfo
-BasinObs	BasinObs
-Calibration	Calibration
-Calibration_HBAN	Calibration_HBAN
-Calibration_optim	Calibration_optim
-CreateCalibOptions	CreateCalibOptions
-CreateInputsCrit	CreateInputsCrit
-CreateInputsModel	CreateInputsModel
-CreateRunOptions	CreateRunOptions
-DataAltiExtrapolation_HBAN	DataAltiExtrapolation_HBAN
-ErrorCrit	ErrorCrit
-ErrorCrit_KGE	ErrorCrit_KGE
-ErrorCrit_KGE2	ErrorCrit_KGE2
-ErrorCrit_NSE	ErrorCrit_NSE
-ErrorCrit_RMSE	ErrorCrit_RMSE
-PEdaily_Oudin	PEdaily_Oudin
-plot_OutputsModel	plot_OutputsModel
-RunModel	RunModel
-RunModel_CemaNeige	RunModel_CemaNeige
-RunModel_CemaNeigeGR4J	RunModel_CemaNeigeGR4J
-RunModel_CemaNeigeGR5J	RunModel_CemaNeigeGR5J
-RunModel_CemaNeigeGR6J	RunModel_CemaNeigeGR6J
-RunModel_GR1A	RunModel_GR1A
-RunModel_GR2M	RunModel_GR2M
-RunModel_GR4H	RunModel_GR4H
-RunModel_GR4J	RunModel_GR4J
-RunModel_GR5J	RunModel_GR5J
-RunModel_GR6J	RunModel_GR6J
-SeriesAggreg	SeriesAggreg
-TransfoParam	TransfoParam
-TransfoParam_CemaNeige	TransfoParam_CemaNeige
-TransfoParam_GR1A	TransfoParam_GR1A
-TransfoParam_GR2M	TransfoParam_GR2M
-TransfoParam_GR4H	TransfoParam_GR4H
-TransfoParam_GR4J	TransfoParam_GR4J
-TransfoParam_GR5J	TransfoParam_GR5J
-TransfoParam_GR6J	TransfoParam_GR6J
diff --git a/help/airGR.rdb b/help/airGR.rdb
deleted file mode 100644
index 61b7631bebb3429ffcdc2149403d869e9f75b41b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 137484
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
RKhKZ!ucq$+SIV7+{{??~e7*nx

diff --git a/help/airGR.rdx b/help/airGR.rdx
deleted file mode 100644
index 5edb7f54b192f60f0510967be6c0205bbba041e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 967
zcmV;&133I2iwFP!0000027T6DXcSiz2k<l5O*Dxcv#}-^3r4L<YpKc1Zu|g+&AP^q
zCecj=n?8hzxrw8jndQzz`~pRN5sDy%iij_2eDFcBeGr9K&?lo<Y-uPK(`rHOQ?(CO
zsi<dnXXeb=T@7q@e&@{G`QMr0&TgpzfC>oVry`WwoPqyB?)O6cMDl%5TCjYSTzLl|
zyoOvG2dImXo3{bXyiac14p9F!Ir$;>{~`A+0hoS~yd#XhN8X2-n%l_72XJ#Ud29kR
z93+3Y4;?1|IEFq?z9j)_y2ulM0aULfKUj@({E7TT#r`Jpzc|)(vJzSZ&`9Ge&94BO
zE|axM^lkFzc>N-)$X~SrMDLKzd1$)6$^pD~(LVAwc;6aMlF!{lpCDg73^3(6`Nk=L
zsz1oL&Y=_JU+VDwJ|zFv#C^Yo`{BoU{2ub(<LD#gXV|L><a>$pYdY<_BKiXJeSpsp
zUQ19Q4AuBuY3d`w#*O;?!&fL)cj&fZt}}-$w=gwd=ozqG*CzFhF(7rvuuQj9A1L*&
z?MQUH^=PneWgTP0Z8RjM&>fL)_hfTz+aD_5S!ZTP9Xlxv#~&(C@3IC(h98g~HTgiz
zt93_DWE>;4%aMB4%9Nz5PDyFWz&Rp*p?^bX$}QHhqFTCZcW;?p(_MZwvN1KN8=2kx
zJ)?t$cg3b+-ry`6JohKXh~6!XVc~WfOFNzE*!uT%<L~XZd)<iN?M$~N$`sYEGR4^1
za>a6E#>*A`vrp?4(hzoHcvy;Iul9x1O?$}Ns7u{@R2qY|lB*MC-M~DG8~$918~%Js
z8tdQDh`+1h&#h87WM|sjE1R(#y!j42xd5+Am;BscZrS(zZ4CVx`7ADP${g~gE$ENP
zKO8_WAdmN;=aYZE#`piTh5PXgKK`>q=tZ=oDF35BrGEGV%d5<~i(X7tzvtd?o}EwW
zo5r1a&Aopc_pwLZV`JP`@D-)ZBVXUk3^lm?DRZemj;}1`6Y|~1e7+M;xqpAj{h)&T
z$r<jaz1%NmqG!{RT>mpVaQ|m@aJQ!T{Y?DF`(M`b`)5q@{+`Lg@wp{mc~i8?R|#|H
ziWP0HrWDl5S=3cIHO?4koU@&CDd#fI<t!sVt;#d1Jfm8)Gta2<j4IEl@{B6asPc>|
z&&bcC@r)YJsPT+i(Xl+E#xrU>qsB98%UGxwQ=F-tX(<yQWqDz-g52*`rSM@7RLFao
p?$o8B4`hV*{;iQ>NJwFBrOH-oBrAn&i^1HWZvppAXEO^60074d`R4!t

diff --git a/help/aliases.rds b/help/aliases.rds
deleted file mode 100644
index f331e2e75a852bcd5be18d044d41847e0a3ae4a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 349
zcmV-j0iymNiwFP!000002JMqOZ^AGTfL)*xX`2cd82SUc7m@BEjlx4b6gqT^4q+lo
z!H#SrwST^<L5}5+z}Sf)PVW1hv(NH<Js^Y{sHvVt^Z40O!z*ebN4@WX@F>=SGXg>A
zgzlII?GspTgpMBr$jF9+B#dg*u~0G|`3udvHfOmcdo6ka#~|@ZFY}`oCe_JIXnv3)
z;6$2K7N4^%&dNW;2U<?_@&OY3Op@?ha>!X$*_{(|&bYOPYd|uKLJglwa8RAPSl3LA
z=Z3nga0?{+NtTB#DNd}LXG|(0&&z46LhQI##7Thnu)rk6+Vra?iigu{*1Kxo3+oyi
z#czHM9L#Ira9juLa(Z>ptp2pdoM7RnDaUESJ~>daV=LfL+@ZeBDyP#eS*wn7VQM)S
vrk;wJUJ%|Tp=v{|h7xy0$5Gg0alE~^HoUdrtquRL4bkr(<*O^z3kLuIE_bKi

diff --git a/help/paths.rds b/help/paths.rds
deleted file mode 100644
index 7c123f5efb9656c1b5dcbf1b3a8dd0475d62af52..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 402
zcmV;D0d4*tiwFP!000002EEqLPr@)12k-^F=*hprBNGC~cpGyWAh4xi#DiHLt}HcM
zyR==R|Gjf6E6VYe!+s=NKHry@zNVWC$8kDNx4t^v`qjCtuPf)wIj^6wf9KAjl9X#-
zNWtA$iZ`m23rvRO`<`6)ZhQTNC|#vYG(WuV|0saFV^EAw`A+mm`r}4uZnRY`OE6d;
za<-MAnc%Jbge)hMvA1mb4K^=I&5G84M)4&DO`DXc{7O;S{b>TGysWhHCDYjbG5Cc@
zX>O%_Qt^M?0Sx{gG<dmY!Mm1Fiu~9*LYdb<N+A#XzeaVFhcIaEM|68&t?=c_Ug2b6
z;wXj3K?*GYNTT{XN8Wwwb^d3FP&S!gHt}fzOUg3Z2E5n_2+44Ef{@WELT+ZrOK2Yw
zlD=op9xUwH!-+-PV!uZgZF8NhFzgkTj4Ch7B+ZcNwFItqA_fTs@(7vqu^k8H+;I?c
wI7T*nbChiO<~UjLXLkLOW#1gFIfmc7A=g~yLf6LvZJvcc0rpmI^a>6D0Gu4hkpKVy

diff --git a/html/00Index.html b/html/00Index.html
deleted file mode 100644
index 4d72ca1e..00000000
--- a/html/00Index.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><title>R: Modelling tools used at Irstea-HBAN (France), including GR4J and
-CemaNeige</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="R.css">
-</head><body>
-<h1> Modelling tools used at Irstea-HBAN (France), including GR4J and
-CemaNeige
-<img class="toplogo" src="../../../doc/html/logo.jpg" alt="[R logo]">
-</h1>
-<hr>
-<div align="center">
-<a href="../../../doc/html/packages.html"><img src="../../../doc/html/left.jpg" alt="[Up]" width="30" height="30" border="0"></a>
-<a href="../../../doc/html/index.html"><img src="../../../doc/html/up.jpg" alt="[Top]" width="30" height="30" border="0"></a>
-</div><h2>Documentation for package &lsquo;airGR&rsquo; version 0.8.1.0</h2>
-
-<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
-</ul>
-
-<h2>Help Pages</h2>
-
-
-<table width="100%">
-<tr><td width="25%"><a href="airGR.html">airGR</a></td>
-<td>Modelling tools used at Irstea-HBAN (France), including GR4J and CemaNeige</td></tr>
-<tr><td width="25%"><a href="BasinInfo.html">BasinInfo</a></td>
-<td>Data sample: characteristics of a fictional catchment (L0123001, L0123002 or L0123003)</td></tr>
-<tr><td width="25%"><a href="BasinObs.html">BasinObs</a></td>
-<td>Data sample: time series of observations of a fictional catchment (L0123001, L0123002 or L0123003)</td></tr>
-<tr><td width="25%"><a href="Calibration.html">Calibration</a></td>
-<td>Calibration algorithm which minimises an error criterion on the model outputs using the provided functions</td></tr>
-<tr><td width="25%"><a href="Calibration_HBAN.html">Calibration_HBAN</a></td>
-<td>Calibration algorithm which minimises the error criterion using the Irstea-HBAN procedure</td></tr>
-<tr><td width="25%"><a href="Calibration_optim.html">Calibration_optim</a></td>
-<td>Calibration algorithm which minimises the error criterion using the stats::optim function</td></tr>
-<tr><td width="25%"><a href="CreateCalibOptions.html">CreateCalibOptions</a></td>
-<td>Creation of the CalibOptions object required to the Calibration functions</td></tr>
-<tr><td width="25%"><a href="CreateInputsCrit.html">CreateInputsCrit</a></td>
-<td>Creation of the InputsCrit object required to the ErrorCrit functions</td></tr>
-<tr><td width="25%"><a href="CreateInputsModel.html">CreateInputsModel</a></td>
-<td>Creation of the InputsModel object required to the RunModel functions</td></tr>
-<tr><td width="25%"><a href="CreateRunOptions.html">CreateRunOptions</a></td>
-<td>Creation of the RunOptions object required to the RunModel functions</td></tr>
-<tr><td width="25%"><a href="DataAltiExtrapolation_HBAN.html">DataAltiExtrapolation_HBAN</a></td>
-<td>Altitudinal extrapolation of precipitation and temperature series</td></tr>
-<tr><td width="25%"><a href="ErrorCrit.html">ErrorCrit</a></td>
-<td>Error criterion using the provided function</td></tr>
-<tr><td width="25%"><a href="ErrorCrit_KGE.html">ErrorCrit_KGE</a></td>
-<td>Error criterion based on the KGE formula</td></tr>
-<tr><td width="25%"><a href="ErrorCrit_KGE2.html">ErrorCrit_KGE2</a></td>
-<td>Error criterion based on the KGE' formula</td></tr>
-<tr><td width="25%"><a href="ErrorCrit_NSE.html">ErrorCrit_NSE</a></td>
-<td>Error criterion based on the NSE formula</td></tr>
-<tr><td width="25%"><a href="ErrorCrit_RMSE.html">ErrorCrit_RMSE</a></td>
-<td>Error criterion based on the RMSE</td></tr>
-<tr><td width="25%"><a href="PEdaily_Oudin.html">PEdaily_Oudin</a></td>
-<td>Computation of daily series of potential evapotranspiration with Oudin's formula</td></tr>
-<tr><td width="25%"><a href="plot_OutputsModel.html">plot_OutputsModel</a></td>
-<td>Default preview of model outputs</td></tr>
-<tr><td width="25%"><a href="RunModel.html">RunModel</a></td>
-<td>Run with the provided hydrological model function</td></tr>
-<tr><td width="25%"><a href="RunModel_CemaNeige.html">RunModel_CemaNeige</a></td>
-<td>Run with the CemaNeige snow module</td></tr>
-<tr><td width="25%"><a href="RunModel_CemaNeigeGR4J.html">RunModel_CemaNeigeGR4J</a></td>
-<td>Run with the CemaNeigeGR4J hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_CemaNeigeGR5J.html">RunModel_CemaNeigeGR5J</a></td>
-<td>Run with the CemaNeigeGR5J hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_CemaNeigeGR6J.html">RunModel_CemaNeigeGR6J</a></td>
-<td>Run with the CemaNeigeGR6J hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR1A.html">RunModel_GR1A</a></td>
-<td>Run with the GR1A hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR2M.html">RunModel_GR2M</a></td>
-<td>Run with the GR2M hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR4H.html">RunModel_GR4H</a></td>
-<td>Run with the GR4H hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR4J.html">RunModel_GR4J</a></td>
-<td>Run with the GR4J hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR5J.html">RunModel_GR5J</a></td>
-<td>Run with the GR5J hydrological model</td></tr>
-<tr><td width="25%"><a href="RunModel_GR6J.html">RunModel_GR6J</a></td>
-<td>Run with the GR6J hydrological model</td></tr>
-<tr><td width="25%"><a href="SeriesAggreg.html">SeriesAggreg</a></td>
-<td>Conversion of time series to another time-step (aggregation only)</td></tr>
-<tr><td width="25%"><a href="TransfoParam.html">TransfoParam</a></td>
-<td>Transformation of the parameters using the provided function</td></tr>
-<tr><td width="25%"><a href="TransfoParam_CemaNeige.html">TransfoParam_CemaNeige</a></td>
-<td>Transformation of the parameters from the CemaNeige module</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR1A.html">TransfoParam_GR1A</a></td>
-<td>Transformation of the parameters from the GR1A model</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR2M.html">TransfoParam_GR2M</a></td>
-<td>Transformation of the parameters from the GR2M model</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR4H.html">TransfoParam_GR4H</a></td>
-<td>Transformation of the parameters from the GR4H model</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR4J.html">TransfoParam_GR4J</a></td>
-<td>Transformation of the parameters from the GR4J model</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR5J.html">TransfoParam_GR5J</a></td>
-<td>Transformation of the parameters from the GR5J model</td></tr>
-<tr><td width="25%"><a href="TransfoParam_GR6J.html">TransfoParam_GR6J</a></td>
-<td>Transformation of the parameters from the GR6J model</td></tr>
-</table>
-</body></html>
diff --git a/html/R.css b/html/R.css
deleted file mode 100644
index 6f058f3d..00000000
--- a/html/R.css
+++ /dev/null
@@ -1,57 +0,0 @@
-BODY{		background: white;
-		color: black }
-
-A:link{         background: white;
-                color: blue }
-A:visited{	background: white;
-		color: rgb(50%, 0%, 50%) }
-
-H1{		background: white;
-		color: rgb(55%, 55%, 55%);
-		font-family: monospace;
-		font-size: x-large;
-		text-align: center }
-
-H2{		background: white;
-		color: rgb(40%, 40%, 40%);
-		font-family: monospace;
-		font-size: large;
-		text-align: center }
-
-H3{		background: white;
-		color: rgb(40%, 40%, 40%);
-		font-family: monospace;
-		font-size: large }
-
-H4{		background: white;
-		color: rgb(40%, 40%, 40%);
-		font-family: monospace;
-		font-style: italic;
-		font-size: large }
-
-H5{		background: white;
-		color: rgb(40%, 40%, 40%);
-		font-family: monospace }
-
-H6{		background: white;
-		color: rgb(40%, 40%, 40%);
-		font-family: monospace;
-		font-style: italic }
-		
-IMG.toplogo{	vertical-align: middle }
-
-IMG.arrow{	width: 30px;
-		height: 30px;
-		border: 0 }
-
-span.acronym{font-size: small}
-span.env{font-family: monospace}
-span.file{font-family: monospace}
-span.option{font-family: monospace}
-span.pkg{font-weight: bold}
-span.samp{font-family: monospace}
-
-div.vignettes a:hover {
-  background: rgb(85%, 85%, 85%);
-}
-
diff --git a/libs/i386/airGR.dll b/libs/i386/airGR.dll
deleted file mode 100644
index b8c3468b7e5e304fcf53d4c549f8f3b885f7fa6d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29696
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

diff --git a/libs/x64/airGR.dll b/libs/x64/airGR.dll
deleted file mode 100644
index e85955fa7881f30e194ba7e8da54e3a3833d068c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 34816
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

diff --git a/man/BasinInfo.Rd b/man/BasinInfo.Rd
new file mode 100644
index 00000000..b951d612
--- /dev/null
+++ b/man/BasinInfo.Rd
@@ -0,0 +1,22 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/BasinData.R
+\docType{data}
+\encoding{UTF-8}
+\name{BasinInfo}
+\alias{BasinInfo}
+\title{Data sample: characteristics of a fictional catchment (L0123001, L0123002 or L0123003)}
+\format{List named 'BasinInfo' containing
+\itemize{
+\item two strings: catchment's code and station's name
+\item one float: catchment's area in km2
+\item one numeric vector: catchment's hypsometric curve (min, quantiles 01 to 99 and max) in metres
+}}
+\description{
+R-object containing the code, station's name, area and hypsometric curve of the catchment.
+}
+\examples{
+require(airGR)
+   data(L0123001)
+   str(BasinInfo)
+}
+
diff --git a/man/BasinObs.Rd b/man/BasinObs.Rd
new file mode 100644
index 00000000..d06a1ebf
--- /dev/null
+++ b/man/BasinObs.Rd
@@ -0,0 +1,23 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/BasinData.R
+\docType{data}
+\encoding{UTF-8}
+\name{BasinObs}
+\alias{BasinObs}
+\title{Data sample: time series of observations of a fictional catchment (L0123001, L0123002 or L0123003)}
+\format{Data frame named 'BasinObs' containing
+\itemize{
+\item one POSIXlt vector: time series dates in the POSIXlt format
+\item five numeric vectors: time series of catchment average precipitation [mm], catchment average air temperature [degC], catchment average potential evapotranspiration [mm], outlet discharge [l/s], outlet discharge [mm]
+}}
+\description{
+R-object containing the times series of precipitation, temperature, potential evapotranspiration and discharges. \cr
+Times series for L0123001 or L0123002 are at the daily time-step for use with daily models such as GR4J, GR5J, GR6J, CemaNeigeGR4J, CemaNeigeGR5J and CemaNeigeGR6J.
+Times series for L0123003 are at the hourly time-step for use with hourly models such as GR4H.
+}
+\examples{
+require(airGR)
+   data(L0123001)
+   str(BasinObs)
+}
+
diff --git a/man/Calibration.Rd b/man/Calibration.Rd
new file mode 100644
index 00000000..f97a41fd
--- /dev/null
+++ b/man/Calibration.Rd
@@ -0,0 +1,96 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/Calibration.R
+\encoding{UTF-8}
+\name{Calibration}
+\alias{Calibration}
+\title{Calibration algorithm which minimises an error criterion on the model outputs using the provided functions}
+\usage{
+Calibration(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD,
+  FUN_CRIT, FUN_CALIB = Calibration_HBAN, FUN_TRANSFO = NULL,
+  quiet = FALSE)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{CalibOptions}{[object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details}
+
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}
+
+\item{FUN_CALIB}{(optional) [function] calibration algorithm function (e.g. Calibration_HBAN, Calibration_optim), default=Calibration_HBAN}
+
+\item{FUN_TRANSFO}{(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] see \code{\link{Calibration_HBAN}} or \code{\link{Calibration_optim}}
+}
+\description{
+Calibration algorithm which minimises the error criterion using the provided functions. \cr
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_HBAN)
+
+## calibration
+OutputsCalib <- Calibration(InputsModel=InputsModel,RunOptions=RunOptions,InputsCrit=InputsCrit,
+                            CalibOptions=CalibOptions,FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE,
+                            FUN_CALIB=Calibration_HBAN)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{Calibration_HBAN}}, \code{\link{Calibration_optim}},
+         \code{\link{RunModel}}, \code{\link{ErrorCrit}}, \code{\link{TransfoParam}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}},
+         \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+}
+
diff --git a/man/Calibration_HBAN.Rd b/man/Calibration_HBAN.Rd
new file mode 100644
index 00000000..26f14de4
--- /dev/null
+++ b/man/Calibration_HBAN.Rd
@@ -0,0 +1,128 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/Calibration_HBAN.R
+\encoding{UTF-8}
+\name{Calibration_HBAN}
+\alias{Calibration_HBAN}
+\title{Calibration algorithm which minimises the error criterion using the Irstea-HBAN procedure}
+\usage{
+Calibration_HBAN(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD,
+  FUN_CRIT, FUN_TRANSFO = NULL, quiet = FALSE)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{CalibOptions}{[object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details}
+
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}
+
+\item{FUN_TRANSFO}{(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$ParamFinalR  }  \tab   [numeric] parameter set obtained at the end of the calibration \cr
+         \emph{$CritFinal    }  \tab   [numeric] error criterion obtained at the end of the calibration \cr
+         \emph{$NIter        }  \tab   [numeric] number of iterations during the calibration \cr
+         \emph{$NRuns        }  \tab   [numeric] number of model runs done during the calibration \cr
+         \emph{$HistParamR   }  \tab   [numeric] table showing the progression steps in the search for optimal set: parameter values \cr
+         \emph{$HistCrit     }  \tab   [numeric] table showing the progression steps in the search for optimal set: criterion values \cr
+         \emph{$MatBoolCrit  }  \tab   [boolean] table giving the requested and actual time steps when the model is calibrated \cr
+         \emph{$CritName     }  \tab   [character] name of the calibration criterion \cr
+         \emph{$CritBestValue}  \tab   [numeric] theoretical best criterion value \cr
+         }
+}
+\description{
+Calibration algorithm which minimises the error criterion. \cr
+\cr
+The algorithm is based on a local search procedure.
+First, a screening is performed using either a rough predefined grid or a list of parameter sets
+and then a simple steepest descent local search algorithm is performed.
+}
+\details{
+A screening is first performed either from a rough predefined grid (considering various initial
+values for each paramete) or from a list of initial parameter sets. \cr
+The best set identified in this screening is then used as a starting point for the steepest
+descent local search algorithm. \cr
+For this search, the parameters are used in a transformed version, to obtain uniform
+variation ranges (and thus a similar pace), while the true ranges might be quite different. \cr
+At each iteration, we start from a parameter set of NParam values (NParam being the number of
+free parameters of the chosen hydrological model) and we determine the 2*NParam-1 new candidates
+by changing one by one the different parameters (+/- pace). \cr
+All these candidates are tested and the best one kept to be the starting point for the next
+iteration. At the end of each iteration, the pace is either increased or decreased to adapt
+the progression speed. A diagonal progress can occasionally be done.                        \cr
+The calibration algorithm stops when the pace becomes too small.                            \cr
+
+To optimise the exploration of the parameter space, transformation functions are used to convert
+the model parameters. This is done using the TransfoParam functions.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_HBAN)
+
+## calibration
+OutputsCalib <- Calibration_HBAN(InputsModel=InputsModel,RunOptions=RunOptions,
+                                 InputsCrit=InputsCrit,CalibOptions=CalibOptions,
+                                 FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (August 2013)
+}
+\references{
+Michel, C. (1991),
+       Hydrologie appliquée aux petits bassins ruraux, Hydrology handout (in French), Cemagref, Antony, France.
+}
+\seealso{
+\code{\link{Calibration}}, \code{\link{Calibration_optim}},
+         \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}},
+         \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+}
+
diff --git a/man/Calibration_optim.Rd b/man/Calibration_optim.Rd
new file mode 100644
index 00000000..aed6de48
--- /dev/null
+++ b/man/Calibration_optim.Rd
@@ -0,0 +1,104 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/Calibration_optim.R
+\encoding{UTF-8}
+\name{Calibration_optim}
+\alias{Calibration_optim}
+\title{Calibration algorithm which minimises the error criterion using the stats::optim function}
+\usage{
+Calibration_optim(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD,
+  FUN_CRIT, FUN_TRANSFO = NULL, quiet = FALSE)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{CalibOptions}{[object of class \emph{CalibOptions}] see \code{\link{CreateCalibOptions}} for details}
+
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}
+
+\item{FUN_TRANSFO}{(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$ParamFinalR  }  \tab   [numeric] parameter set obtained at the end of the calibration \cr
+         \emph{$CritFinal    }  \tab   [numeric] error criterion obtained at the end of the calibration \cr
+         \emph{$Nruns        }  \tab   [numeric] number of model runs done during the calibration \cr
+         \emph{$CritName     }  \tab   [character] name of the calibration criterion \cr
+         \emph{$CritBestValue}  \tab   [numeric] theoretical best criterion value \cr
+         }
+}
+\description{
+Calibration algorithm which minimises the error criterion. \cr
+\cr
+The algorithm is based on the "optim" function from the "stats" R-package
+(using method="L-BFGS-B", i.e. a local optimization quasi-Newton method).
+}
+\details{
+To optimise the exploration of the parameter space, transformation functions are used to convert
+the model parameters. This is done using the TransfoParam functions.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_optim)
+
+## calibration
+OutputsCalib <- Calibration_optim(InputsModel=InputsModel,RunOptions=RunOptions,
+                                  InputsCrit=InputsCrit,CalibOptions=CalibOptions,
+                                  FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+}
+\author{
+Laurent Coron (August 2013)
+}
+\seealso{
+\code{\link{Calibration}}, \code{\link{Calibration_HBAN}},
+         \code{\link{RunModel_GR4J}}, \code{\link{TransfoParam_GR4J}}, \code{\link{ErrorCrit_RMSE}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}},
+         \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}.
+}
+
diff --git a/man/CreateCalibOptions.Rd b/man/CreateCalibOptions.Rd
new file mode 100644
index 00000000..6a0676b5
--- /dev/null
+++ b/man/CreateCalibOptions.Rd
@@ -0,0 +1,128 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/CreateCalibOptions.R
+\encoding{UTF-8}
+\name{CreateCalibOptions}
+\alias{CreateCalibOptions}
+\title{Creation of the CalibOptions object required to the Calibration functions}
+\usage{
+CreateCalibOptions(FUN_MOD, FUN_CALIB = Calibration_HBAN,
+  FUN_TRANSFO = NULL, OptimParam = NULL, FixedParam = NULL,
+  SearchRanges = NULL, StartParam = NULL, StartParamList = NULL,
+  StartParamDistrib = NULL)
+}
+\arguments{
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{FUN_CALIB}{(optional) [function] calibration algorithm function (e.g. Calibration_HBAN, Calibration_optim), default=Calibration_HBAN}
+
+\item{FUN_TRANSFO}{(optional) [function] model parameters transformation function, if the FUN_MOD used is native in the package FUN_TRANSFO is automatically defined}
+
+\item{OptimParam}{(optional) [boolean] vector of booleans indicating which parameters must be optimised (NParam columns, 1 line)}
+
+\item{FixedParam}{(optional) [numeric] vector giving the values to allocate to non-optimised parameter values (NParam columns, 1 line)}
+
+\item{SearchRanges}{(optional) [numeric] matrix giving the ranges of real parameters (NParam columns, 2 lines)
+\tabular{llllll}{
+              \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+     [1,]     \tab    0   \tab   -1   \tab    0   \tab  ...    \tab  0.0 \cr
+     [2,]     \tab 3000   \tab   +1   \tab  100   \tab  ...    \tab  3.0 \cr
+}}
+
+\item{StartParam}{(optional) [numeric] vector of parameter values used to start global search calibration procedure (e.g. Calibration_optim)
+\tabular{llllll}{
+              \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+              \tab 1000   \tab -0.5   \tab   22   \tab  ...    \tab  1.1 \cr
+}}
+
+\item{StartParamList}{(optional) [numeric] matrix of parameter sets used for grid-screening calibration procedure (values in columns, sets in line)
+\tabular{llllll}{
+              \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+     [set1]   \tab  800   \tab -0.7   \tab   25   \tab  ...    \tab  1.0 \cr
+     [set2]   \tab 1000   \tab -0.5   \tab   22   \tab  ...    \tab  1.1 \cr
+     [...]    \tab  ...   \tab  ...   \tab  ...   \tab  ...    \tab  ... \cr
+     [set n]  \tab  200   \tab -0.3   \tab   17   \tab  ...    \tab  1.0 \cr
+}}
+
+\item{StartParamDistrib}{(optional) [numeric] matrix of parameter values used for grid-screening calibration procedure (values in columns, percentiles in line) \cr
+\tabular{llllll}{
+              \tab [X1]   \tab [X2]   \tab [X3]   \tab [...]   \tab [Xi] \cr
+     [value1] \tab  800   \tab -0.7   \tab   25   \tab  ...    \tab  1.0 \cr
+     [value2] \tab 1000   \tab   NA   \tab   50   \tab  ...    \tab  1.2 \cr
+     [value3] \tab 1200   \tab   NA   \tab   NA   \tab  ...    \tab  1.6 \cr
+}}
+}
+\value{
+[list] object of class \emph{CalibOptions} containing the data required to evaluate the model outputs; it can include the following:
+         \tabular{ll}{
+         \emph{$OptimParam       }  \tab   [boolean] vector of booleans indicating which parameters must be optimised \cr
+         \emph{$FixedParam       }  \tab   [numeric] vector giving the values to allocate to non-optimised parameter values \cr
+         \emph{$SearchRanges     }  \tab   [numeric] matrix giving the ranges of real parameters \cr
+         \emph{$StartParam       }  \tab   [numeric] vector of parameter values used to start global search calibration procedure \cr
+         \emph{$StartParamList   }  \tab   [numeric] matrix of parameter sets used for grid-screening calibration procedure \cr
+         \emph{$StartParamDistrib}  \tab   [numeric] matrix of parameter values used for grid-screening calibration procedure \cr
+         }
+}
+\description{
+Creation of the CalibOptions object required to the Calibration functions.
+}
+\details{
+Users wanting to use FUN_MOD, FUN_CALIB or FUN_TRANSFO functions that are not included in
+the package must create their own CalibOptions object accordingly.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_HBAN)
+
+## calibration
+OutputsCalib <- Calibration(InputsModel=InputsModel,RunOptions=RunOptions,InputsCrit=InputsCrit,
+                            CalibOptions=CalibOptions,FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE,
+                            FUN_CALIB=Calibration_HBAN)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{Calibration}}, \code{\link{RunModel}}
+}
+
diff --git a/man/CreateInputsCrit.Rd b/man/CreateInputsCrit.Rd
new file mode 100644
index 00000000..fd7176cc
--- /dev/null
+++ b/man/CreateInputsCrit.Rd
@@ -0,0 +1,114 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/CreateInputsCrit.R
+\encoding{UTF-8}
+\name{CreateInputsCrit}
+\alias{CreateInputsCrit}
+\title{Creation of the InputsCrit object required to the ErrorCrit functions}
+\usage{
+CreateInputsCrit(FUN_CRIT, InputsModel, RunOptions, Qobs, BoolCrit = NULL,
+  transfo = "", Ind_zeroes = NULL, epsilon = NULL)
+}
+\arguments{
+\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}
+
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Qobs}{[numeric] series of observed discharges [mm]}
+
+\item{BoolCrit}{(optional) [boolean] boolean giving the time steps to consider in the computation (all time steps are consider by default)}
+
+\item{transfo}{(optional) [character] name of the transformation (e.g. "", "sqrt", "log", "inv", "sort")}
+
+\item{Ind_zeroes}{(optional) [numeric] indices of the time-steps where zeroes are observed}
+
+\item{epsilon}{(optional) [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty}
+}
+\value{
+[list] object of class \emph{InputsCrit} containing the data required to evaluate the model outputs; it can include the following:
+         \tabular{ll}{
+         \emph{$BoolCrit  }  \tab   [boolean] boolean giving the time steps to consider in the computation \cr
+         \emph{$Qobs      }  \tab   [numeric] series of observed discharges [mm] \cr
+         \emph{$transfo   }  \tab   [character] name of the transformation (e.g. "", "sqrt", "log", "inv", "sort") \cr
+         \emph{$Ind_zeroes}  \tab   [numeric] indices of the time-steps where zeroes are observed \cr
+         \emph{$epsilon   }  \tab   [numeric] epsilon to add to all Qobs and Qsim if \emph{$Ind_zeroes} is not empty \cr
+         }
+}
+\description{
+Creation of the InputsCrit object required to the ErrorCrit functions.
+}
+\details{
+Users wanting to use FUN_CRIT functions that are not included in
+the package must create their own InputsCrit object accordingly.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency on log-transformed flows
+transfo <- "log"
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],transfo=transfo)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency above a threshold (q75\%)
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]<quantile(BasinObs$Qmm[Ind_Run],0.75,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency below a threshold (q10\%) on log-trqansformed flows
+transfo  <- "log"
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]>quantile(BasinObs$Qmm[Ind_Run],0.10,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,RunOptions=RunOptions,
+                               Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit,transfo=transfo)
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\\n",sep=""))
+
+
+
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{RunModel}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateCalibOptions}}
+}
+
diff --git a/man/CreateInputsModel.Rd b/man/CreateInputsModel.Rd
new file mode 100644
index 00000000..c741da3f
--- /dev/null
+++ b/man/CreateInputsModel.Rd
@@ -0,0 +1,90 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/CreateInputsModel.R
+\encoding{UTF-8}
+\name{CreateInputsModel}
+\alias{CreateInputsModel}
+\title{Creation of the InputsModel object required to the RunModel functions}
+\usage{
+CreateInputsModel(FUN_MOD, DatesR, Precip, PotEvap = NULL, TempMean = NULL,
+  TempMin = NULL, TempMax = NULL, ZInputs = NULL, HypsoData = NULL,
+  NLayers = 5, quiet = FALSE)
+}
+\arguments{
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{DatesR}{[POSIXlt] vector of dates required to create the GR model and CemaNeige module inputs}
+
+\item{Precip}{[numeric] time series of total precipitation (catchment average) [mm], required to create the GR model and CemaNeige module inputs}
+
+\item{PotEvap}{[numeric] time series of potential evapotranspiration (catchment average) [mm], required to create the GR model inputs}
+
+\item{TempMean}{(optional) [numeric] time series of mean air temperature [degC], required to create the CemaNeige module inputs}
+
+\item{TempMin}{(optional) [numeric] time series of min air temperature [degC], possibly used to create the CemaNeige module inputs}
+
+\item{TempMax}{(optional) [numeric] time series of max air temperature [degC], possibly used to create the CemaNeige module inputs}
+
+\item{ZInputs}{(optional) [numeric] real giving the mean elevation of the Precip and Temp series (before extrapolation) [m]}
+
+\item{HypsoData}{(optional) [numeric] vector of 101 reals: min, q01 to q99 and max of catchment elevation distribution [m], required to create the GR model inputs, if not defined a single elevation is used for CemaNeige}
+
+\item{NLayers}{(optional) [numeric] integer giving the number of elevation layers requested [-], required to create the GR model inputs, default=5}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] object of class \emph{InputsModel} containing the data required to evaluate the model outputs; it can include the following:
+         \tabular{ll}{
+         \emph{$DatesR              }  \tab   [POSIXlt] vector of dates \cr
+         \emph{$Precip              }  \tab   [numeric] time series of total precipitation (catchment average) [mm] \cr
+         \emph{$PotEvap             }  \tab   [numeric] time series of potential evapotranspiration (catchment average) [mm], \cr\tab defined if FUN_MOD includes GR4H, GR4J, GR5J, GR6J, GR2M or GR1A \cr \cr
+         \emph{$LayerPrecip         }  \tab   [list] list of time series of precipitation (layer average) [mm], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+         \emph{$LayerTempMean       }  \tab   [list] list of time series of mean air temperature (layer average) [degC], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+         \emph{$LayerFracSolidPrecip}  \tab   [list] list of time series of solid precip. fract. (layer average) [-], \cr\tab defined if FUN_MOD includes CemaNeige \cr \cr
+         }
+}
+\description{
+Creation of the InputsModel object required to the RunModel functions.
+}
+\details{
+Users wanting to use FUN_MOD functions that are not included in
+the package must create their own InputsModel object accordingly.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{RunModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}, \code{\link{DataAltiExtrapolation_HBAN}}
+}
+
diff --git a/man/CreateRunOptions.Rd b/man/CreateRunOptions.Rd
new file mode 100644
index 00000000..3ab14bc5
--- /dev/null
+++ b/man/CreateRunOptions.Rd
@@ -0,0 +1,122 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/CreateRunOptions.R
+\encoding{UTF-8}
+\name{CreateRunOptions}
+\alias{CreateRunOptions}
+\title{Creation of the RunOptions object required to the RunModel functions}
+\usage{
+CreateRunOptions(FUN_MOD, InputsModel, IndPeriod_WarmUp = NULL, IndPeriod_Run,
+  IniStates = NULL, IniResLevels = NULL, Outputs_Cal = NULL,
+  Outputs_Sim = "all", RunSnowModule = TRUE, MeanAnSolidPrecip = NULL,
+  quiet = FALSE)
+}
+\arguments{
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{IndPeriod_WarmUp}{(optional) [numeric] index of period to be used for the model warm-up [-]}
+
+\item{IndPeriod_Run}{[numeric] index of period to be used for the model run [-]}
+
+\item{IniStates}{(optional) [numeric] vector of initial model states [mm]}
+
+\item{IniResLevels}{(optional) [numeric] vector of initial filling rates for production and routing stores (2 values between 0 and 1) [-]}
+
+\item{Outputs_Cal}{(optional) [character] vector giving the outputs needed for the calibration \cr (e.g. c("Qsim")), the least outputs the fastest the calibration}
+
+\item{Outputs_Sim}{(optional) [character] vector giving the requested outputs \cr (e.g. c("DatesR","Qsim","SnowPack")), default="all"}
+
+\item{RunSnowModule}{(optional) [boolean] option indicating whether CemaNeige should be activated, default=TRUE}
+
+\item{MeanAnSolidPrecip}{(optional) [numeric] vector giving the annual mean of average solid precipitation for each layer (computed from InputsModel if not defined) [mm/y]}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] object of class \emph{RunOptions} containing the data required to evaluate the model outputs; it can include the following:
+         \tabular{ll}{
+         \emph{IndPeriod_WarmUp }  \tab  [numeric] index of period to be used for the model warm-up [-] \cr
+         \emph{IndPeriod_Run    }  \tab  [numeric] index of period to be used for the model run [-] \cr
+         \emph{IniStates        }  \tab  [numeric] vector of initial model states [mm] \cr
+         \emph{IniResLevels     }  \tab  [numeric] vector of initial filling rates for production and routing stores [-] \cr
+         \emph{Outputs_Cal      }  \tab  [character] character vector giving only the outputs needed for the calibration \cr
+         \emph{Outputs_Sim      }  \tab  [character] character vector giving the requested outputs \cr
+         \emph{RunSnowModule    }  \tab  [boolean] option indicating whether CemaNeige should be activated \cr
+         \emph{MeanAnSolidPrecip}  \tab  [numeric] vector giving the annual mean of average solid precipitation for each layer [mm/y] \cr
+         }
+}
+\description{
+Creation of the RunOptions object required to the RunModel functions.
+}
+\details{
+Users wanting to use FUN_MOD functions that are not included in
+the package must create their own RunOptions object accordingly.
+
+##### Initialisation options #####
+
+The model initialisation options can either be set to a default configuration or be defined by the user.
+
+This is done via three vectors: \cr \emph{IndPeriod_WarmUp}, \emph{IniStates}, \emph{IniResLevels}. \cr
+A default configuration is used for initialisation if these vectors are not defined.
+
+(1) Default initialisation options:
+
+\itemize{
+\item \emph{IndPeriod_WarmUp} default setting ensures a one-year warm-up using the time-steps preceding the \emph{IndPeriod_Run}.
+The actual length of this warm-up might be shorter depending on data availability (no missing value being allowed on model input series).
+
+\item \emph{IniStates} and \emph{IniResLevels} are automatically set to initialise all the model states at 0, except for the production and routing stores which are initialised at 50\% of their capacity. This initialisation is made at the very beginning of the model call (i.e. at the beginning of \emph{IndPeriod_WarmUp} or at the beginning of IndPeriod_Run if the warm-up period is disabled).
+}
+
+(2) Customisation of initialisation options:
+
+\itemize{
+\item \emph{IndPeriod_WarmUp} can be used to specify the indices of the warm-up period (within the time-series prepared in InputsModel). \cr
+- remark 1:	for most common cases, indices corresponding to one or several years preceding \emph{IndPeriod_Run} are used (e.g. \emph{IndPeriod_WarmUp <- 1000:1365} and \emph{IndPeriod_Run <- 1366:5000)}. \cr
+However, it is also possible to perform a long-term initialisation if other indices than the warm-up ones are set in \emph{IndPeriod_WarmUp} (e.g. \emph{IndPeriod_WarmUp <- c( 1:5000 , 1:5000 , 1:5000 ,1000:1365 )}). \cr
+- remark 2:	it is also possible to completely disable the warm-up period when using \emph{IndPeriod_WarmUp <- 0}.
+
+\item \emph{IniStates} and \emph{IniResLevels} can be used to specify the initial model states. \cr
+- remark 1:	if \emph{IniStates} is used, all model states must be provided (e.g. 60 floats [mm] are required for GR4J, GR5J and GR6J; 60+2*NLayers floats [mm] are required for CemaNeigeGR4J, CemaNeigeGR5J and CemaNeigeGR6J; see fortran source code for details). \cr
+- remark 2:	in addition to \emph{IniStates}, \emph{IniResLevels} allows to set the filling rate of the production and routing stores for the GR models. For instance for GR4J, GR5J and GR6J: \emph{IniResLevels <- c(0.3,0.5)} should be used to obtain initial fillings of 30\% and 50\% for the production and routing stores, respectively.  \emph{IniResLevels} is optional and can only be used if \emph{IniStates} is also defined (the state values corresponding to these two stores in \emph{IniStates} are not used in such case). \cr \cr
+}
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{RunModel}}, \code{\link{CreateInputsModel}}, \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}
+}
+
diff --git a/man/DataAltiExtrapolation_HBAN.Rd b/man/DataAltiExtrapolation_HBAN.Rd
new file mode 100644
index 00000000..e2ad3cc3
--- /dev/null
+++ b/man/DataAltiExtrapolation_HBAN.Rd
@@ -0,0 +1,65 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/DataAltiExtrapolation_HBAN.R
+\encoding{UTF-8}
+\name{DataAltiExtrapolation_HBAN}
+\alias{DataAltiExtrapolation_HBAN}
+\title{Altitudinal extrapolation of precipitation and temperature series}
+\usage{
+DataAltiExtrapolation_HBAN(DatesR, Precip, TempMean, TempMin = NULL,
+  TempMax = NULL, ZInputs, HypsoData, NLayers, quiet = FALSE)
+}
+\arguments{
+\item{DatesR}{[POSIXlt] vector of dates}
+
+\item{Precip}{[numeric] time series of daily total precipitation (catchment average) [mm]}
+
+\item{TempMean}{[numeric] time series of daily mean air temperature [degC]}
+
+\item{TempMin}{(optional) [numeric] time series of daily min air temperature [degC]}
+
+\item{TempMax}{(optional) [numeric] time series of daily max air temperature [degC]}
+
+\item{ZInputs}{[numeric] real giving the mean elevation of the Precip and Temp series (before extrapolation) [m]}
+
+\item{HypsoData}{[numeric] vector of 101 reals: min, q01 to q99 and max of catchment elevation distribution [m]}
+
+\item{NLayers}{[numeric] integer giving the number of elevation layers requested [-]}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+list containing the extrapolated series of precip. and air temp. on each elevation layer
+         \tabular{ll}{
+           \emph{$LayerPrecip         }  \tab  [list] list of time series of daily precipitation (layer average) [mm]           \cr
+           \emph{$LayerTempMean       }  \tab  [list] list of time series of daily mean air temperature (layer average) [degC]  \cr
+           \emph{$LayerTempMin        }  \tab  [list] list of time series of daily min air temperature (layer average) [degC]   \cr
+           \emph{$LayerTempMax        }  \tab  [list] list of time series of daily max air temperature (layer average) [degC]   \cr
+           \emph{$LayerFracSolidPrecip}  \tab  [list] list of time series of daily solid precip. fract. (layer average) [-]     \cr
+           \emph{$ZLayers             }  \tab  [numeric] vector of median elevation for each layer                              \cr
+         }
+}
+\description{
+Function which extrapolates the precipitation and air temperature series for different elevation layers (method from Valery, 2010).
+}
+\details{
+Elevation layers of equal surface are created the 101 elevation quantiles (\emph{HypsoData})
+and the number requested elevation layers (\emph{NLayers}). \cr
+Forcing data (precipitation and air temperature) are extrapolated using gradients from Valery (2010).
+(e.g. gradP=0.0004 [m-1] for France and gradT=0.434 [degreC/100m] for January, 1st). \cr
+This function is used by the \emph{CreateInputsModel} function. \cr
+}
+\author{
+Laurent Coron, Pierre Brigode (June 2014)
+}
+\references{
+Turcotte, R., L.-G. Fortin, V. Fortin, J.-P. Fortin and J.-P. Villeneuve (2007),
+      Operational analysis of the spatial distribution and the temporal evolution of the snowpack water equivalent
+      in southern Quebec, Canada, Nordic Hydrology, 38(3), 211, doi:10.2166/nh.2007.009. \cr
+  Valéry, A. (2010), Modélisation précipitations-débit sous influence nivale ? : Elaboration d'un module neige
+      et évaluation sur 380 bassins versants, PhD thesis (in french), AgroParisTech, Paris, France. \cr
+  USACE (1956), Snow Hydrology, pp. 437, U.S. Army Coprs of Engineers (USACE) North Pacific Division, Portland, Oregon, USA.
+}
+\seealso{
+\code{\link{CreateInputsModel}}, \code{\link{RunModel_CemaNeigeGR4J}}
+}
+
diff --git a/man/ErrorCrit.Rd b/man/ErrorCrit.Rd
new file mode 100644
index 00000000..3a09b9d0
--- /dev/null
+++ b/man/ErrorCrit.Rd
@@ -0,0 +1,94 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/ErrorCrit.R
+\encoding{UTF-8}
+\name{ErrorCrit}
+\alias{ErrorCrit}
+\title{Error criterion using the provided function}
+\usage{
+ErrorCrit(InputsCrit, OutputsModel, FUN_CRIT, quiet = FALSE)
+}
+\arguments{
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{OutputsModel}{[object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details}
+
+\item{FUN_CRIT}{[function] error criterion function (e.g. ErrorCrit_RMSE, ErrorCrit_NSE)}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs, see \code{\link{ErrorCrit_RMSE}} or \code{\link{ErrorCrit_NSE}} for details
+}
+\description{
+Function which computes an error criterion with the provided function.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency on log-transformed flows
+transfo <- "log"
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],transfo=transfo)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency above a threshold (q75\%)
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]<quantile(BasinObs$Qmm[Ind_Run],0.75,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency below a threshold (q10\%) on log-trqansformed flows
+transfo  <- "log"
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]>quantile(BasinObs$Qmm[Ind_Run],0.10,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,RunOptions=RunOptions,
+                               Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit,transfo=transfo)
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\\n",sep=""))
+
+
+
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}
+}
+
diff --git a/man/ErrorCrit_KGE.Rd b/man/ErrorCrit_KGE.Rd
new file mode 100644
index 00000000..31574db4
--- /dev/null
+++ b/man/ErrorCrit_KGE.Rd
@@ -0,0 +1,51 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/ErrorCrit_KGE.R
+\encoding{UTF-8}
+\name{ErrorCrit_KGE}
+\alias{ErrorCrit_KGE}
+\title{Error criterion based on the KGE formula}
+\usage{
+ErrorCrit_KGE(InputsCrit, OutputsModel, quiet = FALSE)
+}
+\arguments{
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{OutputsModel}{[object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+         \emph{$CritName       }   \tab   [character] name of the criterion \cr
+         \emph{$SubCritValues  }   \tab   [numeric] values of the sub-criteria \cr
+         \emph{$SubCritNames   }   \tab   [character] names of the sub-criteria \cr
+         \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+         \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+         \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+         }
+}
+\description{
+Function which computes an error criterion based on the KGE formula proposed by Gupta et al. (2009).
+}
+\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
+(e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+}
+\examples{
+## see example of the ErrorCrit function
+}
+\author{
+Laurent Coron (June 2014)
+}
+\references{
+Gupta, H. V., Kling, H., Yilmaz, K. K. and Martinez, G. F. (2009),
+      Decomposition of the mean squared error and NSE performance criteria: Implications
+      for improving hydrological modelling, Journal of Hydrology, 377(1-2), 80-91, doi:10.1016/j.jhydrol.2009.08.003. \cr
+}
+\seealso{
+\code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE2}}
+}
+
diff --git a/man/ErrorCrit_KGE2.Rd b/man/ErrorCrit_KGE2.Rd
new file mode 100644
index 00000000..58369b76
--- /dev/null
+++ b/man/ErrorCrit_KGE2.Rd
@@ -0,0 +1,54 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/ErrorCrit_KGE2.R
+\encoding{UTF-8}
+\name{ErrorCrit_KGE2}
+\alias{ErrorCrit_KGE2}
+\title{Error criterion based on the KGE' formula}
+\usage{
+ErrorCrit_KGE2(InputsCrit, OutputsModel, quiet = FALSE)
+}
+\arguments{
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{OutputsModel}{[object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+         \emph{$CritName       }   \tab   [character] name of the criterion \cr
+         \emph{$SubCritValues  }   \tab   [numeric] values of the sub-criteria \cr
+         \emph{$SubCritNames   }   \tab   [character] names of the sub-criteria \cr
+         \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+         \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+         \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+         }
+}
+\description{
+Function which computes an error criterion based on the KGE' formula proposed by Kling et al. (2012).
+}
+\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
+(e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+}
+\examples{
+## see example of the ErrorCrit function
+}
+\author{
+Laurent Coron (June 2014)
+}
+\references{
+Gupta, H. V., Kling, H., Yilmaz, K. K. and Martinez, G. F. (2009),
+      Decomposition of the mean squared error and NSE performance criteria: Implications
+      for improving hydrological modelling, Journal of Hydrology, 377(1-2), 80-91, doi:10.1016/j.jhydrol.2009.08.003. \cr
+  Kling, H., Fuchs, M. and Paulin, M. (2012),
+      Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios,
+      Journal of Hydrology, 424-425, 264-277, doi:10.1016/j.jhydrol.2012.01.011.
+}
+\seealso{
+\code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}
+}
+
diff --git a/man/ErrorCrit_NSE.Rd b/man/ErrorCrit_NSE.Rd
new file mode 100644
index 00000000..29c27b8e
--- /dev/null
+++ b/man/ErrorCrit_NSE.Rd
@@ -0,0 +1,49 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/ErrorCrit_NSE.R
+\encoding{UTF-8}
+\name{ErrorCrit_NSE}
+\alias{ErrorCrit_NSE}
+\title{Error criterion based on the NSE formula}
+\usage{
+ErrorCrit_NSE(InputsCrit, OutputsModel, quiet = FALSE)
+}
+\arguments{
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{OutputsModel}{[object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+         \emph{$CritName       }   \tab   [character] name of the criterion \cr
+         \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+         \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+         \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+         }
+}
+\description{
+Function which computes an error criterion based on the NSE formula proposed by Nash & Sutcliffe (1970).
+}
+\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
+(e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+}
+\examples{
+## see example of the ErrorCrit function
+}
+\author{
+Laurent Coron (June 2014)
+}
+\references{
+Nash, J.E. and Sutcliffe, J.V. (1970),
+      River flow forecasting through conceptual models part 1.
+      A discussion of principles, Journal of Hydrology, 10(3), 282-290, doi:10.1016/0022-1694(70)90255-6. \cr
+}
+\seealso{
+\code{\link{ErrorCrit_RMSE}}, \code{\link{ErrorCrit_KGE}}, \code{\link{ErrorCrit_KGE2}}
+}
+
diff --git a/man/ErrorCrit_RMSE.Rd b/man/ErrorCrit_RMSE.Rd
new file mode 100644
index 00000000..27164860
--- /dev/null
+++ b/man/ErrorCrit_RMSE.Rd
@@ -0,0 +1,44 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/ErrorCrit_RMSE.R
+\encoding{UTF-8}
+\name{ErrorCrit_RMSE}
+\alias{ErrorCrit_RMSE}
+\title{Error criterion based on the RMSE}
+\usage{
+ErrorCrit_RMSE(InputsCrit, OutputsModel, quiet = FALSE)
+}
+\arguments{
+\item{InputsCrit}{[object of class \emph{InputsCrit}] see \code{\link{CreateInputsCrit}} for details}
+
+\item{OutputsModel}{[object of class \emph{OutputsModel}] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$CritValue      }   \tab   [numeric] value of the criterion \cr
+         \emph{$CritName       }   \tab   [character] name of the criterion \cr
+         \emph{$CritBestValue  }   \tab   [numeric] theoretical best criterion value \cr
+         \emph{$Multiplier     }   \tab   [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1) \cr
+         \emph{$Ind_notcomputed}   \tab   [numeric] indices of the time-steps where InputsCrit$BoolCrit=FALSE or no data is available \cr
+         }
+}
+\description{
+Function which computes an error criterion based on the root mean square error (RMSE).
+}
+\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
+(e.g. Multiplier=+1 for RMSE, Multiplier=-1 for NSE).
+}
+\examples{
+## see example of the ErrorCrit function
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{ErrorCrit_NSE}}, \code{\link{ErrorCrit_KGE}}, \code{\link{ErrorCrit_KGE2}}
+}
+
diff --git a/man/PEdaily_Oudin.Rd b/man/PEdaily_Oudin.Rd
new file mode 100644
index 00000000..ffdc7635
--- /dev/null
+++ b/man/PEdaily_Oudin.Rd
@@ -0,0 +1,37 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/PEdaily_Oudin.R
+\encoding{UTF-8}
+\name{PEdaily_Oudin}
+\alias{PEdaily_Oudin}
+\title{Computation of daily series of potential evapotranspiration with Oudin's formula}
+\usage{
+PEdaily_Oudin(JD, Temp, LatRad)
+}
+\arguments{
+\item{JD}{[numeric] time series of julian day [-]}
+
+\item{Temp}{[numeric] time series of daily mean air temperature [degC]}
+
+\item{LatRad}{[numeric] latitude of measurement for the temperature series [rad]}
+}
+\value{
+[numeric] time series of daily potential evapotranspiration [mm/d]
+}
+\description{
+Function which computes daily PE using the formula from Oudin et al. (2005).
+}
+\examples{
+require(airGR)
+   data(L0123001)
+   PotEvap <- PEdaily_Oudin(JD=as.POSIXlt(BasinObs$DatesR)$yday,Temp=BasinObs$T,LatRad=0.8)
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Oudin, L., F. Hervieu, C. Michel, C. Perrin, V. Andréassian, F. Anctil and C. Loumagne (2005),
+      Which potential evapotranspiration input for a lumped rainfall-runoff model?: Part 2-Towards a
+      simple and efficient potential evapotranspiration model for rainfall-runoff modelling, Journal of Hydrology,
+      303(1-4), 290-306, doi:10.1016/j.jhydrol.2004.08.026.
+}
+
diff --git a/man/RunModel.Rd b/man/RunModel.Rd
new file mode 100644
index 00000000..c814a9e4
--- /dev/null
+++ b/man/RunModel.Rd
@@ -0,0 +1,62 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel.R
+\encoding{UTF-8}
+\name{RunModel}
+\alias{RunModel}
+\title{Run with the provided hydrological model function}
+\usage{
+RunModel(InputsModel, RunOptions, Param, FUN_MOD)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of model parameters}
+
+\item{FUN_MOD}{[function] hydrological model function (e.g. RunModel_GR4J, RunModel_CemaNeigeGR4J)}
+}
+\value{
+[list] see \code{\link{RunModel_GR4J}} or \code{\link{RunModel_CemaNeigeGR4J}} for details
+}
+\description{
+Function which performs a single model run with the provided function.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{RunModel_GR4J}}, \code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_CemaNeige.Rd b/man/RunModel_CemaNeige.Rd
new file mode 100644
index 00000000..ec08a968
--- /dev/null
+++ b/man/RunModel_CemaNeige.Rd
@@ -0,0 +1,86 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_CemaNeige.R
+\encoding{UTF-8}
+\name{RunModel_CemaNeige}
+\alias{RunModel_CemaNeige}
+\title{Run with the CemaNeige snow module}
+\usage{
+RunModel_CemaNeige(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 2 parameters
+\tabular{ll}{
+CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }                                  \tab [POSIXlt] series of dates                                    \cr
+         \emph{$CemaNeigeLayers}                           \tab [list] list of CemaNeige outputs (1 list per layer)          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                    \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                     \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                           \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]           \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                             \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm]                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm]                    \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm]   \cr
+         \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: CemaNeige states [mm & degC] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the CemaNeige daily snow module.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeige,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeige,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(0.962,2.249)
+OutputsModel <- RunModel_CemaNeige(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel)
+
+}
+\author{
+Laurent Coron (January 2014)
+}
+\references{
+Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine?
+      Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine?
+      Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+}
+\seealso{
+\code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_CemaNeigeGR4J.Rd b/man/RunModel_CemaNeigeGR4J.Rd
new file mode 100644
index 00000000..33a4af32
--- /dev/null
+++ b/man/RunModel_CemaNeigeGR4J.Rd
@@ -0,0 +1,114 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_CemaNeigeGR4J.R
+\encoding{UTF-8}
+\name{RunModel_CemaNeigeGR4J}
+\alias{RunModel_CemaNeigeGR4J}
+\title{Run with the CemaNeigeGR4J hydrological model}
+\usage{
+RunModel_CemaNeigeGR4J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 6 parameters
+\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 X4      \tab unit hydrograph time constant [d]                             \cr
+CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+         \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the CemaNeige-GR4J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR4J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(408.774,2.646,131.264,1.174,0.962,2.249)
+OutputsModel <- RunModel_CemaNeigeGR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Perrin, C., C. Michel and V. Andréassian (2003),
+      Improvement of a parsimonious model for streamflow simulation,
+      Journal of Hydrology, 279(1-4), 275-289, doi:10.1016/S0022-1694(03)00225-7. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine?
+      Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine?
+      Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+}
+\seealso{
+\code{\link{RunModel_CemaNeigeGR5J}}, \code{\link{RunModel_CemaNeigeGR6J}}, \code{\link{RunModel_GR4J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_CemaNeigeGR5J.Rd b/man/RunModel_CemaNeigeGR5J.Rd
new file mode 100644
index 00000000..1d0cf524
--- /dev/null
+++ b/man/RunModel_CemaNeigeGR5J.Rd
@@ -0,0 +1,117 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_CemaNeigeGR5J.R
+\encoding{UTF-8}
+\name{RunModel_CemaNeigeGR5J}
+\alias{RunModel_CemaNeigeGR5J}
+\title{Run with the CemaNeigeGR5J hydrological model}
+\usage{
+RunModel_CemaNeigeGR5J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 7 parameters
+\tabular{ll}{
+GR5J X1      \tab production store capacity [mm]                                \cr
+GR5J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+GR5J X3      \tab routing store capacity [mm]                                   \cr
+GR5J X4      \tab unit hydrograph time constant [d]                             \cr
+GR5J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+         \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the CemaNeige-GR5J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR5J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR5J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(179.139,-0.100,203.815,1.174,2.478,0.977,2.774)
+OutputsModel <- RunModel_CemaNeigeGR5J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Le Moine, N. (2008), Le bassin versant de surface vu par le souterrain : une voie d'amélioration des performances
+      et du réalisme des modèles pluie-débit ?, PhD thesis (french), UPMC, Paris, France. \cr
+  Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011),
+      A downward structural sensitivity analysis of hydrological models to improve low-flow simulation,
+      Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine?
+      Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine?
+      Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+}
+\seealso{
+\code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{RunModel_CemaNeigeGR6J}}, \code{\link{RunModel_GR5J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_CemaNeigeGR6J.Rd b/man/RunModel_CemaNeigeGR6J.Rd
new file mode 100644
index 00000000..cbf4f2cb
--- /dev/null
+++ b/man/RunModel_CemaNeigeGR6J.Rd
@@ -0,0 +1,118 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_CemaNeigeGR6J.R
+\encoding{UTF-8}
+\name{RunModel_CemaNeigeGR6J}
+\alias{RunModel_CemaNeigeGR6J}
+\title{Run with the CemaNeigeGR6J hydrological model}
+\usage{
+RunModel_CemaNeigeGR6J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 8 parameters
+\tabular{ll}{
+GR6J X1      \tab production store capacity [mm]                                \cr
+GR6J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+GR6J X3      \tab routing store capacity [mm]                                   \cr
+GR6J X4      \tab unit hydrograph time constant [d]                             \cr
+GR6J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+GR6J X6      \tab coefficient for emptying exponential store [-]                \cr
+CemaNeige X1 \tab weighting coefficient for snow pack thermal state [-]         \cr
+CemaNeige X2 \tab degree-day melt coefficient [mm/degC/d]                       \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QR1     }          \tab [numeric] series of exponential store outflow (QR1) [mm/d]                    \cr
+         \emph{$Exp     }          \tab [numeric] series of exponential store level (X(6)) (negative) [mm]            \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$CemaNeigeLayers}   \tab [list] list of CemaNeige outputs (1 list per layer)                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Pliq         }   \tab [numeric] series of liquid precip. [mm/d]                          \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Psol         }   \tab [numeric] series of solid precip. [mm/d]                           \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$SnowPack     }   \tab [numeric] series of snow pack [mm]                                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$ThermalState }   \tab [numeric] series of snow pack thermal state [degC]                 \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Gratio       }   \tab [numeric] series of Gratio [0-1]                                   \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PotMelt      }   \tab [numeric] series of potential snow melt [mm/d]                     \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$Melt         }   \tab [numeric] series of actual snow melt [mm/d]                        \cr
+         \emph{$CemaNeigeLayers[[iLayer]]$PliqAndMelt  }   \tab [numeric] series of liquid precip. + actual snow melt [mm/d]       \cr
+         \emph{$StateEnd}                                  \tab [numeric] states at the end of the run: \cr\tab res. & HU levels [mm], CemaNeige states [mm & degC] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the CemaNeige-GR6J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR6J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR6J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(116.482,0.500,72.733,1.224,0.278,30.333,0.977,2.776)
+OutputsModel <- RunModel_CemaNeigeGR6J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011),
+      A downward structural sensitivity analysis of hydrological models to improve low-flow simulation,
+      Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": what is useful in a temperature-based snow-accounting routine?
+      Part 1 - Comparison of six snow accounting routines on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.059. \cr
+  Valéry, A., V. Andréassian and C. Perrin (2014),
+      "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine?
+      Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058.
+}
+\seealso{
+\code{\link{RunModel_CemaNeigeGR4J}}, \code{\link{RunModel_CemaNeigeGR5J}}, \code{\link{RunModel_GR6J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_GR1A.Rd b/man/RunModel_GR1A.Rd
new file mode 100644
index 00000000..17644fc1
--- /dev/null
+++ b/man/RunModel_GR1A.Rd
@@ -0,0 +1,87 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR1A.R
+\encoding{UTF-8}
+\name{RunModel_GR1A}
+\alias{RunModel_GR1A}
+\title{Run with the GR1A hydrological model}
+\usage{
+RunModel_GR1A(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 4 parameters
+\tabular{ll}{
+GR1A X1      \tab model parameter [mm] \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR1A yearly lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## conversion of example data from daily to yearly time-step
+TabSeries       <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat      <- "daily"
+NewTimeFormat   <- "yearly"
+ConvertFun      <- c("sum","sum","mean","sum")
+YearFirstMonth  <- 09;
+NewTabSeries    <- SeriesAggreg(TabSeries=TabSeries,TimeFormat=TimeFormat,
+                                NewTimeFormat=NewTimeFormat,ConvertFun=ConvertFun,
+                                YearFirstMonth=YearFirstMonth)
+BasinObs        <- NewTabSeries
+names(BasinObs) <- c("DatesR","P","E","T","Qmm")
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR1A,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%Y")=="1990"),
+               which(format(BasinObs$DatesR,format="\%Y")=="1999"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR1A,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(0.840)
+OutputsModel <- RunModel_GR1A(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (March 2015)
+}
+\references{
+Mouelhi S. (2003),
+      Vers une chaîne cohérente de modèles pluie-débit conceptuels globaux aux pas de temps pluriannuel, annuel, mensuel et journalier,
+      PhD thesis (in French), ENGREF, Cemagref Antony, France. \cr
+}
+
diff --git a/man/RunModel_GR2M.Rd b/man/RunModel_GR2M.Rd
new file mode 100644
index 00000000..5103fc1e
--- /dev/null
+++ b/man/RunModel_GR2M.Rd
@@ -0,0 +1,101 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR2M.R
+\encoding{UTF-8}
+\name{RunModel_GR2M}
+\alias{RunModel_GR2M}
+\title{Run with the GR2M hydrological model}
+\usage{
+RunModel_GR2M(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 4 parameters
+\tabular{ll}{
+GR2M X1      \tab production store capacity [mm]                 \cr
+GR2M X2      \tab groundwater exchange coefficient [mm/month]    \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/h]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/h]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/h]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/h]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/h]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/h]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/h]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/h]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/h]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+         \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR2M monthly lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## conversion of example data from daily to monthly time-step
+TabSeries       <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat      <- "daily"
+NewTimeFormat   <- "monthly"
+ConvertFun      <- c("sum","sum","mean","sum")
+NewTabSeries    <- SeriesAggreg(TabSeries=TabSeries,TimeFormat=TimeFormat,
+                                NewTimeFormat=NewTimeFormat,ConvertFun=ConvertFun)
+BasinObs        <- NewTabSeries
+names(BasinObs) <- c("DatesR","P","E","T","Qmm")
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR2M,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%m/\%Y")=="01/1990"),
+               which(format(BasinObs$DatesR,format="\%m/\%Y")=="12/1999"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR2M,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(265.072,1.040)
+OutputsModel <- RunModel_GR2M(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (March 2015)
+}
+\references{
+Mouelhi S. (2003),
+      Vers une chaîne cohérente de modèles pluie-débit conceptuels globaux aux pas de temps pluriannuel, annuel, mensuel et journalier,
+      PhD thesis (in French), ENGREF, Cemagref Antony, France. \cr
+  Mouelhi, S., C. Michel, C. Perrin and V. Andréassian (2006),
+      Stepwise development of a two-parameter monthly water balance model,
+      Journal of Hydrology, 318(1-4), 200-214, doi:10.1016/j.jhydrol.2005.06.014.
+}
+
diff --git a/man/RunModel_GR4H.Rd b/man/RunModel_GR4H.Rd
new file mode 100644
index 00000000..b9d7a4a7
--- /dev/null
+++ b/man/RunModel_GR4H.Rd
@@ -0,0 +1,94 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR4H.R
+\encoding{UTF-8}
+\name{RunModel_GR4H}
+\alias{RunModel_GR4H}
+\title{Run with the GR4H hydrological model}
+\usage{
+RunModel_GR4H(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 4 parameters
+\tabular{ll}{
+GR4H X1      \tab production store capacity [mm]                                \cr
+GR4H X2      \tab groundwater exchange coefficient [mm/h]                       \cr
+GR4H X3      \tab routing store capacity [mm]                                   \cr
+GR4H X4      \tab unit hydrograph time constant [h]                             \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                    \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/h]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/h]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/h]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/h]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/h]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/h]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/h]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/h]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/h]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/h]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/h]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/h]                                               \cr
+         \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR4H hourly lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123003)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4H,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/03/2004 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/2008 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4H,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(521.113,-2.918,218.009,4.124)
+OutputsModel <- RunModel_GR4H(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (July 2014)
+}
+\references{
+Mathevet, T. (2005),
+      Quels modèles pluie-débit globaux pour le pas de temps horaire ? Développement empirique et comparaison de modèles sur un large échantillon de bassins versants,
+      PhD thesis (in French), ENGREF - Cemagref (Antony), Paris, France.
+}
+\seealso{
+\code{\link{RunModel_GR4J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_GR4J.Rd b/man/RunModel_GR4J.Rd
new file mode 100644
index 00000000..3e79c8ab
--- /dev/null
+++ b/man/RunModel_GR4J.Rd
@@ -0,0 +1,94 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR4J.R
+\encoding{UTF-8}
+\name{RunModel_GR4J}
+\alias{RunModel_GR4J}
+\title{Run with the GR4J hydrological model}
+\usage{
+RunModel_GR4J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 4 parameters
+\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 X4      \tab unit hydrograph time constant [d]                             \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR4J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(257.238,1.012,88.235,2.208)
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Perrin, C., C. Michel and V. Andréassian (2003),
+      Improvement of a parsimonious model for streamflow simulation,
+      Journal of Hydrology, 279(1-4), 275-289, doi:10.1016/S0022-1694(03)00225-7.
+}
+\seealso{
+\code{\link{RunModel_GR5J}}, \code{\link{RunModel_GR6J}}, \code{\link{RunModel_CemaNeigeGR4J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_GR5J.Rd b/man/RunModel_GR5J.Rd
new file mode 100644
index 00000000..a67da9d6
--- /dev/null
+++ b/man/RunModel_GR5J.Rd
@@ -0,0 +1,97 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR5J.R
+\encoding{UTF-8}
+\name{RunModel_GR5J}
+\alias{RunModel_GR5J}
+\title{Run with the GR5J hydrological model}
+\usage{
+RunModel_GR5J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 5 parameters
+\tabular{ll}{
+GR5J X1      \tab production store capacity [mm]                                \cr
+GR5J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+GR5J X3      \tab routing store capacity [mm]                                   \cr
+GR5J X4      \tab unit hydrograph time constant [d]                             \cr
+GR5J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR5J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR5J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR5J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(245.918,1.027,90.017,2.198,0.434)
+OutputsModel <- RunModel_GR5J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Le Moine, N. (2008), Le bassin versant de surface vu par le souterrain : une voie d'amélioration des performances
+      et du réalisme des modèles pluie-débit ?, PhD thesis (french), UPMC, Paris, France. \cr
+  Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet, and V. Andréassian (2011),
+      A downward structural sensitivity analysis of hydrological models to improve low-flow simulation,
+      Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+}
+\seealso{
+\code{\link{RunModel_GR4J}}, \code{\link{RunModel_GR6J}}, \code{\link{RunModel_CemaNeigeGR5J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/RunModel_GR6J.Rd b/man/RunModel_GR6J.Rd
new file mode 100644
index 00000000..4fe20c62
--- /dev/null
+++ b/man/RunModel_GR6J.Rd
@@ -0,0 +1,98 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/RunModel_GR6J.R
+\encoding{UTF-8}
+\name{RunModel_GR6J}
+\alias{RunModel_GR6J}
+\title{Run with the GR6J hydrological model}
+\usage{
+RunModel_GR6J(InputsModel, RunOptions, Param)
+}
+\arguments{
+\item{InputsModel}{[object of class \emph{InputsModel}] see \code{\link{CreateInputsModel}} for details}
+
+\item{RunOptions}{[object of class \emph{RunOptions}] see \code{\link{CreateRunOptions}} for details}
+
+\item{Param}{[numeric] vector of 6 parameters
+\tabular{ll}{
+GR6J X1      \tab production store capacity [mm]                                \cr
+GR6J X2      \tab intercatchment exchange coefficient 1 [mm/d]                  \cr
+GR6J X3      \tab routing store capacity [mm]                                   \cr
+GR6J X4      \tab unit hydrograph time constant [d]                             \cr
+GR6J X5      \tab intercatchment exchange coefficient 2 [-]                     \cr
+GR6J X6      \tab coefficient for emptying exponential store [-]                \cr
+}}
+}
+\value{
+[list] list containing the function outputs organised as follows:
+         \tabular{ll}{
+         \emph{$DatesR  }          \tab [POSIXlt] series of dates                                                     \cr
+         \emph{$PotEvap }          \tab [numeric] series of input potential evapotranspiration [mm/d]                 \cr
+         \emph{$Precip  }          \tab [numeric] series of input total precipitation [mm/d]                          \cr
+         \emph{$Prod    }          \tab [numeric] series of production store level (X(2)) [mm]                        \cr
+         \emph{$AE      }          \tab [numeric] series of actual evapotranspiration [mm/d]                          \cr
+         \emph{$Perc    }          \tab [numeric] series of percolation (PERC) [mm/d]                                 \cr
+         \emph{$PR      }          \tab [numeric] series of PR=PN-PS+PERC [mm/d]                                      \cr
+         \emph{$Q9      }          \tab [numeric] series of HU1 outflow (Q9) [mm/d]                                   \cr
+         \emph{$Q1      }          \tab [numeric] series of HU2 outflow (Q1) [mm/d]                                   \cr
+         \emph{$Rout    }          \tab [numeric] series of routing store level (X(1)) [mm]                           \cr
+         \emph{$Exch    }          \tab [numeric] series of potential semi-exchange between catchments [mm/d]         \cr
+         \emph{$AExch   }          \tab [numeric] series of actual exchange between catchments (1+2) [mm/d]           \cr
+         \emph{$QR      }          \tab [numeric] series of routing store outflow (QR) [mm/d]                         \cr
+         \emph{$QR1     }          \tab [numeric] series of exponential store outflow (QR1) [mm/d]                    \cr
+         \emph{$Exp     }          \tab [numeric] series of exponential store level (X(6)) (negative) [mm]            \cr
+         \emph{$QD      }          \tab [numeric] series of direct flow from HU2 after exchange (QD) [mm/d]           \cr
+         \emph{$Qsim    }          \tab [numeric] series of Qsim [mm/d]                                               \cr
+         \emph{$StateEnd}          \tab [numeric] states at the end of the run (res. levels, HU1 levels, HU2 levels) [mm] \cr
+         }
+         (refer to the provided references or to the package source code for further details on these model outputs)
+}
+\description{
+Function which performs a single run for the GR6J daily lumped model.
+}
+\details{
+For further details on the model, see the references section.
+For further details on the argument structures and initialisation options, see \code{\link{CreateRunOptions}}.
+}
+\examples{
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR6J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="\%d/\%m/\%Y \%H:\%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR6J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(242.257,0.637,53.517,2.218,0.424,4.759)
+OutputsModel <- RunModel_GR6J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\\n",sep=""))
+
+}
+\author{
+Laurent Coron (December 2013)
+}
+\references{
+Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011),
+      A downward structural sensitivity analysis of hydrological models to improve low-flow simulation,
+      Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+}
+\seealso{
+\code{\link{RunModel_GR4J}}, \code{\link{RunModel_GR5J}}, \code{\link{RunModel_CemaNeigeGR6J}},
+         \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}.
+}
+
diff --git a/man/SeriesAggreg.Rd b/man/SeriesAggreg.Rd
new file mode 100644
index 00000000..dc1e84fe
--- /dev/null
+++ b/man/SeriesAggreg.Rd
@@ -0,0 +1,57 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/SeriesAggreg.R
+\encoding{UTF-8}
+\name{SeriesAggreg}
+\alias{SeriesAggreg}
+\title{Conversion of time series to another time-step (aggregation only)}
+\usage{
+SeriesAggreg(TabSeries, TimeFormat, NewTimeFormat, ConvertFun,
+  YearFirstMonth = 1, quiet = FALSE)
+}
+\arguments{
+\item{TabSeries}{[POSIXlt+numeric] dataframe containing the vector of dates and the time series values}
+
+\item{TimeFormat}{[character] desired format (i.e. "hourly", "daily", "monthly" or "yearly")}
+
+\item{NewTimeFormat}{[character] desired format (i.e. "hourly", "daily", "monthly" or "yearly")}
+
+\item{ConvertFun}{[character] names of aggregation functions (e.g. for P[mm],T[deg],Q[mm] : ConvertFun=c("sum","mean","sum"))}
+
+\item{YearFirstMonth}{(optional) [numeric] integer used when NewTimeFormat="yearly" to set when the starting month of the year (e.g. 01 for calendar year or 09 for hydrological year starting in september)}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+[POSIXlt+numeric] dataframe containing a vector of aggregated dates and time series values
+}
+\description{
+Conversion of time series to another time-step (aggregation only).
+Warning : on the aggregated outputs, the dates correpond to the beginning ot the time-step
+(e.g. for daily time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 01/03/2005 23:59 )
+(e.g. for monthly time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 31/03/2005 23:59 )
+(e.g. for yearly time-series 01/03/2005 00:00 = value for period 01/03/2005 00:00 - 28/02/2006 23:59 )
+}
+\examples{
+## load of catchment data
+require(airGR)
+
+## preparation of the initial time series data frame at the daily time-step
+data(L0123002)
+TabSeries  <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat <- "daily"
+
+## conversion at the monthly time-step
+NewTimeFormat <- "monthly"
+ConvertFun    <- c("sum","sum","mean","sum")
+NewTabSeries  <- SeriesAggreg(TabSeries=TabSeries,TimeFormat,NewTimeFormat,ConvertFun)
+
+## conversion at the yearly time-step
+NewTimeFormat <- "yearly"
+ConvertFun <- c("sum","sum","mean","sum")
+NewTabSeries <- SeriesAggreg(TabSeries=TabSeries,TimeFormat,NewTimeFormat,ConvertFun)
+
+}
+\author{
+Laurent Coron (March 2015)
+}
+
diff --git a/man/TransfoParam.Rd b/man/TransfoParam.Rd
new file mode 100644
index 00000000..8124b307
--- /dev/null
+++ b/man/TransfoParam.Rd
@@ -0,0 +1,46 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam.R
+\encoding{UTF-8}
+\name{TransfoParam}
+\alias{TransfoParam}
+\title{Transformation of the parameters using the provided function}
+\usage{
+TransfoParam(ParamIn, Direction, FUN_TRANSFO)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+
+\item{FUN_TRANSFO}{[function] model parameters transformation function (e.g. TransfoParam_GR4J, TransfoParam_CemaNeigeGR4J)}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa) using the provided function.
+}
+\examples{
+require(airGR)
+
+## transformation Real->Transformed for the GR4J model
+    Xreal <- matrix( c( 221.41, -3.63,  30.00, 1.37,
+                        347.23, -1.03,  60.34, 1.76,
+                        854.06, -0.10, 148.41, 2.34),
+                        ncol=4,byrow=TRUE)
+    Xtran <- TransfoParam(ParamIn=Xreal,Direction="RT",FUN_TRANSFO=TransfoParam_GR4J)
+
+## transformation Transformed->Real for the GR4J model
+    Xtran <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                        +3.90, -0.90, +4.10, -8.70,
+                        +4.50, -0.10, +5.00, -8.10),
+                        ncol=4,byrow=TRUE)
+    Xreal <- TransfoParam(ParamIn=Xtran,Direction="TR",FUN_TRANSFO=TransfoParam_GR4J)
+}
+\author{
+Laurent Coron (June 2014)
+}
+\seealso{
+\code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+}
+
diff --git a/man/TransfoParam_CemaNeige.Rd b/man/TransfoParam_CemaNeige.Rd
new file mode 100644
index 00000000..0dd630f4
--- /dev/null
+++ b/man/TransfoParam_CemaNeige.Rd
@@ -0,0 +1,44 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_CemaNeige.R
+\encoding{UTF-8}
+\name{TransfoParam_CemaNeige}
+\alias{TransfoParam_CemaNeige}
+\title{Transformation of the parameters from the CemaNeige module}
+\usage{
+TransfoParam_CemaNeige(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\examples{
+require(airGR)
+
+## transformation Real->Transformed for the CemaNeige module
+    Xreal <- matrix( c( 0.19, 1.73,
+                        0.39, 2.51,
+                        0.74, 4.06),
+                        ncol=2,byrow=TRUE)
+    Xtran <- TransfoParam_CemaNeige(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the CemaNeige module
+    Xtran <- matrix( c( -6.26, +0.55,
+                        -2.13, +0.92,
+                        +4.86, +1.40)
+                        ,ncol=2,byrow=TRUE)
+    Xreal <- TransfoParam_CemaNeige(ParamIn=Xtran,Direction="TR")
+}
+\author{
+Laurent Coron (December 2013)
+}
+\seealso{
+\code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}
+}
+
diff --git a/man/TransfoParam_GR1A.Rd b/man/TransfoParam_GR1A.Rd
new file mode 100644
index 00000000..d9067e79
--- /dev/null
+++ b/man/TransfoParam_GR1A.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR1A.R
+\encoding{UTF-8}
+\name{TransfoParam_GR1A}
+\alias{TransfoParam_GR1A}
+\title{Transformation of the parameters from the GR1A model}
+\usage{
+TransfoParam_GR1A(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\author{
+Laurent Coron (March 2015)
+}
+
diff --git a/man/TransfoParam_GR2M.Rd b/man/TransfoParam_GR2M.Rd
new file mode 100644
index 00000000..d031bfa4
--- /dev/null
+++ b/man/TransfoParam_GR2M.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR2M.R
+\encoding{UTF-8}
+\name{TransfoParam_GR2M}
+\alias{TransfoParam_GR2M}
+\title{Transformation of the parameters from the GR2M model}
+\usage{
+TransfoParam_GR2M(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\author{
+Laurent Coron (March 2015)
+}
+
diff --git a/man/TransfoParam_GR4H.Rd b/man/TransfoParam_GR4H.Rd
new file mode 100644
index 00000000..9529ebc3
--- /dev/null
+++ b/man/TransfoParam_GR4H.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR4H.R
+\encoding{UTF-8}
+\name{TransfoParam_GR4H}
+\alias{TransfoParam_GR4H}
+\title{Transformation of the parameters from the GR4H model}
+\usage{
+TransfoParam_GR4H(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\author{
+Laurent Coron (July 2014)
+}
+
diff --git a/man/TransfoParam_GR4J.Rd b/man/TransfoParam_GR4J.Rd
new file mode 100644
index 00000000..329af790
--- /dev/null
+++ b/man/TransfoParam_GR4J.Rd
@@ -0,0 +1,44 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR4J.R
+\encoding{UTF-8}
+\name{TransfoParam_GR4J}
+\alias{TransfoParam_GR4J}
+\title{Transformation of the parameters from the GR4J model}
+\usage{
+TransfoParam_GR4J(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\examples{
+require(airGR)
+
+## transformation Real->Transformed for the GR4J model
+    Xreal <- matrix( c( 221.41, -3.63,  30.00, 1.37,
+                        347.23, -1.03,  60.34, 1.76,
+                        854.06, -0.10, 148.41, 2.34),
+                        ncol=4,byrow=TRUE)
+    Xtran <- TransfoParam_GR4J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR4J model
+    Xtran <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                        +3.90, -0.90, +4.10, -8.70,
+                        +4.50, -0.10, +5.00, -8.10),
+                        ncol=4,byrow=TRUE)
+    Xreal <- TransfoParam_GR4J(ParamIn=Xtran,Direction="TR")
+}
+\author{
+Laurent Coron (December 2013)
+}
+\seealso{
+\code{\link{TransfoParam}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+}
+
diff --git a/man/TransfoParam_GR5J.Rd b/man/TransfoParam_GR5J.Rd
new file mode 100644
index 00000000..667851df
--- /dev/null
+++ b/man/TransfoParam_GR5J.Rd
@@ -0,0 +1,44 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR5J.R
+\encoding{UTF-8}
+\name{TransfoParam_GR5J}
+\alias{TransfoParam_GR5J}
+\title{Transformation of the parameters from the GR5J model}
+\usage{
+TransfoParam_GR5J(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\examples{
+require(airGR)
+
+## transformation Real->Transformed for the GR5J model
+    Xreal <- matrix( c( 221.41, -2.65,  27.11, 1.37, -0.76,
+                        347.23, -0.64,  60.34, 1.76,  0.30,
+                        854.01, -0.10, 148.41, 2.34,  0.52),
+                        ncol=5,byrow=TRUE)
+    Xtran <- TransfoParam_GR5J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR5J model
+    Xtran <- matrix( c( +3.60, -1.70, +3.30, -9.10, -0.70,
+                        +3.90, -0.60, +4.10, -8.70, +0.30,
+                        +4.50, -0.10, +5.00, -8.10, +0.50),
+                        ncol=5,byrow=TRUE)
+    Xreal <- TransfoParam_GR5J(ParamIn=Xtran,Direction="TR")
+}
+\author{
+Laurent Coron (December 2013)
+}
+\seealso{
+\code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR6J}}, \code{\link{TransfoParam_CemaNeige}}
+}
+
diff --git a/man/TransfoParam_GR6J.Rd b/man/TransfoParam_GR6J.Rd
new file mode 100644
index 00000000..a8e761e6
--- /dev/null
+++ b/man/TransfoParam_GR6J.Rd
@@ -0,0 +1,44 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/TransfoParam_GR6J.R
+\encoding{UTF-8}
+\name{TransfoParam_GR6J}
+\alias{TransfoParam_GR6J}
+\title{Transformation of the parameters from the GR6J model}
+\usage{
+TransfoParam_GR6J(ParamIn, Direction)
+}
+\arguments{
+\item{ParamIn}{[numeric] matrix of parameter sets (sets in line, parameter values in column)}
+
+\item{Direction}{[character] direction of the transformation: use "RT" for Real->Transformed and "TR" for Transformed->Real}
+}
+\value{
+\emph{ParamOut} [numeric] matrix of parameter sets (sets in line, parameter values in column)
+}
+\description{
+Function which transforms model parameters (from real to transformed parameters and vice versa).
+}
+\examples{
+require(airGR)
+
+## transformation Real->Transformed for the GR6J model
+    Xreal <- matrix( c( 221.41, -1.18,  27.11, 1.37, -0.18,  20.09,
+                        347.23, -0.52,  60.34, 1.76,  0.02,  54.60,
+                        854.06,  0.52, 148.41, 2.34,  0.22, 148.41),
+                        ncol=6,byrow=TRUE)
+    Xtran <- TransfoParam_GR6J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR6J model
+    Xtran <- matrix( c( +3.60, -1.00, +3.30, -9.10, -0.90, +3.00,
+                        +3.90, -0.50, +4.10, -8.70, +0.10, +4.00,
+                        +4.50, +0.50, +5.00, -8.10, +1.10, +5.00),
+                        ncol=6,byrow=TRUE)
+    Xreal <- TransfoParam_GR6J(ParamIn=Xtran,Direction="TR")
+}
+\author{
+Laurent Coron (December 2013)
+}
+\seealso{
+\code{\link{TransfoParam}}, \code{\link{TransfoParam_GR4J}}, \code{\link{TransfoParam_GR5J}}, \code{\link{TransfoParam_CemaNeige}}
+}
+
diff --git a/man/airGR.Rd b/man/airGR.Rd
new file mode 100644
index 00000000..e5aa8c4b
--- /dev/null
+++ b/man/airGR.Rd
@@ -0,0 +1,71 @@
+\name{airGR}
+\alias{airGR}
+\docType{package}
+\encoding{UTF-8}
+\title{Modelling tools used at Irstea-HBAN (France), including GR4J and CemaNeige}
+\description{
+This package brings into R the hydrological modelling tools used at Irstea-HBAN (France), including GR4H, GR4J, GR5J, GR6J, GR2M, GR1A and CemaNeige. Each model core is coded in FORTRAN to ensure low computational time. The other package functions (i.e. mainly the calibration algorithm and the efficiency criteria) are coded in R. \cr
+
+##### Functions and objects #####
+
+The airGR package has been designed to fulfil two major requirements: facilitate the use by non-expert users and allow flexibility regarding the addition of external criteria, models or calibration algorithms. The names of the functions and their arguments were chosen to this end. 
+
+The package is mostly based on three families of functions: \cr
+- the functions belonging to the \code{\link{RunModel}} family require three arguments: \emph{InputsModel}, \emph{RunOptions} and \emph{Param};  please refer to help pages \code{\link{CreateInputsModel}} and \code{\link{CreateRunOptions}} for further details and examples; \cr
+- the functions belonging to the \code{\link{ErrorCrit}} family require two arguments: \emph{InputsCrit} and \emph{OutputsModel}; please refer to help pages \code{\link{CreateInputsCrit}} and \code{\link{RunModel}} for further details and examples; \cr
+- the functions belonging to the \code{\link{Calibration}} family require four arguments: \emph{InputsModel}, \emph{RunOptions}, \emph{InputsCrit} and \emph{CalibOptions};  please refer to help pages \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateInputsCrit}} and \code{\link{CreateCalibOptions}} for further details and examples.
+
+In order to limit the risk of mis-use and increase the flexibility of these main functions, we imposed the structure of their arguments and defined their class. Most users will not need to worry about these imposed structures since functions are provided to prepare these arguments for them: \code{\link{CreateInputsModel}}, \code{\link{CreateRunOptions}}, \code{\link{CreateInputsCrit}}, \code{\link{CreateCalibOptions}}. However, advanced users wishing to supplement the package with their own models will need to comply with these imposed structures and refer to the package source codes to get all the specification requirements. \cr
+
+##### Models #####
+
+Three hydrological models and one snow melt and accumulation module are implemented in airGR. The snow module can also be used alone and each hydrological model can either be used alone or together with the snow module. \cr
+These models can be called within airGR using the following functions: \cr 
+- \code{\link{RunModel_GR4H}}: four-parameter hourly lumped conceptual model (Mathevet, 2005) \cr
+- \code{\link{RunModel_GR4J}}: four-parameter daily lumped conceptual model (Perrin et al., 2003) \cr
+- \code{\link{RunModel_GR5J}}: five-parameter daily lumped conceptual model (Le Moine, 2008) \cr
+- \code{\link{RunModel_GR6J}}: six-parameter daily lumped conceptual model (Pushpalatha, 2013) \cr
+- \code{\link{RunModel_GR2M}}: two-parameter monthly lumped conceptual model (Mouelhi, 2003) \cr
+- \code{\link{RunModel_GR1A}}: one-parameter yearly lumped conceptual model (Mouelhi, 2003, 2006) \cr
+- \code{\link{RunModel_CemaNeige}}: two-parameter degree-day snow melt and accumulation daily module (Valéry et al., 2014) \cr
+- \code{\link{RunModel_CemaNeigeGR4J}}: combined use of GR4J and CemaNeige \cr
+- \code{\link{RunModel_CemaNeigeGR5J}}: combined use of GR5J and CemaNeige \cr
+- \code{\link{RunModel_CemaNeigeGR6J}}: combined use of GR6J and CemaNeige
+
+##### How to get started #####
+
+To learn how to use the functions from the airGR package, it is recommended to follow the five steps described below: \cr
+1. refer to the help for \code{\link{RunModel_GR4H}} then run the provided example to assess how to make a simulation ; \cr
+2. refer to the help for \code{\link{CreateInputsModel}} to understand how the inputs of a model are prepared/organised ; \cr
+3. refer to the help for \code{\link{CreateRunOptions}} to understand how the run options of a model are parametrised/organised ; \cr
+4. refer to the help for \code{\link{ErrorCrit_NSE}} and \code{\link{CreateInputsCrit}} to understand how the computation of an error criterion is prepared/made ; \cr
+5. refer to the help for \code{\link{Calibration_HBAN}}, run the provided example and then refer to the help for \code{\link{CreateCalibOptions}} to understand how a model calibration is prepared/made ;
+
+##### References #####
+
+- Le Moine, N. (2008), Le bassin versant de surface vu par le souterrain : une voie d'amélioration des performances et du réalisme des modèles pluie-débit ?, PhD thesis (in French), UPMC, Paris, France. \cr
+- Mathevet, T. (2005), Quels modèles pluie-débit globaux pour le pas de temps horaire ? Développement empirique et comparaison de modèles sur un large échantillon de bassins versants, PhD thesis (in French), ENGREF - Cemagref (Antony), Paris, France. \cr
+- Mouelhi S. (2003), Vers une chaîne cohérente de modèles pluie-débit conceptuels globaux aux pas de temps pluriannuel, annuel, mensuel et journalier, PhD thesis (in French), ENGREF - Cemagref Antony, Paris, France. \cr
+- Mouelhi, S., C. Michel, C. Perrin and V. Andréassian (2006), Stepwise development of a two-parameter monthly water balance model, Journal of Hydrology, 318(1-4), 200-214, doi:10.1016/j.jhydrol.2005.06.014. \cr
+- Perrin, C., C. Michel and V. Andréassian (2003), Improvement of a parsimonious model for streamflow simulation, Journal of Hydrology, 279(1-4), 275-289, doi:10.1016/S0022-1694(03)00225-7. \cr
+- Pushpalatha, R., C. Perrin, N. Le Moine, T. Mathevet and V. Andréassian (2011), A downward structural sensitivity analysis of hydrological models to improve low-flow simulation, Journal of Hydrology, 411(1-2), 66-76, doi:10.1016/j.jhydrol.2011.09.034. \cr
+- Valéry, A., V. Andréassian and C. Perrin (2014), "As simple as possible but not simpler": What is useful in a temperature-based snow-accounting routine? Part 2 - Sensitivity analysis of the Cemaneige snow accounting routine on 380 catchments, Journal of Hydrology, doi:10.1016/j.jhydrol.2014.04.058. \cr
+
+}
+
+
+\details{
+\tabular{ll}{
+Package: \tab airGR\cr
+Type: \tab Package\cr
+Version: \tab 0.8.1.0\cr
+Date: \tab 2015-10-27\cr
+License: \tab GPL-2\cr
+}
+}
+\author{
+Author: Laurent CORON \cr
+Maintainer: Laurent CORON, Olivier DELAIGUE <olivier.delaigue@irstea.fr>
+}
+
+\keyword{package, hydrology, modelling}
diff --git a/man/plot_OutputsModel.Rd b/man/plot_OutputsModel.Rd
new file mode 100644
index 00000000..be75d308
--- /dev/null
+++ b/man/plot_OutputsModel.Rd
@@ -0,0 +1,40 @@
+% Generated by roxygen2 (4.1.1): do not edit by hand
+% Please edit documentation in R/plot_OutputsModel.R
+\encoding{UTF-8}
+\name{plot_OutputsModel}
+\alias{plot_OutputsModel}
+\title{Default preview of model outputs}
+\usage{
+plot_OutputsModel(OutputsModel, Qobs = NULL, IndPeriod_Plot = NULL,
+  BasinArea = NULL, PlotChoice = "all", quiet = FALSE)
+}
+\arguments{
+\item{OutputsModel}{[object of class \emph{OutputsModel}] list of model outputs (which must at least include DatesR, Precip and Qsim) [POSIXlt, mm, mm]}
+
+\item{Qobs}{(optional) [numeric] time series of observed flow (for the same time-steps than simulated) [mm]}
+
+\item{IndPeriod_Plot}{(optional) [numeric] indices of the time-steps to be plotted (among the OutputsModel series)}
+
+\item{BasinArea}{(optional) [numeric] basin area [km2], used to plot flow axes in m3/s}
+
+\item{PlotChoice}{(optional) [character] choice of plots \cr (e.g. c("Precip","SnowPack","Flows","Regime","CumFreq","CorQQ")), default="all"}
+
+\item{quiet}{(optional) [boolean] boolean indicating if the function is run in quiet mode or not, default=FALSE}
+}
+\value{
+screen plot window
+}
+\description{
+Function which creates a screen plot giving an overview of the model outputs
+}
+\details{
+Dashboard of results including various graphs (depending on the model):
+(1) time series of total precipitation and simulated flows (and observed flows if provided)
+(2) interannual median monthly simulated flow (and observed flows if provided)
+(3) correlation plot between simulated and observed flows (if observed flows provided)
+(4) cumulative frequency plot for simulated flows (and observed flows if provided)
+}
+\author{
+Laurent Coron (June 2014)
+}
+
diff --git a/src/frun_CEMANEIGE.f b/src/frun_CEMANEIGE.f
new file mode 100644
index 00000000..77984f8e
--- /dev/null
+++ b/src/frun_CEMANEIGE.f
@@ -0,0 +1,135 @@
+
+
+      SUBROUTINE frun_CEMANEIGE(
+                                 !inputs
+     &                             LInputs              , ! [integer] length of input and output series
+     &                             InputsPrecip         , ! [double]  input series of total precipitation [mm]
+     &                             InputsFracSolidPrecip, ! [double]  input series of fraction of solid precipitation [0-1]
+     &                             InputsTemp           , ! [double]  input series of air mean temperature [degC]
+     &                             MeanAnSolidPrecip    , ! [double]  value of annual mean solid precip [mm/y]
+     &                             NParam               , ! [integer] number of model parameter
+     &                             Param                , ! [double]  parameter set
+     &                             NStates              , ! [integer] number of state variables used for model initialising = 2
+     &                             StateStart           , ! [double]  state variables used when the model run starts
+     &                             NOutputs             , ! [integer] number of output series
+     &                             IndOutputs           , ! [integer] indices of output series
+                                 !outputs
+     &                             Outputs              , ! [double]  output series
+     &                             StateEnd             ) ! [double]  state variables at the end of the model run
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_cemaneige
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, intent(in) :: MeanAnSolidPrecip
+      doubleprecision, dimension(LInputs) :: InputsPrecip
+      doubleprecision, dimension(LInputs) :: InputsFracSolidPrecip
+      doubleprecision, dimension(LInputs) :: InputsTemp
+      doubleprecision, dimension(NParam)  :: Param
+      doubleprecision, dimension(NStates) :: StateStart
+      doubleprecision, dimension(NStates) :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      doubleprecision CTG,Kf
+      doubleprecision G,eTG,PliqAndMelt
+      doubleprecision Tmelt,Gthreshold,MinSpeed
+      doubleprecision Pliq,Psol,Gratio,PotMelt,Melt
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation des constantes
+      Tmelt=0
+      Gthreshold=0.9*MeanAnSolidPrecip
+      MinSpeed=0.1
+
+      !initilisation of model states using StateStart
+      G=StateStart(1)
+      eTG=StateStart(2)
+      PliqAndMelt=0
+
+      !setting parameter values
+      CTG=Param(1)
+      Kf=Param(2)
+
+      !initialisation of model outputs
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+
+        !SolidPrecip and LiquidPrecip
+        Pliq=(1-InputsFracSolidPrecip(k))*InputsPrecip(k)
+        Psol=InputsFracSolidPrecip(k)*InputsPrecip(k)
+
+        !Snow pack volume before melt
+        G=G+Psol
+
+        !Snow pack thermal state before melt
+        eTG=CTG*eTG + (1-CTG)*InputsTemp(k)
+        IF(eTG.GT.0) eTG=0
+
+        !Potential melt
+        IF(eTG.EQ.0.AND.InputsTemp(k).GT.Tmelt) THEN
+          PotMelt=Kf*(InputsTemp(k)-Tmelt)
+          IF(PotMelt.GT.G) PotMelt=G
+        ELSE
+          PotMelt=0
+        ENDIF
+
+        !Gratio
+        IF(G.LT.Gthreshold) THEN
+          Gratio=G/Gthreshold
+        ELSE
+          Gratio=1
+        ENDIF
+
+        !Actual melt
+        Melt=((1-MinSpeed)*Gratio+MinSpeed)*PotMelt
+
+        !Update of snow pack volume
+        G=G-Melt
+
+        !Update of Gratio
+        IF(G.LT.Gthreshold) THEN
+          Gratio=G/Gthreshold
+        ELSE
+          Gratio=1
+        ENDIF
+
+        !Water volume to pass to the hydrological model
+        PliqAndMelt=Pliq+Melt
+
+        !Storage of outputs
+        DO I=1,NOutputs
+          IF(IndOutputs(I).EQ.1) Outputs(k,I)=Pliq
+          IF(IndOutputs(I).EQ.2) Outputs(k,I)=Psol
+          IF(IndOutputs(I).EQ.3) Outputs(k,I)=G
+          IF(IndOutputs(I).EQ.4) Outputs(k,I)=eTG
+          IF(IndOutputs(I).EQ.5) Outputs(k,I)=Gratio
+          IF(IndOutputs(I).EQ.6) Outputs(k,I)=PotMelt
+          IF(IndOutputs(I).EQ.7) Outputs(k,I)=Melt
+          IF(IndOutputs(I).EQ.8) Outputs(k,I)=PliqAndMelt
+        ENDDO
+
+      ENDDO
+
+      StateEnd(1)=G
+      StateEnd(2)=eTG
+
+      RETURN
+
+      ENDSUBROUTINE
+
diff --git a/src/frun_GR1A.f b/src/frun_GR1A.f
new file mode 100644
index 00000000..f9d34dae
--- /dev/null
+++ b/src/frun_GR1A.f
@@ -0,0 +1,116 @@
+
+
+      SUBROUTINE frun_GR1A(
+                                 !inputs
+     &                             LInputs      , ! [numeric] length of input and output series
+     &                             InputsPrecip , ! [numeric] input series of total precipitation [mm]
+     &                             InputsPE     , ! [numeric] input series PE [mm]
+     &                             NParam       , ! [numeric] number of model parameter
+     &                             Param        , ! [numeric] parameter set
+     &                             NStates      , ! [numeric] number of state variables used for model initialising
+     &                             StateStart   , ! [numeric] state variables used when the model run starts (none here)
+     &                             NOutputs     , ! [numeric] number of output series
+     &                             IndOutputs   , ! [numeric] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [numeric] output series
+     &                             StateEnd     ) ! [numeric] state variables at the end of the model run  (none here)
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr1a
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NMISC
+      parameter (NMISC=3)
+      doubleprecision MISC(NMISC)
+      doubleprecision P0,P1,E1,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+            
+      !parameter values
+      !Param(1) : fonction parameter [mm]
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=2,LInputs
+        P0=InputsPrecip(k-1)
+        P1=InputsPrecip(k)
+        E1=InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR1A(Param,P0,P1,E1,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR1A(Param,P0,P1,E1,Q,MISC)
+C Run on a single time-step with the GR4H model
+C Inputs:
+C       Param  Vector of model parameters [mm]
+C       P0     Value of rainfall during the previous time-step [mm]
+C       P1     Value of rainfall during the time-step [mm]
+C       E1     Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NMISC,NParam
+      PARAMETER (NMISC=3)
+      PARAMETER (NParam=1)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P0,P1,E1,Q
+
+C Runoff
+      Q=P1*(1.-1./(1.+((0.7*P1+0.3*P0)/Param(1)/E1)**2.)**0.5)
+
+
+C Variables storage
+      MISC( 1)=E1            ! PE     ! [numeric] potential evapotranspiration  [mm/year]
+      MISC( 2)=P1            ! Precip ! [numeric] total precipitation  [mm/year]
+      MISC( 3)=Q             ! Qsim   ! [numeric] outflow at catchment outlet [mm/year]
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/frun_GR2M.f b/src/frun_GR2M.f
new file mode 100644
index 00000000..a7ae201c
--- /dev/null
+++ b/src/frun_GR2M.f
@@ -0,0 +1,175 @@
+
+
+      SUBROUTINE frun_GR2M(
+                                 !inputs
+     &                             LInputs      , ! [numeric] length of input and output series
+     &                             InputsPrecip , ! [numeric] input series of total precipitation [mm]
+     &                             InputsPE     , ! [numeric] input series PE [mm]
+     &                             NParam       , ! [numeric] number of model parameter
+     &                             Param        , ! [numeric] parameter set
+     &                             NStates      , ! [numeric] number of state variables used for model initialising
+     &                             StateStart   , ! [numeric] state variables used when the model run starts (reservoir levels [mm])
+     &                             NOutputs     , ! [numeric] number of output series
+     &                             IndOutputs   , ! [numeric] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [numeric] output series
+     &                             StateEnd     ) ! [numeric] state variables at the end of the model run  (reservoir levels [mm])
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr2m
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NMISC
+      parameter (NMISC=30)
+      doubleprecision X(2)
+      doubleprecision MISC(NMISC)
+      doubleprecision P,E,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation of model states to zero
+      X=0.
+
+      !initilisation of model states using StateStart
+      X(1)=StateStart(1)
+      X(2)=StateStart(2)
+
+      !parameter values
+      !Param(1) : production store capacity [mm]
+      !Param(2) : groundwater exchange coefficient [mm/month]
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+        P =InputsPrecip(k)
+        E =InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR2M(X,Param,P,E,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+      !model states at the end of the run
+      StateEnd(1)=X(1)
+      StateEnd(2)=X(2)
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR2M(X,Param,P,E,Q,MISC)
+C Run on a single time-step with the GR4H model
+C Inputs:
+C       X      Vector of model states at the beginning of the time-step [mm]
+C       Param  Vector of model parameters [mixed units]
+C       P      Value of rainfall during the time-step [mm]
+C       E      Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       X      Vector of model states at the end of the time-step [mm]
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NMISC,NParam
+      PARAMETER (NMISC=30)
+      PARAMETER (NParam=2)
+      DOUBLEPRECISION X(2)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P,E,Q
+      DOUBLEPRECISION WS,tanHyp,S1,S2
+      DOUBLEPRECISION P1,P2,P3,R1,R2
+
+
+C Production store
+      WS=P/Param(1)  
+      IF(WS.GT.13)WS=13    
+      S1=(X(1)+Param(1)*tanHyp(WS))/(1.+X(1)/Param(1)*tanHyp(WS))                 
+      P1=P+X(1)-S1                  
+      WS=E/Param(1)         
+      IF(WS.GT.13)WS=13    
+      S2=S1*(1.-tanHyp(WS))/(1.+(1.-S1/Param(1))*tanHyp(WS))  
+                
+C Percolation
+      X(1)=S2/(1+(S2/Param(1))**3.)**(1./3.)         
+      P2=S2-X(1)  
+      P3=P1+P2
+
+C QR calculation (routing store)
+      R1=X(2)+P3
+
+C Water exchange
+      R2=Param(2)*R1  
+
+C Total runoff
+      Q=R2*R2/(R2+60.)
+
+C Updating store level
+      X(2)=R2-Q
+
+
+C Variables storage
+      MISC( 1)=E             ! PE     ! [numeric] potential evapotranspiration  [mm/month]
+      MISC( 2)=P1            ! Precip ! [numeric] total precipitation  [mm/month]
+      MISC( 3)=X(1)          ! Prod   ! [numeric] production store level (X(2)) [mm]
+      MISC( 4)=X(2)          ! Rout   ! [numeric] routing store level (X(1)) [mm]
+      MISC( 5)=Q             ! Qsim   ! [numeric] outflow at catchment outlet [mm/month]
+
+
+C       MISC( 1)=E             ! PE     ! potential evapotranspiration  [mm/d]
+C       MISC( 2)=P1            ! Precip ! total precipitation  [mm/d]
+C       MISC( 3)=X(2)          ! Prod   ! production store level (X(2)) [mm]
+C       MISC( 4)=AE            ! AE     ! actual evapotranspiration [mm/d]
+C       MISC( 5)=PERC          ! Perc   ! percolation (PERC) [mm]
+C       MISC( 6)=PR            ! PR     ! PR=PN-PS+PERC [mm]
+C       MISC( 7)=X(8)          ! Q9     ! outflow from HU1 (Q9) [mm/d]
+C       MISC( 8)=X(8+NH)       ! Q1     ! outflow from HU2 (Q1) [mm/d]
+C       MISC( 9)=X(1)          ! Rout   ! routing store level (X(1)) [mm]
+C       MISC(10)=EXCH          ! Exch   ! potential semi-exchange between catchments (EXCH) [mm/d]
+C       MISC(11)=AEXCH1+AEXCH2 ! AExch  ! actual total exchange between catchments (AEXCH1+AEXCH2) [mm/d]
+C       MISC(12)=QR            ! QR     ! outflow from routing store (QR) [mm/d]
+C       MISC(13)=QD            ! QD     ! outflow from HU2 branch after exchange (QD) [mm/d]
+C       MISC(14)=Q             ! Qsim   ! outflow at catchment outlet [mm/d]
+
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/frun_GR4H.f b/src/frun_GR4H.f
new file mode 100644
index 00000000..773bdd47
--- /dev/null
+++ b/src/frun_GR4H.f
@@ -0,0 +1,225 @@
+
+
+      SUBROUTINE frun_GR4H(
+                                 !inputs
+     &                             LInputs      , ! [numeric] length of input and output series
+     &                             InputsPrecip , ! [numeric] input series of total precipitation [mm]
+     &                             InputsPE     , ! [numeric] input series PE [mm]
+     &                             NParam       , ! [numeric] number of model parameter
+     &                             Param        , ! [numeric] parameter set
+     &                             NStates      , ! [numeric] number of state variables used for model initialising
+     &                             StateStart   , ! [numeric] state variables used when the model run starts (reservoir levels [mm] and HU)
+     &                             NOutputs     , ! [numeric] number of output series
+     &                             IndOutputs   , ! [numeric] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [numeric] output series
+     &                             StateEnd     ) ! [numeric] state variables at the end of the model run  (reservoir levels [mm] and HU)
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr4h
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NPX,NH,NMISC
+      parameter (NPX=14,NH=480,NMISC=30)
+      doubleprecision X(5*NH+7),XV(3*NPX+5*NH)
+      doubleprecision MISC(NMISC)
+      doubleprecision D
+      doubleprecision P1,E,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation of model states to zero
+      X=0.
+      XV=0.
+
+      !initilisation of model states using StateStart
+      DO I=1,3*NH
+      X(I)=StateStart(I)
+      ENDDO
+
+      !parameter values
+      !Param(1) : production store capacity (X1 - PROD) [mm]
+      !Param(2) : intercatchment exchange constant (X2 - CES) [mm/h]
+      !Param(3) : routing store capacity (X3 - ROUT) [mm]
+      !Param(4) : time constant of unit hydrograph (X4 - TB) [h]
+
+      !computation of HU ordinates
+      D=1.25
+      CALL HU1_H(XV,Param(4),D)
+      CALL HU2_H(XV,Param(4),D)
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+        P1=InputsPrecip(k)
+        E =InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR4H(X,XV,Param,P1,E,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+      !model states at the end of the run
+      DO K=1,3*NH
+      StateEnd(K)=X(K)
+      ENDDO
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR4H(X,XV,Param,P1,E,Q,MISC)
+C Run on a single time-step with the GR4H model
+C Inputs:
+C       X      Vector of model states at the beginning of the time-step [mm]
+C       XV     Vector of model states at the beginning of the time-step [mm]
+C       Param  Vector of model parameters [mixed units]
+C       P1     Value of rainfall during the time-step [mm]
+C       E      Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       X      Vector of model states at the end of the time-step [mm]
+C       XV     Vector of model states at the end of the time-step [mm]
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH,NMISC,NParam
+      PARAMETER (NPX=14,NH=480,NMISC=30)
+      PARAMETER (NParam=4)
+      DOUBLEPRECISION X(5*NH+7),XV(3*NPX+5*NH)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P1,E,Q
+      DOUBLEPRECISION A,B,EN,ER,PN,PR,PS,WS,tanHyp
+      DOUBLEPRECISION PERC,PRHU1,PRHU2,EXCH,QR,QD
+      DOUBLEPRECISION AE,AEXCH1,AEXCH2
+      INTEGER K
+
+      DATA B/0.9/
+
+      A=Param(1)
+
+
+C Production store
+      IF(P1.LE.E) THEN
+      EN=E-P1
+      PN=0.
+      WS=EN/A
+      IF(WS.GT.13)WS=13.
+      ER=X(2)*(2.-X(2)/A)*tanHyp(WS)/(1.+(1.-X(2)/A)*tanHyp(WS))
+      AE=ER+P1
+      IF(X(2).LT.ER) AE=X(2)+P1
+      X(2)=X(2)-ER
+      PR=0.
+      ELSE
+      EN=0.
+      AE=E
+      PN=P1-E
+      WS=PN/A
+      IF(WS.GT.13)WS=13.
+      PS=A*(1.-(X(2)/A)**2.)*tanHyp(WS)/(1.+X(2)/A*tanHyp(WS))
+      PR=PN-PS
+      X(2)=X(2)+PS
+      ENDIF
+
+C Percolation from production store
+      IF(X(2).LT.0.)X(2)=0.
+      PERC=X(2)*(1.-(1.+(X(2)/(21./4.*Param(1)))**4.)**(-0.25))
+      X(2)=X(2)-PERC
+
+      PR=PR+PERC
+
+      PRHU1=PR*B
+      PRHU2=PR*(1.-B)
+
+C Unit hydrograph HU1
+      DO K=1,MAX(1,MIN(NH-1,INT(Param(4)+1)))
+      X(7+K)=X(8+K)+XV(3*NPX+K)*PRHU1
+      ENDDO
+      X(7+NH)=XV(3*NPX+NH)*PRHU1
+
+C Unit hydrograph HU2
+      DO K=1,MAX(1,MIN(2*NH-1,2*INT(Param(4)+1)))
+      X(7+NH+K)=X(8+NH+K)+XV(3*NPX+NH+K)*PRHU2
+      ENDDO
+      X(7+3*NH)=XV(3*NPX+3*NH)*PRHU2
+
+C Potential intercatchment semi-exchange
+      EXCH=Param(2)*(X(1)/Param(3))**3.5
+
+C Routing store
+      AEXCH1=EXCH
+      IF((X(1)+X(8)+EXCH).LT.0) AEXCH1=-X(1)-X(8)
+      X(1)=X(1)+X(8)+EXCH
+      IF(X(1).LT.0.)X(1)=0.
+      QR=X(1)*(1.-(1.+(X(1)/Param(3))**4.)**(-1./4.))
+      X(1)=X(1)-QR
+
+C Runoff from direct branch QD
+      AEXCH2=EXCH
+      IF((X(8+NH)+EXCH).LT.0) AEXCH2=-X(8+NH)
+      QD=MAX(0.,X(8+NH)+EXCH)
+
+C Total runoff
+      Q=QR+QD
+      IF(Q.LT.0.) Q=0.
+
+C Variables storage
+      MISC( 1)=E             ! PE     ! [numeric] potential evapotranspiration  [mm/h]
+      MISC( 2)=P1            ! Precip ! [numeric] total precipitation  [mm/h]
+      MISC( 3)=X(2)          ! Prod   ! [numeric] production store level (X(2)) [mm]
+      MISC( 4)=AE            ! AE     ! [numeric] actual evapotranspiration [mm/h]
+      MISC( 5)=PERC          ! Perc   ! [numeric] percolation (PERC) [mm]
+      MISC( 6)=PR            ! PR     ! [numeric] PR=PN-PS+PERC [mm]
+      MISC( 7)=X(8)          ! Q9     ! [numeric] outflow from HU1 (Q9) [mm/h]
+      MISC( 8)=X(8+NH)       ! Q1     ! [numeric] outflow from HU2 (Q1) [mm/h]
+      MISC( 9)=X(1)          ! Rout   ! [numeric] routing store level (X(1)) [mm]
+      MISC(10)=EXCH          ! Exch   ! [numeric] potential semi-exchange between catchments (EXCH) [mm/h]
+      MISC(11)=AEXCH1+AEXCH2 ! AExch  ! [numeric] actual total exchange between catchments (AEXCH1+AEXCH2) [mm/h]
+      MISC(12)=QR            ! QR     ! [numeric] outflow from routing store (QR) [mm/h]
+      MISC(13)=QD            ! QD     ! [numeric] outflow from HU2 branch after exchange (QD) [mm/h]
+      MISC(14)=Q             ! Qsim   ! [numeric] outflow at catchment outlet [mm/h]
+
+
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/frun_GR4J.f b/src/frun_GR4J.f
new file mode 100644
index 00000000..953e7647
--- /dev/null
+++ b/src/frun_GR4J.f
@@ -0,0 +1,225 @@
+
+
+      SUBROUTINE frun_GR4J(
+                                 !inputs
+     &                             LInputs      , ! [integer] length of input and output series
+     &                             InputsPrecip , ! [double]  input series of total precipitation [mm]
+     &                             InputsPE     , ! [double]  input series PE [mm]
+     &                             NParam       , ! [integer] number of model parameter
+     &                             Param        , ! [double]  parameter set
+     &                             NStates      , ! [integer] number of state variables used for model initialising
+     &                             StateStart   , ! [double]  state variables used when the model run starts (reservoir levels [mm] and HU)
+     &                             NOutputs     , ! [integer] number of output series
+     &                             IndOutputs   , ! [integer] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [double]  output series
+     &                             StateEnd     ) ! [double]  state variables at the end of the model run  (reservoir levels [mm] and HU)
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr4j
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NPX,NH,NMISC
+      parameter (NPX=14,NH=20,NMISC=30)
+      doubleprecision X(5*NH+7),XV(3*NPX+5*NH)
+      doubleprecision MISC(NMISC)
+      doubleprecision D
+      doubleprecision P1,E,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation of model states to zero
+      X=0.
+      XV=0.
+
+      !initilisation of model states using StateStart
+      DO I=1,3*NH
+      X(I)=StateStart(I)
+      ENDDO
+
+      !parameter values
+      !Param(1) : production store capacity (X1 - PROD) [mm]
+      !Param(2) : intercatchment exchange constant (X2 - CES) [mm/d]
+      !Param(3) : routing store capacity (X3 - ROUT) [mm]
+      !Param(4) : time constant of unit hydrograph (X4 - TB) [d]
+
+      !computation of HU ordinates
+      D=2.5
+      CALL HU1(XV,Param(4),D)
+      CALL HU2(XV,Param(4),D)
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+        P1=InputsPrecip(k)
+        E =InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR4J(X,XV,Param,P1,E,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+      !model states at the end of the run
+      DO K=1,3*NH
+      StateEnd(K)=X(K)
+      ENDDO
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR4J(X,XV,Param,P1,E,Q,MISC)
+C Run on a single time-step with the GR4J model
+C Inputs:
+C       X      Vector of model states at the beginning of the time-step [mm]
+C       XV     Vector of model states at the beginning of the time-step [mm]
+C       Param  Vector of model parameters [mixed units]
+C       P1     Value of rainfall during the time-step [mm]
+C       E      Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       X      Vector of model states at the end of the time-step [mm]
+C       XV     Vector of model states at the end of the time-step [mm]
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH,NMISC,NParam
+      PARAMETER (NPX=14,NH=20,NMISC=30)
+      PARAMETER (NParam=4)
+      DOUBLEPRECISION X(5*NH+7),XV(3*NPX+5*NH)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P1,E,Q
+      DOUBLEPRECISION A,B,EN,ER,PN,PR,PS,WS,tanHyp
+      DOUBLEPRECISION PERC,PRHU1,PRHU2,EXCH,QR,QD
+      DOUBLEPRECISION AE,AEXCH1,AEXCH2
+      INTEGER K
+
+      DATA B/0.9/
+
+      A=Param(1)
+
+
+C Production store
+      IF(P1.LE.E) THEN
+      EN=E-P1
+      PN=0.
+      WS=EN/A
+      IF(WS.GT.13)WS=13.
+      ER=X(2)*(2.-X(2)/A)*tanHyp(WS)/(1.+(1.-X(2)/A)*tanHyp(WS))
+      AE=ER+P1
+      IF(X(2).LT.ER) AE=X(2)+P1
+      X(2)=X(2)-ER
+      PR=0.
+      ELSE
+      EN=0.
+      AE=E
+      PN=P1-E
+      WS=PN/A
+      IF(WS.GT.13)WS=13.
+      PS=A*(1.-(X(2)/A)**2.)*tanHyp(WS)/(1.+X(2)/A*tanHyp(WS))
+      PR=PN-PS
+      X(2)=X(2)+PS
+      ENDIF
+
+C Percolation from production store
+      IF(X(2).LT.0.)X(2)=0.
+      PERC=X(2)*(1.-(1.+(X(2)/(9./4.*Param(1)))**4.)**(-0.25))
+      X(2)=X(2)-PERC
+
+      PR=PR+PERC
+
+      PRHU1=PR*B
+      PRHU2=PR*(1.-B)
+
+C Unit hydrograph HU1
+      DO K=1,MAX(1,MIN(NH-1,INT(Param(4)+1)))
+      X(7+K)=X(8+K)+XV(3*NPX+K)*PRHU1
+      ENDDO
+      X(7+NH)=XV(3*NPX+NH)*PRHU1
+
+C Unit hydrograph HU2
+      DO K=1,MAX(1,MIN(2*NH-1,2*INT(Param(4)+1)))
+      X(7+NH+K)=X(8+NH+K)+XV(3*NPX+NH+K)*PRHU2
+      ENDDO
+      X(7+3*NH)=XV(3*NPX+3*NH)*PRHU2
+
+C Potential intercatchment semi-exchange
+      EXCH=Param(2)*(X(1)/Param(3))**3.5
+
+C Routing store
+      AEXCH1=EXCH
+      IF((X(1)+X(8)+EXCH).LT.0) AEXCH1=-X(1)-X(8)
+      X(1)=X(1)+X(8)+EXCH
+      IF(X(1).LT.0.)X(1)=0.
+      QR=X(1)*(1.-(1.+(X(1)/Param(3))**4.)**(-1./4.))
+      X(1)=X(1)-QR
+
+C Runoff from direct branch QD
+      AEXCH2=EXCH
+      IF((X(8+NH)+EXCH).LT.0) AEXCH2=-X(8+NH)
+      QD=MAX(0.,X(8+NH)+EXCH)
+
+C Total runoff
+      Q=QR+QD
+      IF(Q.LT.0.) Q=0.
+
+C Variables storage
+      MISC( 1)=E             ! PE     ! potential evapotranspiration  [mm/d]
+      MISC( 2)=P1            ! Precip ! total precipitation  [mm/d]
+      MISC( 3)=X(2)          ! Prod   ! production store level (X(2)) [mm]
+      MISC( 4)=AE            ! AE     ! actual evapotranspiration [mm/d]
+      MISC( 5)=PERC          ! Perc   ! percolation (PERC) [mm]
+      MISC( 6)=PR            ! PR     ! PR=PN-PS+PERC [mm]
+      MISC( 7)=X(8)          ! Q9     ! outflow from HU1 (Q9) [mm/d]
+      MISC( 8)=X(8+NH)       ! Q1     ! outflow from HU2 (Q1) [mm/d]
+      MISC( 9)=X(1)          ! Rout   ! routing store level (X(1)) [mm]
+      MISC(10)=EXCH          ! Exch   ! potential semi-exchange between catchments (EXCH) [mm/d]
+      MISC(11)=AEXCH1+AEXCH2 ! AExch  ! actual total exchange between catchments (AEXCH1+AEXCH2) [mm/d]
+      MISC(12)=QR            ! QR     ! outflow from routing store (QR) [mm/d]
+      MISC(13)=QD            ! QD     ! outflow from HU2 branch after exchange (QD) [mm/d]
+      MISC(14)=Q             ! Qsim   ! outflow at catchment outlet [mm/d]
+
+
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/frun_GR5J.f b/src/frun_GR5J.f
new file mode 100644
index 00000000..4b7b7351
--- /dev/null
+++ b/src/frun_GR5J.f
@@ -0,0 +1,226 @@
+
+
+      SUBROUTINE frun_GR5J(
+                                 !inputs
+     &                             LInputs      , ! [integer] length of input and output series
+     &                             InputsPrecip , ! [double]  input series of total precipitation [mm]
+     &                             InputsPE     , ! [double]  input series PE [mm]
+     &                             NParam       , ! [integer] number of model parameter
+     &                             Param        , ! [double]  parameter set
+     &                             NStates      , ! [integer] number of state variables used for model initialising
+     &                             StateStart   , ! [double]  state variables used when the model run starts (reservoir levels [mm] and HU)
+     &                             NOutputs     , ! [integer] number of output series
+     &                             IndOutputs   , ! [integer] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [double]  output series
+     &                             StateEnd     ) ! [double]  state variables at the end of the model run  (reservoir levels [mm] and HU)
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr5j
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NPX,NH,NMISC
+      parameter (NPX=14,NH=20,NMISC=30)
+      doubleprecision X(5*NH+7),XV(3*NPX+5*NH)
+      doubleprecision MISC(NMISC)
+      doubleprecision D
+      doubleprecision P1,E,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation of model states to zero
+      X=0.
+      XV=0.
+
+      !initilisation of model states using StateStart
+      DO I=1,3*NH
+      X(I)=StateStart(I)
+      ENDDO
+
+      !parameter values
+      !Param(1) : production store capacity (X1 - PROD) [mm]
+      !Param(2) : intercatchment exchange constant (X2 - CES1) [mm/d]
+      !Param(3) : routing store capacity (X3 - ROUT) [mm]
+      !Param(4) : time constant of unit hydrograph (X4 - TB) [d]
+      !Param(5) : intercatchment exchange constant (X5 - CES2) [-]
+
+      !computation of HU ordinates
+      D=2.5
+      CALL HU1(XV,Param(4),D)
+      CALL HU2(XV,Param(4),D)
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+        P1=InputsPrecip(k)
+        E =InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR5J(X,XV,Param,P1,E,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+      !model states at the end of the run
+      DO K=1,3*NH
+      StateEnd(K)=X(K)
+      ENDDO
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR5J(X,XV,Param,P1,E,Q,MISC)
+C Run on a single time-step with the GR5J model
+C Inputs:
+C       X      Vector of model states at the beginning of the time-step [mm]
+C       XV     Vector of model states at the beginning of the time-step [mm]
+C       Param  Vector of model parameters [mixed units]
+C       P1     Value of rainfall during the time-step [mm]
+C       E      Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       X      Vector of model states at the end of the time-step [mm]
+C       XV     Vector of model states at the end of the time-step [mm]
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH,NMISC,NParam
+      PARAMETER (NPX=14,NH=20,NMISC=30)
+      PARAMETER (NParam=5)
+      DOUBLEPRECISION X(5*NH+7),XV(3*NPX+5*NH)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P1,E,Q
+      DOUBLEPRECISION A,B,EN,ER,PN,PR,PS,WS,tanHyp
+      DOUBLEPRECISION PERC,PRHU1,PRHU2,EXCH,QR,QD
+      DOUBLEPRECISION AE,AEXCH1,AEXCH2
+      INTEGER K
+
+      DATA B/0.9/
+
+      A=Param(1)
+
+
+C Production store
+      IF(P1.LE.E) THEN
+      EN=E-P1
+      PN=0.
+      WS=EN/A
+      IF(WS.GT.13)WS=13.
+      ER=X(2)*(2.-X(2)/A)*tanHyp(WS)/(1.+(1.-X(2)/A)*tanHyp(WS))
+      AE=ER+P1
+      IF(X(2).LT.ER) AE=X(2)+P1
+      X(2)=X(2)-ER
+      PR=0.
+      ELSE
+      EN=0.
+      AE=E
+      PN=P1-E
+      WS=PN/A
+      IF(WS.GT.13)WS=13.
+      PS=A*(1.-(X(2)/A)**2.)*tanHyp(WS)/(1.+X(2)/A*tanHyp(WS))
+      PR=PN-PS
+      X(2)=X(2)+PS
+      ENDIF
+
+C Percolation from production store
+      IF(X(2).LT.0.)X(2)=0.
+      PERC=X(2)*(1.-(1.+(X(2)/(9./4.*Param(1)))**4.)**(-0.25))
+      X(2)=X(2)-PERC
+
+      PR=PR+PERC
+
+      PRHU1=PR*B
+      PRHU2=PR*(1.-B)
+
+C Unit hydrograph HU1
+      DO K=1,MAX(1,MIN(NH-1,INT(Param(4)+1)))
+      X(7+K)=X(8+K)+XV(3*NPX+K)*PRHU1
+      ENDDO
+      X(7+NH)=XV(3*NPX+NH)*PRHU1
+
+C Unit hydrograph HU2
+      DO K=1,MAX(1,MIN(2*NH-1,2*INT(Param(4)+1)))
+      X(7+NH+K)=X(8+NH+K)+XV(3*NPX+NH+K)*PRHU2
+      ENDDO
+      X(7+3*NH)=XV(3*NPX+3*NH)*PRHU2
+
+C Potential intercatchment semi-exchange
+      EXCH=Param(2)*(X(1)/Param(3)-Param(5))
+
+C Routing store
+      AEXCH1=EXCH
+      IF((X(1)+X(8)+EXCH).LT.0) AEXCH1=-X(1)-X(8)
+      X(1)=X(1)+X(8)+EXCH
+      IF(X(1).LT.0.)X(1)=0.
+      QR=X(1)*(1.-(1.+(X(1)/Param(3))**4.)**(-1./4.))
+      X(1)=X(1)-QR
+
+C Runoff from direct branch QD
+      AEXCH2=EXCH
+      IF((X(8+NH)+EXCH).LT.0) AEXCH2=-X(8+NH)
+      QD=MAX(0.,X(8+NH)+EXCH)
+
+C Total runoff
+      Q=QR+QD
+      IF(Q.LT.0.) Q=0.
+
+C Variables storage
+      MISC( 1)=E             ! PE     ! potential evapotranspiration  [mm/d]
+      MISC( 2)=P1            ! Precip ! total precipitation  [mm/d]
+      MISC( 3)=X(2)          ! Prod   ! production store level (X(2)) [mm]
+      MISC( 4)=AE            ! AE     ! actual evapotranspiration [mm/d]
+      MISC( 5)=PERC          ! Perc   ! percolation (PERC) [mm]
+      MISC( 6)=PR            ! PR     ! PR=PN-PS+PERC [mm]
+      MISC( 7)=X(8)          ! Q9     ! outflow from HU1 (Q9) [mm/d]
+      MISC( 8)=X(8+NH)       ! Q1     ! outflow from HU2 (Q1) [mm/d]
+      MISC( 9)=X(1)          ! Rout   ! routing store level (X(1)) [mm]
+      MISC(10)=EXCH          ! Exch   ! potential semi-exchange between catchments (EXCH) [mm/d]
+      MISC(11)=AEXCH1+AEXCH2 ! AExch  ! actual total exchange between catchments (AEXCH1+AEXCH2) [mm/d]
+      MISC(12)=QR            ! QR     ! outflow from routing store (QR) [mm/d]
+      MISC(13)=QD            ! QD     ! outflow from HU2 branch after exchange (QD) [mm/d]
+      MISC(14)=Q             ! Qsim   ! outflow at catchment outlet [mm/d]
+
+
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/frun_GR6J.f b/src/frun_GR6J.f
new file mode 100644
index 00000000..9d7f9373
--- /dev/null
+++ b/src/frun_GR6J.f
@@ -0,0 +1,249 @@
+
+
+      SUBROUTINE frun_GR6J(
+                                 !inputs
+     &                             LInputs      , ! [integer] length of input and output series
+     &                             InputsPrecip , ! [double]  input series of total precipitation [mm]
+     &                             InputsPE     , ! [double]  input series PE [mm]
+     &                             NParam       , ! [integer] number of model parameter
+     &                             Param        , ! [double]  parameter set
+     &                             NStates      , ! [integer] number of state variables used for model initialising
+     &                             StateStart   , ! [double]  state variables used when the model run starts (reservoir levels [mm] and HU)
+     &                             NOutputs     , ! [integer] number of output series
+     &                             IndOutputs   , ! [integer] indices of output series
+                                 !outputs
+     &                             Outputs      , ! [double]  output series
+     &                             StateEnd     ) ! [double]  state variables at the end of the model run  (reservoir levels [mm] and HU)
+
+
+      !DEC$ ATTRIBUTES DLLEXPORT :: frun_gr6j
+
+
+      Implicit None
+      !### input and output variables
+      integer, intent(in) :: LInputs,NParam,NStates,NOutputs
+      doubleprecision, dimension(LInputs)  :: InputsPrecip
+      doubleprecision, dimension(LInputs)  :: InputsPE
+      doubleprecision, dimension(NParam)   :: Param
+      doubleprecision, dimension(NStates)  :: StateStart
+      doubleprecision, dimension(NStates)  :: StateEnd
+      integer, dimension(NOutputs) :: IndOutputs
+      doubleprecision, dimension(LInputs,NOutputs) :: Outputs
+
+      !parameters, internal states and variables
+      integer NPX,NH,NMISC
+      parameter (NPX=14,NH=20,NMISC=30)
+      doubleprecision X(5*NH+7),XV(3*NPX+5*NH)
+      doubleprecision MISC(NMISC)
+      doubleprecision D
+      doubleprecision P1,E,Q
+      integer I,K
+
+      !--------------------------------------------------------------
+      !Initialisations
+      !--------------------------------------------------------------
+
+      !initilisation of model states to zero
+      X=0.
+      XV=0.
+
+      !initilisation of model states using StateStart
+      DO I=1,3*NH
+      X(I)=StateStart(I)
+      ENDDO
+
+      !parameter values
+      !Param(1) : production store capacity (X1 - PROD) [mm]
+      !Param(2) : intercatchment exchange constant (X2 - CES1) [mm/d]
+      !Param(3) : routing store capacity (X3 - ROUT) [mm]
+      !Param(4) : time constant of unit hydrograph (X4 - TB) [d]
+      !Param(5) : intercatchment exchange constant (X5 - CES2) [-]
+      !Param(6) : time constant of exponential store (X6 - EXP) [d]
+
+      !computation of HU ordinates
+      D=2.5
+      CALL HU1(XV,Param(4),D)
+      CALL HU2(XV,Param(4),D)
+
+      !initialisation of model outputs
+      Q = -999.999
+      MISC = -999.999
+c      StateEnd = -999.999 !initialisation made in R
+c      Outputs = -999.999  !initialisation made in R
+
+
+
+      !--------------------------------------------------------------
+      !Time loop
+      !--------------------------------------------------------------
+      DO k=1,LInputs
+        P1=InputsPrecip(k)
+        E =InputsPE(k)
+c        Q = -999.999
+c        MISC = -999.999
+        !model run on one time-step
+        CALL MOD_GR6J(X,XV,Param,P1,E,Q,MISC)
+        !storage of outputs
+        DO I=1,NOutputs
+        Outputs(k,I)=MISC(IndOutputs(I))
+        ENDDO
+      ENDDO
+      !model states at the end of the run
+      DO K=1,3*NH
+      StateEnd(K)=X(K)
+      ENDDO
+
+      RETURN
+
+      ENDSUBROUTINE
+
+
+
+
+
+c################################################################################################################################
+
+
+
+
+C**********************************************************************
+      SUBROUTINE MOD_GR6J(X,XV,Param,P1,E,Q,MISC)
+C Run on a single time-step with the GR6J model
+C Inputs:
+C       X      Vector of model states at the beginning of the time-step [mm]
+C       XV     Vector of model states at the beginning of the time-step [mm]
+C       Param  Vector of model parameters [mixed units]
+C       P1     Value of rainfall during the time-step [mm]
+C       E      Value of potential evapotranspiration during the time-step [mm]
+C Outputs:
+C       X      Vector of model states at the end of the time-step [mm]
+C       XV     Vector of model states at the end of the time-step [mm]
+C       Q      Value of simulated flow at the catchment outlet for the time-step [mm]
+C       MISC   Vector of model outputs for the time-step [mm]
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH,NMISC,NParam
+      PARAMETER (NPX=14,NH=20,NMISC=30)
+      PARAMETER (NParam=6)
+      DOUBLEPRECISION X(5*NH+7),XV(3*NPX+5*NH)
+      DOUBLEPRECISION Param(NParam)
+      DOUBLEPRECISION MISC(NMISC)
+      DOUBLEPRECISION P1,E,Q
+      DOUBLEPRECISION A,B,C,EN,ER,PN,PR,PS,WS,tanHyp,AR
+      DOUBLEPRECISION PERC,PRHU1,PRHU2,EXCH,QR,QD,QR1
+      DOUBLEPRECISION AE,AEXCH1,AEXCH2
+      INTEGER K
+
+      DATA B/0.9/
+      DATA C/0.4/
+
+      A=Param(1)
+
+
+C Production store
+      IF(P1.LE.E) THEN
+      EN=E-P1
+      PN=0.
+      WS=EN/A
+      IF(WS.GT.13)WS=13.
+      ER=X(2)*(2.-X(2)/A)*tanHyp(WS)/(1.+(1.-X(2)/A)*tanHyp(WS))
+      AE=ER+P1
+      IF(X(2).LT.ER) AE=X(2)+P1
+      X(2)=X(2)-ER
+      PR=0.
+      ELSE
+      EN=0.
+      AE=E
+      PN=P1-E
+      WS=PN/A
+      IF(WS.GT.13)WS=13.
+      PS=A*(1.-(X(2)/A)**2.)*tanHyp(WS)/(1.+X(2)/A*tanHyp(WS))
+      PR=PN-PS
+      X(2)=X(2)+PS
+      ENDIF
+
+C Percolation from production store
+      IF(X(2).LT.0.)X(2)=0.
+      PERC=X(2)*(1.-(1.+(X(2)/(9./4.*Param(1)))**4.)**(-0.25))
+      X(2)=X(2)-PERC
+
+      PR=PR+PERC
+
+      PRHU1=PR*B
+      PRHU2=PR*(1.-B)
+
+C Unit hydrograph HU1
+      DO K=1,MAX(1,MIN(NH-1,INT(Param(4)+1)))
+      X(7+K)=X(8+K)+XV(3*NPX+K)*PRHU1
+      ENDDO
+      X(7+NH)=XV(3*NPX+NH)*PRHU1
+
+C Unit hydrograph HU2
+      DO K=1,MAX(1,MIN(2*NH-1,2*INT(Param(4)+1)))
+      X(7+NH+K)=X(8+NH+K)+XV(3*NPX+NH+K)*PRHU2
+      ENDDO
+      X(7+3*NH)=XV(3*NPX+3*NH)*PRHU2
+
+C Potential intercatchment semi-exchange
+      EXCH=Param(2)*(X(1)/Param(3)-Param(5))
+
+C Routing store
+      AEXCH1=EXCH
+      IF((X(1)+X(8)+EXCH).LT.0) AEXCH1=-X(1)-X(8)
+      X(1)=X(1)+(1-C)*X(8)+EXCH
+      IF(X(1).LT.0.)X(1)=0.
+      QR=X(1)*(1.-(1.+(X(1)/Param(3))**4.)**(-1./4.))
+      X(1)=X(1)-QR
+
+C Update of exponential store
+      X(6)=X(6)+C*X(8)+EXCH
+      AR=X(6)/Param(6)
+      IF(AR.GT.33.)AR=33.
+      IF(AR.LT.-33.)AR=-33.
+
+      IF(AR.GT.7.)THEN
+      QR1=X(6)+Param(6)/EXP(AR)
+      GOTO 3
+      ENDIF
+
+      IF(AR.LT.-7.)THEN
+      QR1=Param(6)*EXP(AR)
+      GOTO 3
+      ENDIF
+
+      QR1=Param(6)*LOG(EXP(AR)+1.)
+    3 CONTINUE
+
+      X(6)=X(6)-QR1
+
+C Runoff from direct branch QD
+      AEXCH2=EXCH
+      IF((X(8+NH)+EXCH).LT.0) AEXCH2=-X(8+NH)
+      QD=MAX(0.,X(8+NH)+EXCH)
+
+C Total runoff
+      Q=QR+QD+QR1
+      IF(Q.LT.0.) Q=0.
+
+C Variables storage
+      MISC( 1)=E             ! PE     ! potential evapotranspiration  [mm/d]
+      MISC( 2)=P1            ! Precip ! total precipitation  [mm/d]
+      MISC( 3)=X(2)          ! Prod   ! production store level (X(2)) [mm]
+      MISC( 4)=AE            ! AE     ! actual evapotranspiration [mm/d]
+      MISC( 5)=PERC          ! Perc   ! percolation (PERC) [mm]
+      MISC( 6)=PR            ! PR     ! PR=PN-PS+PERC [mm]
+      MISC( 7)=X(8)          ! Q9     ! outflow from HU1 (Q9) [mm/d]
+      MISC( 8)=X(8+NH)       ! Q1     ! outflow from HU2 (Q1) [mm/d]
+      MISC( 9)=X(1)          ! Rout   ! routing store level (X(1)) [mm]
+      MISC(10)=EXCH          ! Exch   ! potential semi-exchange between catchments (EXCH) [mm/d]
+      MISC(11)=AEXCH1+AEXCH2 ! AExch  ! actual total exchange between catchments (AEXCH1+AEXCH2) [mm/d]
+      MISC(12)=QR            ! QR     ! outflow from routing store (QR) [mm/d]
+      MISC(13)=QR1           ! QR1    ! outflow from exponential store (QR1) [mm/d]
+      MISC(14)=X(6)          ! Exp    ! exponential store level (X(6)) (negative) [mm]
+      MISC(15)=QD            ! QD     ! outflow from HU2 branch after exchange (QD) [mm/d]
+      MISC(16)=Q             ! Qsim   ! outflow at catchment outlet [mm/d]
+
+
+      ENDSUBROUTINE
+
+
diff --git a/src/utils_D.f b/src/utils_D.f
new file mode 100644
index 00000000..2028bc71
--- /dev/null
+++ b/src/utils_D.f
@@ -0,0 +1,272 @@
+
+
+C**********************************************************************
+      SUBROUTINE HU1(XV,C,D)
+C Computation of ordinates of GR unit hydrograph HU1 using successives differences on the S curve SS1
+C Inputs:
+C    C: time constant
+C    D: exponent
+C Outputs:
+C    XV(3*NPX+1) to XV(3*NPX+NH): NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,D,SS1
+      INTEGER I
+
+      DO I=1,NH
+      XV(3*NPX+I)=SS1(I,C,D)-SS1(I-1,C,D)
+      ENDDO
+      ENDSUBROUTINE
+
+
+C**********************************************************************
+      SUBROUTINE HU2(XV,C,D)
+C Computation of ordinates of GR unit hydrograph HU2 using successives differences on the S curve SS2
+C Inputs:
+C    C: time constant
+C    D: exponent
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,D,SS2
+      INTEGER I
+
+      DO I =1,2*NH
+      XV(3*NPX+NH+I)=SS2(I,C,D)-SS2(I-1,C,D)
+      ENDDO
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE HU4(XV,ALPHA,BETA)
+C Computation of ordinates of MOHYSE unit hydrograph
+C Inputs:
+C    Alpha: parameter
+C    Beta:  parameter
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH),U(3*NH)
+      DOUBLEPRECISION ALPHA,BETA,SU
+      INTEGER K
+
+      SU=0.
+c      IF(ALPHA.LT.1.)THEN  
+c      WRITE(*,*)' Pb ALPHA'
+c      STOP                 
+c      ENDIF                
+      IF(ALPHA.EQ.1.)THEN
+      U(1)=1.
+      SU=1.
+      DO 1 K=2,3*NH
+      U(K)=0.
+    1 CONTINUE
+      ELSE
+      DO 11 K=1,3*NH
+      U(K)=FLOAT(K)*(ALPHA-1.)*EXP(-FLOAT(K)/BETA)
+      SU=SU+U(K)
+   11 CONTINUE
+      ENDIF
+
+c      IF(SU.LT.0.0000000001)THEN       
+c      WRITE(*,*)' Pb HU4',ALPHA, BETA  
+c      STOP                             
+c      ENDIF                            
+      DO 2 K=1,3*NH
+      XV(3*NPX+K)=U(K)/SU
+    2 CONTINUE
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE HU(XV,C)
+C Computation of ordinates of GRP unit hydrograph
+C Inputs:
+C    C: time constant
+C    Alpha: parameter
+C    Beta:  parameter
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C
+      DOUBLEPRECISION SH
+      INTEGER I
+      DO 10 I=1,2*NH
+      XV(3*NPX+NH+I)=SH(I,C)-SH(I-1,C)
+   10 CONTINUE
+      RETURN
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      FUNCTION SH(I,C)
+C Values of the S curve (cumulative HU curve) of GRP unit hydrograph HU
+C Inputs:
+C    C: time constant
+C    I: time-step
+C Outputs:
+C    SH: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION C
+      DOUBLEPRECISION SH,FI
+      INTEGER I
+      
+      FI=I
+      IF(FI.LE.0.)THEN
+      SH=0.
+      RETURN
+      ENDIF
+      IF(FI.GE.C)THEN
+      SH=1.
+      RETURN
+      ENDIF
+      SH=FI**2.5/(FI**2.5+(C-FI)**2.5)
+      RETURN
+      ENDFUNCTION
+
+
+C**********************************************************************
+      FUNCTION SS1(I,C,D)
+C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU1
+C Inputs:
+C    C: time constant
+C    D: exponent
+C    I: time-step
+C Outputs:
+C    SS1: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      DOUBLEPRECISION C,D,SS1
+      INTEGER I,FI
+
+      FI=I
+      IF(FI.LE.0.) THEN
+      SS1=0.
+      RETURN
+      ENDIF
+      IF(FI.LT.C) THEN
+      SS1=(FI/C)**D
+      RETURN
+      ENDIF
+      SS1=1.
+      ENDFUNCTION
+
+
+C**********************************************************************
+      FUNCTION SS2(I,C,D)
+C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU2
+C Inputs:
+C    C: time constant
+C    D: exponent
+C    I: time-step
+C Outputs:
+C    SS2: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      DOUBLEPRECISION C,D,SS2
+      INTEGER I,FI
+
+      FI=I
+      IF(FI.LE.0.) THEN
+      SS2=0.
+      RETURN
+      ENDIF
+      IF(FI.LE.C) THEN
+      SS2=0.5*(FI/C)**D
+      RETURN
+      ENDIF
+      IF(FI.LT.2.*C) THEN
+      SS2=1.-0.5*(2.-FI/C)**D
+      RETURN
+      ENDIF
+      SS2=1.
+      ENDFUNCTION
+
+
+
+C**********************************************************************
+      SUBROUTINE DEL(XV,C)
+C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
+C (all ordinates are nul except 2 at max)
+C Inputs:
+C    C: time constant
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,F
+      INTEGER I,K
+      I=INT(C)
+      F=C-INT(C)
+      DO 1 K=3*NPX+1,3*NPX+3*NH
+      XV(K)=0.
+    1 CONTINUE
+      XV(3*NPX+I)=1.-F
+      XV(3*NPX+I+1)=F
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE DEL2(XV,C)
+C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
+C (all ordinates are nul except 2 at max)
+C Inputs:
+C    C: time constant
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=20)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,F
+      INTEGER K,I
+      
+      IF(C.GT.FLOAT(NH)) C=FLOAT(NH)
+      I=INT(C)
+      F=C-INT(C)
+      DO 1 K=3*NPX+1,3*NPX+NH
+      XV(K)=0.
+    1 CONTINUE
+      XV(3*NPX+I)=1.-F
+      XV(3*NPX+I+1)=F
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      FUNCTION tanHyp(Val)
+C Computation of hyperbolic tangent
+C**********************************************************************
+      Implicit None
+      DOUBLEPRECISION Val,ValExp,tanHyp
+
+      ValExp=EXP(Val)
+      tanHyp=(ValExp - 1./ValExp)/(ValExp + 1./ValExp)
+      RETURN
+      ENDFUNCTION
+
diff --git a/src/utils_H.f b/src/utils_H.f
new file mode 100644
index 00000000..56ba8e99
--- /dev/null
+++ b/src/utils_H.f
@@ -0,0 +1,272 @@
+
+
+C**********************************************************************
+      SUBROUTINE HU1_H(XV,C,D)
+C Computation of ordinates of GR unit hydrograph HU1 using successives differences on the S curve SS1
+C Inputs:
+C    C: time constant
+C    D: exponent
+C Outputs:
+C    XV(3*NPX+1) to XV(3*NPX+NH): NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,D,SS1_H
+      INTEGER I
+
+      DO I=1,NH
+      XV(3*NPX+I)=SS1_H(I,C,D)-SS1_H(I-1,C,D)
+      ENDDO
+      ENDSUBROUTINE
+
+
+C**********************************************************************
+      SUBROUTINE HU2_H(XV,C,D)
+C Computation of ordinates of GR unit hydrograph HU2 using successives differences on the S curve SS2
+C Inputs:
+C    C: time constant
+C    D: exponent
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,D,SS2_H
+      INTEGER I
+
+      DO I =1,2*NH
+      XV(3*NPX+NH+I)=SS2_H(I,C,D)-SS2_H(I-1,C,D)
+      ENDDO
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE HU4_H(XV,ALPHA,BETA)
+C Computation of ordinates of MOHYSE unit hydrograph
+C Inputs:
+C    Alpha: parameter
+C    Beta:  parameter
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH),U(3*NH)
+      DOUBLEPRECISION ALPHA,BETA,SU
+      INTEGER K
+
+      SU=0.
+c      IF(ALPHA.LT.1.)THEN  
+c      WRITE(*,*)' Pb ALPHA'
+c      STOP                 
+c      ENDIF                
+      IF(ALPHA.EQ.1.)THEN
+      U(1)=1.
+      SU=1.
+      DO 1 K=2,3*NH
+      U(K)=0.
+    1 CONTINUE
+      ELSE
+      DO 11 K=1,3*NH
+      U(K)=FLOAT(K)*(ALPHA-1.)*EXP(-FLOAT(K)/BETA)
+      SU=SU+U(K)
+   11 CONTINUE
+      ENDIF
+
+c      IF(SU.LT.0.0000000001)THEN       
+c      WRITE(*,*)' Pb HU4',ALPHA, BETA  
+c      STOP                             
+c      ENDIF                            
+      DO 2 K=1,3*NH
+      XV(3*NPX+K)=U(K)/SU
+    2 CONTINUE
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE HU_H(XV,C)
+C Computation of ordinates of GRP unit hydrograph
+C Inputs:
+C    C: time constant
+C    Alpha: parameter
+C    Beta:  parameter
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C
+      DOUBLEPRECISION SH_H
+      INTEGER I
+      DO 10 I=1,2*NH
+      XV(3*NPX+NH+I)=SH_H(I,C)-SH_H(I-1,C)
+   10 CONTINUE
+      RETURN
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      FUNCTION SH_H(I,C)
+C Values of the S curve (cumulative HU curve) of GRP unit hydrograph HU
+C Inputs:
+C    C: time constant
+C    I: time-step
+C Outputs:
+C    SH: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION C
+      DOUBLEPRECISION SH_H,FI
+      INTEGER I
+      
+      FI=I
+      IF(FI.LE.0.)THEN
+      SH_H=0.
+      RETURN
+      ENDIF
+      IF(FI.GE.C)THEN
+      SH_H=1.
+      RETURN
+      ENDIF
+      SH_H=FI**2.5/(FI**2.5+(C-FI)**2.5)
+      RETURN
+      ENDFUNCTION
+
+
+C**********************************************************************
+      FUNCTION SS1_H(I,C,D)
+C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU1
+C Inputs:
+C    C: time constant
+C    D: exponent
+C    I: time-step
+C Outputs:
+C    SS1: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      DOUBLEPRECISION C,D,SS1_H
+      INTEGER I,FI
+
+      FI=I
+      IF(FI.LE.0.) THEN
+      SS1_H=0.
+      RETURN
+      ENDIF
+      IF(FI.LT.C) THEN
+      SS1_H=(FI/C)**D
+      RETURN
+      ENDIF
+      SS1_H=1.
+      ENDFUNCTION
+
+
+C**********************************************************************
+      FUNCTION SS2_H(I,C,D)
+C Values of the S curve (cumulative HU curve) of GR unit hydrograph HU2
+C Inputs:
+C    C: time constant
+C    D: exponent
+C    I: time-step
+C Outputs:
+C    SS2: Values of the S curve for I
+C**********************************************************************
+      Implicit None
+      DOUBLEPRECISION C,D,SS2_H
+      INTEGER I,FI
+
+      FI=I
+      IF(FI.LE.0.) THEN
+      SS2_H=0.
+      RETURN
+      ENDIF
+      IF(FI.LE.C) THEN
+      SS2_H=0.5*(FI/C)**D
+      RETURN
+      ENDIF
+      IF(FI.LT.2.*C) THEN
+      SS2_H=1.-0.5*(2.-FI/C)**D
+      RETURN
+      ENDIF
+      SS2_H=1.
+      ENDFUNCTION
+
+
+
+C**********************************************************************
+      SUBROUTINE DEL_H(XV,C)
+C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
+C (all ordinates are nul except 2 at max)
+C Inputs:
+C    C: time constant
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): 2*NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,F
+      INTEGER I,K
+      I=INT(C)
+      F=C-INT(C)
+      DO 1 K=3*NPX+1,3*NPX+3*NH
+      XV(K)=0.
+    1 CONTINUE
+      XV(3*NPX+I)=1.-F
+      XV(3*NPX+I+1)=F
+      ENDSUBROUTINE
+
+
+
+C**********************************************************************
+      SUBROUTINE DEL2_H(XV,C)
+C Computation of HU ordinates corresponding to a time lag of a given number (possibly non-integer) of time-steps
+C (all ordinates are nul except 2 at max)
+C Inputs:
+C    C: time constant
+C Outputs:
+C    XV(3*NPX+NH+1) to XV(3*NPX+3*NH): NH ordinates of discrete hydrograph
+C**********************************************************************
+      Implicit None
+      INTEGER NPX,NH
+      PARAMETER (NPX=14,NH=480)
+      DOUBLEPRECISION XV(3*NPX+5*NH)
+      DOUBLEPRECISION C,F
+      INTEGER K,I
+      
+      IF(C.GT.FLOAT(NH)) C=FLOAT(NH)
+      I=INT(C)
+      F=C-INT(C)
+      DO 1 K=3*NPX+1,3*NPX+NH
+      XV(K)=0.
+    1 CONTINUE
+      XV(3*NPX+I)=1.-F
+      XV(3*NPX+I+1)=F
+      ENDSUBROUTINE
+
+
+
+cC**********************************************************************
+c      FUNCTION tanHyp_H(Val)
+cC Computation of hyperbolic tangent
+cC**********************************************************************
+c      Implicit None
+c      DOUBLEPRECISION Val,ValExp,tanHyp_H
+c
+c      ValExp=EXP(Val)
+c      tanHyp_H=(ValExp - 1./ValExp)/(ValExp + 1./ValExp)
+c      RETURN
+c      ENDFUNCTION
+
diff --git a/tests/example_Calibration.R b/tests/example_Calibration.R
new file mode 100644
index 00000000..8583f78c
--- /dev/null
+++ b/tests/example_Calibration.R
@@ -0,0 +1,48 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_HBAN)
+
+## calibration
+OutputsCalib <- Calibration(InputsModel=InputsModel,RunOptions=RunOptions,InputsCrit=InputsCrit,
+                            CalibOptions=CalibOptions,FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE,
+                            FUN_CALIB=Calibration_HBAN)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+
diff --git a/tests/example_Calibration_HBAN.R b/tests/example_Calibration_HBAN.R
new file mode 100644
index 00000000..75b7832f
--- /dev/null
+++ b/tests/example_Calibration_HBAN.R
@@ -0,0 +1,46 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_HBAN)
+
+## calibration
+OutputsCalib <- Calibration_HBAN(InputsModel=InputsModel,RunOptions=RunOptions,
+                                 InputsCrit=InputsCrit,CalibOptions=CalibOptions,
+                                 FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_Calibration_optim.R b/tests/example_Calibration_optim.R
new file mode 100644
index 00000000..f08ec410
--- /dev/null
+++ b/tests/example_Calibration_optim.R
@@ -0,0 +1,45 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## calibration period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## calibration criterion: preparation of the InputsCrit object
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+
+## preparation of CalibOptions object
+CalibOptions <- CreateCalibOptions(FUN_MOD=RunModel_GR4J,FUN_CALIB=Calibration_optim)
+
+## calibration
+OutputsCalib <- Calibration_optim(InputsModel=InputsModel,RunOptions=RunOptions,
+                                  InputsCrit=InputsCrit,CalibOptions=CalibOptions,
+                                  FUN_MOD=RunModel_GR4J,FUN_CRIT=ErrorCrit_NSE)
+
+## simulation
+Param <- OutputsCalib$ParamFinalR
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
diff --git a/tests/example_ErrorCrit.R b/tests/example_ErrorCrit.R
new file mode 100644
index 00000000..c19c5105
--- /dev/null
+++ b/tests/example_ErrorCrit.R
@@ -0,0 +1,61 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,
+                         Param=Param,FUN=RunModel_GR4J)
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency on log-transformed flows
+transfo <- "log"
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],transfo=transfo)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Nash-Sutcliffe Efficiency above a threshold (q75%)
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]<quantile(BasinObs$Qmm[Ind_Run],0.75,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit)
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,
+                               RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\n",sep=""))
+
+## efficiency criterion: Kling-Gupta Efficiency below a threshold (q10%) on log-trqansformed flows
+transfo  <- "log"
+BoolCrit <- rep(TRUE,length(BasinObs$Qmm[Ind_Run])); 
+BoolCrit[BasinObs$Qmm[Ind_Run]>quantile(BasinObs$Qmm[Ind_Run],0.10,na.rm=TRUE)] <- FALSE;
+InputsCrit <- CreateInputsCrit(FUN_CRIT=ErrorCrit_KGE,InputsModel=InputsModel,RunOptions=RunOptions,
+                               Qobs=BasinObs$Qmm[Ind_Run],BoolCrit=BoolCrit,transfo=transfo)
+OutputsCrit <- ErrorCrit_KGE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+cat(paste("SubCrit  ",OutputsCrit$SubCritNames,"  ",round(OutputsCrit$SubCritValues,4),"\n",sep=""))
+
+
+
+
diff --git a/tests/example_RunModel.R b/tests/example_RunModel.R
new file mode 100644
index 00000000..b240b8cf
--- /dev/null
+++ b/tests/example_RunModel.R
@@ -0,0 +1,29 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_CemaNeige.R b/tests/example_RunModel_CemaNeige.R
new file mode 100644
index 00000000..134bd7d7
--- /dev/null
+++ b/tests/example_RunModel_CemaNeige.R
@@ -0,0 +1,25 @@
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeige,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeige,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(0.962,2.249)
+OutputsModel <- RunModel_CemaNeige(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel)
+
diff --git a/tests/example_RunModel_CemaNeigeGR4J.R b/tests/example_RunModel_CemaNeigeGR4J.R
new file mode 100644
index 00000000..6ed335ae
--- /dev/null
+++ b/tests/example_RunModel_CemaNeigeGR4J.R
@@ -0,0 +1,31 @@
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR4J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(408.774,2.646,131.264,1.174,0.962,2.249)
+OutputsModel <- RunModel_CemaNeigeGR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_CemaNeigeGR5J.R b/tests/example_RunModel_CemaNeigeGR5J.R
new file mode 100644
index 00000000..f543b5d5
--- /dev/null
+++ b/tests/example_RunModel_CemaNeigeGR5J.R
@@ -0,0 +1,31 @@
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR5J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR5J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(179.139,-0.100,203.815,1.174,2.478,0.977,2.774)
+OutputsModel <- RunModel_CemaNeigeGR5J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_CemaNeigeGR6J.R b/tests/example_RunModel_CemaNeigeGR6J.R
new file mode 100644
index 00000000..a24e2098
--- /dev/null
+++ b/tests/example_RunModel_CemaNeigeGR6J.R
@@ -0,0 +1,31 @@
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR6J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 ZInputs=BasinInfo$HypsoData[51],HypsoData=BasinInfo$HypsoData,
+                                 NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR6J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(116.482,0.500,72.733,1.224,0.278,30.333,0.977,2.776)
+OutputsModel <- RunModel_CemaNeigeGR6J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR1A.R b/tests/example_RunModel_GR1A.R
new file mode 100644
index 00000000..35779d49
--- /dev/null
+++ b/tests/example_RunModel_GR1A.R
@@ -0,0 +1,40 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## conversion of example data from daily to yearly time-step
+TabSeries       <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat      <- "daily"
+NewTimeFormat   <- "yearly"
+ConvertFun      <- c("sum","sum","mean","sum")
+YearFirstMonth  <- 09;
+NewTabSeries    <- SeriesAggreg(TabSeries=TabSeries,TimeFormat=TimeFormat,
+                                NewTimeFormat=NewTimeFormat,ConvertFun=ConvertFun,
+                                YearFirstMonth=YearFirstMonth)
+BasinObs        <- NewTabSeries
+names(BasinObs) <- c("DatesR","P","E","T","Qmm")
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR1A,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%Y")=="1990"),
+               which(format(BasinObs$DatesR,format="%Y")=="1999"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR1A,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(0.840)
+OutputsModel <- RunModel_GR1A(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR2M.R b/tests/example_RunModel_GR2M.R
new file mode 100644
index 00000000..6ac7e261
--- /dev/null
+++ b/tests/example_RunModel_GR2M.R
@@ -0,0 +1,38 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## conversion of example data from daily to monthly time-step
+TabSeries       <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat      <- "daily"
+NewTimeFormat   <- "monthly"
+ConvertFun      <- c("sum","sum","mean","sum")
+NewTabSeries    <- SeriesAggreg(TabSeries=TabSeries,TimeFormat=TimeFormat,
+                                NewTimeFormat=NewTimeFormat,ConvertFun=ConvertFun)
+BasinObs        <- NewTabSeries
+names(BasinObs) <- c("DatesR","P","E","T","Qmm")
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR2M,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%m/%Y")=="01/1990"),
+               which(format(BasinObs$DatesR,format="%m/%Y")=="12/1999"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR2M,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(265.072,1.040)
+OutputsModel <- RunModel_GR2M(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR4H.R b/tests/example_RunModel_GR4H.R
new file mode 100644
index 00000000..af99a43a
--- /dev/null
+++ b/tests/example_RunModel_GR4H.R
@@ -0,0 +1,28 @@
+## load of catchment data
+require(airGR)
+data(L0123003)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4H,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/03/2004 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/2008 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4H,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(521.113,-2.918,218.009,4.124)
+OutputsModel <- RunModel_GR4H(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR4J.R b/tests/example_RunModel_GR4J.R
new file mode 100644
index 00000000..192eee96
--- /dev/null
+++ b/tests/example_RunModel_GR4J.R
@@ -0,0 +1,28 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(257.238,1.012,88.235,2.208)
+OutputsModel <- RunModel_GR4J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR5J.R b/tests/example_RunModel_GR5J.R
new file mode 100644
index 00000000..4825f5ff
--- /dev/null
+++ b/tests/example_RunModel_GR5J.R
@@ -0,0 +1,28 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR5J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR5J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(245.918,1.027,90.017,2.198,0.434)
+OutputsModel <- RunModel_GR5J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_RunModel_GR6J.R b/tests/example_RunModel_GR6J.R
new file mode 100644
index 00000000..38797485
--- /dev/null
+++ b/tests/example_RunModel_GR6J.R
@@ -0,0 +1,28 @@
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR6J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR6J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(242.257,0.637,53.517,2.218,0.424,4.759)
+OutputsModel <- RunModel_GR6J(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+## efficiency criterion: Nash-Sutcliffe Efficiency
+InputsCrit  <- CreateInputsCrit(FUN_CRIT=ErrorCrit_NSE,InputsModel=InputsModel,
+                                RunOptions=RunOptions,Qobs=BasinObs$Qmm[Ind_Run])
+OutputsCrit <- ErrorCrit_NSE(InputsCrit=InputsCrit,OutputsModel=OutputsModel)
+cat(paste("  Crit  ",OutputsCrit$CritName,"  ",round(OutputsCrit$CritValue,4),"\n",sep=""))
+
diff --git a/tests/example_SeriesAggreg.R b/tests/example_SeriesAggreg.R
new file mode 100644
index 00000000..6018c5d6
--- /dev/null
+++ b/tests/example_SeriesAggreg.R
@@ -0,0 +1,18 @@
+## load of catchment data
+require(airGR)
+
+## preparation of the initial time series data frame at the daily time-step
+data(L0123002)
+TabSeries  <- data.frame(BasinObs$DatesR,BasinObs$P,BasinObs$E,BasinObs$T,BasinObs$Qmm)
+TimeFormat <- "daily"
+
+## conversion at the monthly time-step
+NewTimeFormat <- "monthly"
+ConvertFun    <- c("sum","sum","mean","sum")
+NewTabSeries  <- SeriesAggreg(TabSeries=TabSeries,TimeFormat,NewTimeFormat,ConvertFun)
+
+## conversion at the yearly time-step
+NewTimeFormat <- "yearly"
+ConvertFun <- c("sum","sum","mean","sum")
+NewTabSeries <- SeriesAggreg(TabSeries=TabSeries,TimeFormat,NewTimeFormat,ConvertFun)
+
diff --git a/tests/example_TransfoParam.R b/tests/example_TransfoParam.R
new file mode 100644
index 00000000..0c5c5037
--- /dev/null
+++ b/tests/example_TransfoParam.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR4J model
+    Xreal <- matrix( c( 221.41, -3.63,  30.00, 1.37,
+                        347.23, -1.03,  60.34, 1.76,
+                        854.06, -0.10, 148.41, 2.34),
+                        ncol=4,byrow=TRUE)
+    Xtran <- TransfoParam(ParamIn=Xreal,Direction="RT",FUN_TRANSFO=TransfoParam_GR4J)
+
+## transformation Transformed->Real for the GR4J model
+    Xtran <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                        +3.90, -0.90, +4.10, -8.70,
+                        +4.50, -0.10, +5.00, -8.10),
+                        ncol=4,byrow=TRUE)
+    Xreal <- TransfoParam(ParamIn=Xtran,Direction="TR",FUN_TRANSFO=TransfoParam_GR4J)
diff --git a/tests/example_TransfoParam_CemaNeige.R b/tests/example_TransfoParam_CemaNeige.R
new file mode 100644
index 00000000..85efecfc
--- /dev/null
+++ b/tests/example_TransfoParam_CemaNeige.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the CemaNeige module
+    Xreal <- matrix( c( 0.19, 1.73,
+                        0.39, 2.51,
+                        0.74, 4.06),
+                        ncol=2,byrow=TRUE)
+    Xtran <- TransfoParam_CemaNeige(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the CemaNeige module
+    Xtran <- matrix( c( -6.26, +0.55,
+                        -2.13, +0.92,
+                        +4.86, +1.40)
+                        ,ncol=2,byrow=TRUE)
+    Xreal <- TransfoParam_CemaNeige(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR1A.R b/tests/example_TransfoParam_GR1A.R
new file mode 100644
index 00000000..99346023
--- /dev/null
+++ b/tests/example_TransfoParam_GR1A.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR1A model
+    Xreal <- matrix( c(  0.625,
+                         1.250,
+                         1.875),
+                        ncol=1,byrow=TRUE)
+    Xtran <- TransfoParam_GR1A(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR1A model
+    Xtran <- matrix( c( -5.00,
+                        +0.00,
+                        +5.00),
+                        ncol=1,byrow=TRUE)
+    Xreal <- TransfoParam_GR1A(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR2M.R b/tests/example_TransfoParam_GR2M.R
new file mode 100644
index 00000000..4c0399a0
--- /dev/null
+++ b/tests/example_TransfoParam_GR2M.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR2M model
+    Xreal <- matrix( c( 221.41, -1.00,
+                        347.23, +0.00,
+                        854.01, +1.00),
+                        ncol=2,byrow=TRUE)
+    Xtran <- TransfoParam_GR2M(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR2M model
+    Xtran <- matrix( c( +3.60, -5.00,
+                        +3.90, +0.00,
+                        +4.50, +5.00),
+                        ncol=2,byrow=TRUE)
+    Xreal <- TransfoParam_GR2M(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR4H.R b/tests/example_TransfoParam_GR4H.R
new file mode 100644
index 00000000..6a2868cf
--- /dev/null
+++ b/tests/example_TransfoParam_GR4H.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR4H model
+    Xreal <- matrix( c( 221.41, -3.63,  30.00, 1.37,
+                        347.23, -1.03,  60.34, 1.76,
+                        854.06, -0.10, 148.41, 2.34),
+                        ncol=4,byrow=TRUE)
+    Xtran <- TransfoParam_GR4H(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR4H model
+    Xtran <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                        +3.90, -0.90, +4.10, -8.70,
+                        +4.50, -0.10, +5.00, -8.10),
+                        ncol=4,byrow=TRUE)
+    Xreal <- TransfoParam_GR4H(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR4J.R b/tests/example_TransfoParam_GR4J.R
new file mode 100644
index 00000000..61019033
--- /dev/null
+++ b/tests/example_TransfoParam_GR4J.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR4J model
+    Xreal <- matrix( c( 221.41, -3.63,  30.00, 1.37,
+                        347.23, -1.03,  60.34, 1.76,
+                        854.06, -0.10, 148.41, 2.34),
+                        ncol=4,byrow=TRUE)
+    Xtran <- TransfoParam_GR4J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR4J model
+    Xtran <- matrix( c( +3.60, -2.00, +3.40, -9.10,
+                        +3.90, -0.90, +4.10, -8.70,
+                        +4.50, -0.10, +5.00, -8.10),
+                        ncol=4,byrow=TRUE)
+    Xreal <- TransfoParam_GR4J(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR5J.R b/tests/example_TransfoParam_GR5J.R
new file mode 100644
index 00000000..b2361f3a
--- /dev/null
+++ b/tests/example_TransfoParam_GR5J.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR5J model
+    Xreal <- matrix( c( 221.41, -2.65,  27.11, 1.37, -0.76,
+                        347.23, -0.64,  60.34, 1.76,  0.30,
+                        854.01, -0.10, 148.41, 2.34,  0.52),
+                        ncol=5,byrow=TRUE)
+    Xtran <- TransfoParam_GR5J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR5J model
+    Xtran <- matrix( c( +3.60, -1.70, +3.30, -9.10, -0.70,
+                        +3.90, -0.60, +4.10, -8.70, +0.30,
+                        +4.50, -0.10, +5.00, -8.10, +0.50),
+                        ncol=5,byrow=TRUE)
+    Xreal <- TransfoParam_GR5J(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_TransfoParam_GR6J.R b/tests/example_TransfoParam_GR6J.R
new file mode 100644
index 00000000..1bd48fa4
--- /dev/null
+++ b/tests/example_TransfoParam_GR6J.R
@@ -0,0 +1,15 @@
+require(airGR)
+
+## transformation Real->Transformed for the GR6J model
+    Xreal <- matrix( c( 221.41, -1.18,  27.11, 1.37, -0.18,  20.09,
+                        347.23, -0.52,  60.34, 1.76,  0.02,  54.60,
+                        854.06,  0.52, 148.41, 2.34,  0.22, 148.41),
+                        ncol=6,byrow=TRUE)
+    Xtran <- TransfoParam_GR6J(ParamIn=Xreal,Direction="RT")
+
+## transformation Transformed->Real for the GR6J model
+    Xtran <- matrix( c( +3.60, -1.00, +3.30, -9.10, -0.90, +3.00,
+                        +3.90, -0.50, +4.10, -8.70, +0.10, +4.00,
+                        +4.50, +0.50, +5.00, -8.10, +1.10, +5.00),
+                        ncol=6,byrow=TRUE)
+    Xreal <- TransfoParam_GR6J(ParamIn=Xtran,Direction="TR")
diff --git a/tests/example_plot_OutputsModel.R b/tests/example_plot_OutputsModel.R
new file mode 100644
index 00000000..3cd8e8d2
--- /dev/null
+++ b/tests/example_plot_OutputsModel.R
@@ -0,0 +1,54 @@
+#### example 1 without snow module
+
+## load of catchment data
+require(airGR)
+data(L0123001)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_GR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_GR4J,InputsModel=InputsModel,IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(734.568,-0.840,109.809,1.971)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_GR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+
+#### example 2 with snow module
+
+## load of catchment data
+require(airGR)
+data(L0123002)
+
+## preparation of the InputsModel object
+InputsModel <- CreateInputsModel(FUN_MOD=RunModel_CemaNeigeGR4J,DatesR=BasinObs$DatesR,
+                                 Precip=BasinObs$P,PotEvap=BasinObs$E,TempMean=BasinObs$T,
+                                 HypsoData=BasinInfo$HypsoData,NLayers=5)
+
+## run period selection
+Ind_Run <- seq(which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="01/01/1990 00:00"),
+               which(format(BasinObs$DatesR,format="%d/%m/%Y %H:%M")=="31/12/1999 00:00"))
+
+## preparation of the RunOptions object
+RunOptions <- CreateRunOptions(FUN_MOD=RunModel_CemaNeigeGR4J,InputsModel=InputsModel,
+                               IndPeriod_Run=Ind_Run)
+
+## simulation
+Param <- c(408.774,2.646,131.264,1.174,0.962,2.249)
+OutputsModel <- RunModel(InputsModel=InputsModel,RunOptions=RunOptions,Param=Param,
+                         FUN_MOD=RunModel_CemaNeigeGR4J)
+
+## results preview
+plot_OutputsModel(OutputsModel=OutputsModel,Qobs=BasinObs$Qmm[Ind_Run])
+
+
-- 
GitLab