airGRiwrm 0.8.1
Breaking changes:
- CreateRunOptions [Breaking change]: The default value of
Outputs_Simhas changed from"all"to a minimal set (c("DatesR", "WarmUpQsim", "Qsim", "Qsim_m3", "QsimDown", "Param", "StateEnd")) in order to reduce the size of the GRiwrmOutputsModel object for large networks. UseOutputs_Sim = "all"to restore the previous behaviour (#141). - Calibration [Breaking change]:
Calibrationon a simple InputsModel now requires aRunOptionsargument, inserted in the second position (Calibration(InputsModel, RunOptions, CalibOptions, ...)). Positional calls written asCalibration(InputsModel, CalibOptions)are broken; named calls and the calibration of network models (GRiwrmInputsModel) are unchanged (#199). - CreateInputsCrit [Breaking change]: the default error criterion changed from
ErrorCrit_NSEtoErrorCrit_KGE2and the defaultAprioriIdschanged fromNULLto a computed a priori node (getDefaultAprioriIds(InputsModel)); several a priori nodes are now tested and the best one is kept. The numeric results of the default criteria and of the calibration change (#197, #196). - CreateInputsCrit [Breaking change]: the De Lavenne criterion now raises an error if the X4 parameter of the a priori node is below 0.5, and the a priori error criterion is now computed from the current sub-catchment error criterion; the values of
InputsCritLavenneand the calibration results change accordingly (#193). - Calibration [Breaking change]: reservoirs now follow the force-release/diversion logic during calibration by default (
forceReservoirObs = TRUEinRunModel/Calibrationof a GRiwrmInputsModel, with a calibration flag in the reservoir RunOptions); the simulated reservoir behaviour during calibration can change (#199).
New features:
- CreateRunOptions: allow users to select which simulation outputs are returned via the
Outputs_Simargument, either as a character vector applied to all nodes, or as a named list with per-node selection (#141). CemaNeige nodes now also carryPrecipin their defaultOutputs_Sim: the default plot of a CemaNeige node requires it in the OutputsModel to compute the precipitation panel axis as soon as the per-layer solid precipitation (Psol) is present (upstream airGRylimPlimitation; the standalone airGR bug is still to be fixed on the airGR side).Precipis a recorded meteo input, not a CemaNeige Fortran output: the CemaNeigeNOutputsand the model run are unchanged (#178). - CreateInputsCrit: allow user-defined a priori parameters for the De Lavenne criterion: entries of
AprioriIdscan now be numeric vectors (one value per model parameter of the node, e.g.c(celerity, X1, X2, X3, X4)) used as the a priori parameters instead of the parameters of an upstream sub-catchment (#61). - plot.GRiwrmOutputsModel: display the meteorological time series (precipitation and potential evapotranspiration) at the whole-catchment scale: when available in the GRiwrmOutputsModel object, the time series of each node are replaced on the fly by their area-weighted mean over the catchment of the node and all its upstream nodes, so that the displayed meteorology reflects the whole catchment integrated in the simulated discharge (#178). For a CemaNeige node, the per-layer series displayed by
airGR::plot.OutputsModelare covered as well: the mean air temperature (Temp), the solid precipitation (Psol) and the snow pack state (SnowPack) of each elevation layer are replaced by their whole-catchment mean, as well as the mean over the layers that airGR derives from them. The same adjustment is available as a new exported functionadjustMeteoToCatchment(): it computes, for a node of a GRiwrmOutputsModel object, the meteorological time series at the whole-catchment scale (including the CemaNeige layer series), so that users can compute statistics from the meteorological data of the whole catchment instead of the local sub-basin data of the node (#178). - RunModel: a new S3 method
RunModel.GRiwrmOutputsModelre-simulates a model from a previous GRiwrmOutputsModel object (with modified inputs), and a previous OutputsModel can now be merged with a new one (merge.OutputsModel,merge.GRiwrmOutputsModel); the new exported functiongetNextTimeSteps()helps to select the time steps of the re-simulation (#173). - RunModel.Supervisor: a new
Yinitargument sets the initial Y state for a hot restart; the Yinit can be computed from a previous GRiwrmOutputsModel (the warm-up outputs are kept in the object and feed the supervised run) (#208, #209). The initial Y state is now applied at every restart of the supervision (#210). - CreateInputsModel: a new
FUN_REGULargument allows providing a user-defined regulation function (“local rule”) for a node; the function is called with an extra named argumente = environment()(contract to document on the user side) (#29). - CreateController: the variable to control/measure can now be selected at each node location (reservoir volume, derived flows as controlled/measured variables), and the
YandUlocations acceptNULL(#188, #174). - CreateInputsModel:
ZInputsnow accepts a list (coerced to a numeric vector) (#206). - RunModel_Reservoir: pass-through mode (“transparent” reservoir) with
Qrelease = NAandVsim = 0(#201). - CreateInputsCrit: a new exported function
getDefaultAprioriIds(InputsModel)returns the default a priori node ids (#197). - CreateGRiwrm: gauged nodes inside an ungauged cluster are now detected (#168).
- plot.OutputsModelReservoir and plot.GRiwrmOutputsModel: the observed volume series (
Vobs) is now displayed in the plots (#189). - plot.GRiwrm: a new
serverargument and theMERMAID_URLenvironment variable provide an alternative to the mermaid.ink service (#184).
Changes:
- The minimum required version of ‘airGR’ has been raised to 1.7.8:
CreateRunOptionsreads the per-nodeFeatFUN_MODattribute for every node, and Reservoir nodes require the fix of airGR issue #167 (both provided by the airGR 1.7.8 CRAN release, 2025-12-12). Users on airGR <= 1.7.6 now get a clear dependency error at installation instead of a runtime crash inCreateRunOptions(). - CreateRunOptions: the initial states (
IniStates) are now taken into account and checked for Reservoir nodes (previously ignored); new errors/warnings may be raised on configurations that were previously accepted (#182). - Calibration: the calibration of ungauged clusters now takes the
IniStatesof the involved nodes into account, and a new error is raised if a Reservoir node is in an ungauged cluster (#182).
Bug fixes:
- RunModel: an explicit
Outputs_Simselection now works on semi-distributed networks: the outputs required to propagate the simulated flows between nodes (in particularWarmUpQsimwhen the warm-up period is non-zero) are now included automatically in an explicitOutputs_Simselection, instead of failing with the error “Time series WarmUpQsim in ‘QcontribDown’ should have the same length as ‘RunOptions$IndPeriod_WarmUp’” (#98). - RunModel.Supervisor: crash with
RunModel_Lagon a node (#191). - RunModel.Supervisor: crash with Reservoir + Diversion nodes (#190).
- RunModel.Supervisor: wrong detection of the warm-up period (#174).
- RunModel.Supervision: crash at the hot restart (#176).
- RunModel.Supervision: missing attributes (class,
DatesR) for GR andOutputsModelReservoirobjects (#174, #177). - RunModel.Supervision: wrong retrieval of the data for the direct injections (#211).
- RunModel:
NAhandling inIniStates(#174). - RunModel.GRiwrmOutputsModel: the original warm-up data are now kept in the OutputsModel (#179).
- RunModel.OutputsModel: sign error of the Diversion flow (#173).
- RunModel_Lag (routing): crash at the
StateEndcomputation on very short simulations without a warm-up period (#192). - CreateInputsCrit: the De Lavenne criterion now updates the upstream discharges before computing the criterion (#193).
- Calibration:
RunModel_ungaugedis now allowed for the a priori criterion of an ungauged cluster (#193). - getDefaultAprioriIds: unique node ids guaranteed and bypass on reservoirs (#196).
- transferGRparams: wrong computation of the X4 parameter transferred from an upstream donor node; the transferred parameter values in ungauged cluster calibrations change accordingly (#205).
- CreateCalibOptions: crash when all parameters are fixed (#183).
- Ungauged clusters: fixed parameters in a cluster, a gauged node in a cluster without fixed parameters, the donor search with Diversion, receivers removed from the cluster, and the gauged node detection were fixed (#168, #167).
- CreateGRiwrm: wrong rank of nodes with an ungauged cluster and reservoirs (#168).
- CreateController: direct injection in
Ywithvar = "Qupstream"and the case of a missingYlocation (#188). - CreateInputsModel:
PrecipScaleis now defined at the node level (#187) andQreleasenow accepts a matrix (#200). - plot.OutputsModelReservoir: the
whichargument is now handled when the plot is called frombox(#203).
Documentation:
- New vignette V07: example combining tactical and operational management (PID controller on a reservoir,
RunModel.GRiwrmOutputsModel) (#180). - Vignette V04: reformatted for readability and the NA handling in the controller measurements documented (#97).
- Documentation: the irstea.fr links replaced by the corresponding forge.inrae.fr pages, the irrigation and reservoir vignette examples revised, and the
CreateGRiwrmdocumentation updated (#204). - A documentation wave covered
Calibration,CreateCalibOptions,CreateInputsModel,RunModel.Supervisor,RunModel_Reservoir(examples, target/observed release, PID supervisor examples),transferGRparamsandextractParam(#172, #189).
Internal changes:
- Examples: the closed-loop Supervisor block of the shared Reservoir example (used by the
RunModel_Reservoirandplot.OutputsModelReservoirmanual pages) is now wrapped in\donttest— it calls R at every time step and made the examples exceed the CRAN 5-second limit, which led to the rejection of the 0.8.0 submission by the CRAN pretest (2026-11-06). The code stays visible in the manual and is still executed by the package CI and byR CMD check --run-donttest.
airGRiwrm 0.7.0
CRAN release: 2024-09-22
New features:
- Handle simple in-line reservoir inside the model (#51)
- Use of non gauged stations in the network (#42)
- RunModel.Supervision: handle NA values on injected flows (#94)
- Add checks on Supervisor functions (#102)
- Get
plot.Qm3savailable as a function (#104) - Implementation of “Diversion” node (#95)
- CreateInputsModel: downgrade error on “
Qobsonly for nodes Direct Injection and Diversion” to warning (#109) - Diversion: Remove error “The downstream node of a Diversion node must be different than the downstream node of the node is attached to” (#111)
- Ungauged node: allow to define donor manually (#129)
- Ungauged node - CreateGRiwrm: Search donor through Diversion if not available by natural network (#132)
- Highlight the water deficit at a node due to too much withdrawals (#144)
- Integration of reservoirs as nodes in the network (#90)
- Handle direct withdrawal in reservoirs (#147)
- plot.GRiwrm: use web service instead of DiagrammeR::mermaid (#150)
- plot.GRiwrm: sketch ungauged cluster with subgraphs (#151)
- Implementation of non gauged station with donor other than a downstream gauged station (#92)
- CreateInputsCrit: allow a priori node not only at upstream (#156)
- Allow Diversion on Reservoir (#146)
- CreateInputsModel: deprecate
Qobsparameter and useQinfinstead (#120) - CreateInputsModel: Specify the error message: “‘Qobs’ column names must be included in ’id’s of the GRiwrm object” (#152)
-
plot.GRiwrmOutputsModel: handle other units than mm / time step (#105) - Feature request: function for getting parameters from
GRiwrmOutputsCalib(#86) - Speed up RunModel_Lag for RunModel.Supervisor (#164)
- plot.GRiwrm: allow to use optional parameters of
mermaidfunction (#160) - Ungauged node cluster: improve outsider gauged node detection (#168)
Bug fixes:
- Wrong file name for the “Get started” vignette (#79)
- CreateInputsCrit: wrong id in error message (#85)
- ConvertMeteoSD: crash with upstream nodes with no area (#89)
- Regularisation: check if current node and a priori node use the same model (#93)
- Regularisation: taking into account X4 transformation (#88)
- RunModel.Supervisor doesn’t work with Diversion node (#106)
- Allow to use node with model RunModel_Lag (#107)
- Calibration does not work when upstream catchments are both gauged and ungauged (#108)
- Ungauged node: incorrect definition of donor with Reservoir and bug with Diversion nodes (#110)
- Ungauged node: crash with upstream Diversion node (#113)
- Ungauged node: crash on diversion to node outside the sub-network (#112)
- Ungauged node: difference of ErrorCrit between Calibration and RunModel (#115)
- getSD_Ids crashes on upstream nodes with Diversion (#116)
- CreateSupervisor: wrong definition of allowed nodes for command (#117)
- Calibration: Diversion is not handled on upstream nodes (#122)
- Calibration: crash with ungauged node and multiple Diversions (#123)
- CreateInputsModel: wrong area of sub-basin with upstream Reservoir, Lag or Direct Injection nodes (#124)
- RunModel.Supervisor: error with Diversion node (#126)
- Ungauged node: Diversions are not handled correctly in Calibration (#127)
- Calibration: crash with a diverted ungauged node (#128)
- Ungauged nodes: X4 transformation not handled with CemaNeige models (#135)
- Crash with Hysteresis in CemaNeige (#134)
- Ungauged nodes: crash with a reservoir and several upstream nodes (#136)
- Ungauged node: Diversion to Reservoir crashes Calibration (#130)
- Wrong calibration node order with multiple ungauged node clusters (#149)
- CreateGRiwrm: several Diversions on the same node do not raise error (#125)
- Reservoir output plot color palette issue (#154)
- Wrong sorting for calibration of ungauged nodes (#155)
- Donor defined on gauged model node turns the node into ungauged at Calibration (#157)
- Calibration: crash when transferring from upstream donor to upstream receiver (#158)
- plot.GRiwrm crashes with a single node (#153)
- CreateInputsModel: Don’t allow ungauged donor (#131)
- Rename internal function
RunModel.SD(#166) - Calibration: crash with downstream receiver node with upstream reservoir (#167)
airGRiwrm 0.6.1
CRAN release: 2022-03-08
Changes:
- Simplify the use of airGR in airGRiwrm (#63)
-
CreateInputsModel: MakeQobsparameter optional (#60) - airGR compatibility: change on LengthHydro unit (#32)
-
CreateInputsCrit: Change obs parameter characteristics (#38) - Update URLs in the DESCRIPTION file (#45)
- Use S3 plot method for GRiwrm class objects (#26)
- Rename function GRiwrm to CreateGRiwrm (#46)
-
CreateInputsCrit:transfois mandatory for parameter regularization (#56)
New features:
-
plot.Qm3s: customize legend position (#75) - Regularisation: Add default value for parameter Celerity (#58)
- Add network consistency checks in
GRiwrm(#36) - Handle CemaNeige compatibility (#52)
- Use S3 plot method for GRiwrmOutputsModel class objects (#26)
- Handling correctly initial conditions (#48)
- Calibration with parameter regularization (#54)
Bug fixes:
- Results differences between versions on vignette V04 (#75)
-
plot.GRiwrmnot working in gitlab-ci (#74) -
plot.GRiwrm: mermaid code is displayed with the diagram (#73) -
CreateGRiwrmcrashes when keeping all columns and rename some (#64) - Breaking change in airGR in issue HYCAR-Hydro/airgr#137 (#62)
- Review documentation for publication on CRAN (#43)
- Vignettes: working directory instability (#35)
- airGR compatibility: debugged version of RunModel_Lag (#33)
-
CreateInputsModel: Error when using data.frame for Qobs (#37) -
RunModel.Supervisor: Error in ctrlrts.index), i] (#39) - Supervisor: measurement on network downstream node returns
NULL(#40) -
RunModel: Suspected bug onOutputsModel$Qsimin the training example (#41) - Test fail after airGR update on outputting warm-up Qsim (#50)
- Wrong Qobs use in Lavenne function criteria (#57)
Internal changes:
- Prepare the package for v0.6.x CRAN submission (#71)
- Clone on github master and dev branches of the repository (#68)
- Update airGR dependency to CRAN v1.7.0 (#69)
- Add an airGR galaxy tab on the website? (#49)
- CI: dependency issues with Latex in Check as CRAN (#53)
- Remove dependency to R > 3.5 (#59)
- pkgdown: wrong documentation for methods CreateRunOptions and CreateCalibOptions (#65)
- Review documentation for publication on CRAN (#43)
- Push roxygen outputs on the repository (#34)
- Generation of the https://airgriwrm.g-eau.net site documentation (#44)
- Automatically update website from package repository (#47)
airGRiwrm 0.5.0 (Release date: 2021-03-07)
Changes:
- RunModel: Uncoupling of hydrological and hydraulic models (#28)
airGRiwrm 0.4.0 (Release date: 2020-12-28)
New features:
- Convert basin meteorological data to sub-basin level (#21)
Changes:
- Clarify dependency with ‘DiagrammeR’ package (#24)
Minor changes:
- Replace vignette examples on Seine River by a fake example from data provided by airGR (#13)
airGRiwrm 0.3.1 (Release date: 2020-08-07)
New features:
- Calibration of influenced semi-distributed model (#11)
airGRiwrm 0.3.0 (Release date: 2020-08-07)
New features:
- Add node of type “direct flow” in order to inject or withdraw flows into the model (#5)
airGRiwrm 0.2.0 (Release date: 2020-06-06)
New features:
- Calibration of semi-distributed model (#3)
