airGRiwrm issueshttps://gitlab.irstea.fr/in-wop/airGRiwrm/-/issues2022-07-22T14:58:12+02:00https://gitlab.irstea.fr/in-wop/airGRiwrm/-/issues/87Reflexions about ungauged and poorly gauged modelling in airGRiwrm2022-07-22T14:58:12+02:00Thirel GuillaumeReflexions about ungauged and poorly gauged modelling in airGRiwrmAlban de Lavenne, Léonard Santos, Laurent Strohmenger and myself tried to brainstorm about all that could be needed to perform airGRiwrm modelling under ungauged or poorly gauged conditions. We mainly discussed methodological and technic...Alban de Lavenne, Léonard Santos, Laurent Strohmenger and myself tried to brainstorm about all that could be needed to perform airGRiwrm modelling under ungauged or poorly gauged conditions. We mainly discussed methodological and technical issues.
This ticket is linked to https://gitlab.irstea.fr/in-wop/airGRiwrm/-/issues/42 but I prefer to separate it in order to keep it clear.
There are two types of issues:
- Obtaining parameters for intermediate catchments that have no observed discharge data (ungauged case)
- Obtaining parameters for intermediate catchments that have limited discharge data (poorly gauged case)
**Description of the issues**
_Ungauged case_
There are several cases:
- Ungauged catchment with application of a lumped model. This is not the objective of this ticket. Regionalisation methods already exist. For example, it is advised to calibrate the lumped model over neighbouring catchments that have discharge data and to select the parameter sets of the 5 closest catchments. Then, 5 time series of discharge are produced over the ungauged catchment of interest and the average of the 5 time series is used (see section 3.2.2 of Oudin et al., 2008)
- Ungauged catchment located upstream of a gauged catchment in a semi-distributed model
- Ungauged catchment located downstream of a gauged catchment in a semi-distributed model
- Ungauged catchment located downstream of a gauged catchment and upstream of a gauged catchment in a semi-distributed model
_Poorly gauged case_
Two cases:
- We have data at the time step of the model, but only on a few time steps
- We have instantaneous data obtained from punctual gaugings
**Methods that could be applied**
_Ungauged case_
Option 1:
Regionalising lumped models (cf Oudin et al., 2008) in order to produce simulated discharge time series over ungauged catchments. Then, after averaging the 5 time series, we can use it to calibrate the semi-distributed model.
Option 2:
Using the transfR package (https://cran.r-project.org/web/packages/transfR/index.html) in order to transfer observed discharge from gauged stations towards ungauged catchments. Then, these transfered time series can be used to calibrate the semi-distributed model.
Option 3:
Perform a calibration similarly to the Fortran GRSD model.
If a gauged catchment is available downstream, then we can used the same parameter set for the ungauged catchment (providing we transform X4).
If a gauged catchment is available upstream, we transfer the parameters of the most contributive catchment upstream (providing we transform X4).
It is advised to use the regularisation calibration method in this case. In case a different a priori parameter set is used, then there could be some variability in the parameter values.
_Poorly gauged case_
If we have discharge at the time step of the model:
We can use the wroks from Rojas-Serna et al. (2016). This is a method combining regionalisation from neighbouring catchments and performance.
Step 1: rank the parameter sets of neighbour catchments according to the distance (proximity rank). In the article, they use 20 % of the distance between outlets + 80 % of the distance between centroids. However, we could use something more complex such as the Ghosh distance.
Step 2: use these parameter sets on the poorly gauged catchments and calculate an error criterion (don’t forget to transform the X4 parameter to scale it to the surface); rank the parameter sets according to the performance (performance rank). In the article, they use the RMSE, which is advised if there is not much data.
Step 3: combine ranks, through a weighted average of proximity and performance ranks.
![image](/uploads/c8ecb3a1bf0148950544145158622d11/image.png)
Step 4: use a selection of M parameter sets with the best combined rank and average the simulations on the poorly gauged station.
According to Rojas-Serna et al. (2016), M depends on the model (e.g. M = 7 for GR4J and M = 9 for TOPM). Also, alpha depends on the data availability (alpha is low when there are many data, and vice versa). It seems that when at least 40 observed values are available, alpha is very close to 0. I would therefore say that if we can get enough data (> 40 values), then it means that we can simply use a classical calibration.
If we have only instantaneous discharge data:
It is necessary to transform the instantaneous discharge data into data at the model time step, and then apply the methodology just described above. Using a close catchments that has discharge values at the same time steps could help. It is advised to do that only if the response time of the catchment is higher than the time step of the model, in order to limit the variability.
**Implementation in airGRiwrm**
_Ungauged case_
Option 1
Nothing to do, this is preprocessing.
Option 2
Nothing to do, this is preprocessing.
Option 3
I do not develop, I know that @david.dorchies is on it.
_Poorly gauged case_
The described methodology has to be used before using airGriwrm. Then, we can just provide a fixed parameter set.
**Others**
Laurent is testing the options 1 and 2 with around 600 stations over France, and using 90% of stations for calibration, 10% for evaluation. It could be interesting to test option 3 when it is ready.
In case of pporly gauged catchments, if there are more than 40 observations available, then regionalising neighbouring catchments with a lumped model is advised.
**Miscellaneous**
For Explore2, we can add the stations that were discarded because there are less than 27 years of data (because we want to simulate 4000 catchments over France).
Léonard implemented an API for retrieving quality and quantity data that could help (shorter time series or instantaneous data?).
If discharge data are of poor quality, then the k value of the regularisation could be modified to be higher than 0.15.
Were suggested to perform the 90/10% calibration/evaluation exercise: make a group for small catchments, or other characteristics.
**References **
Oudin, L., V. Andréassian, C. Perrin, C. Michel, and N. Le Moine, 2008. Spatial proximity, physical similarity and ungaged catchments: confrontation on 913 French catchments, Water Resour. Res., 44, W03413, doi:10.1029/2007WR006240.
Rojas-Serna, C., Lebecherel, L., Perrin, C., Andréassian, V. and Oudin, L., 2016. How should a rainfall-runoff model be parameterized in an almost ungauged catchment? A methodology tested on 609 catchments. Water Resour. Res., 52, 6, 4765-4784, doi:10.1002/2015WR018549.https://gitlab.irstea.fr/in-wop/airGRiwrm/-/issues/67More flexibility in CreateInputsCrit.GRiwrmInputsModel2022-03-09T09:32:27+01:00Thirel GuillaumeMore flexibility in CreateInputsCrit.GRiwrmInputsModelWith airGRiwrm, many modelling possibilities are offered, but some are not, although they would be very useful. Namely, defining different objective functions or calibrating different parameters (e.g. calibrating CemaNeige for snowy basi...With airGRiwrm, many modelling possibilities are offered, but some are not, although they would be very useful. Namely, defining different objective functions or calibrating different parameters (e.g. calibrating CemaNeige for snowy basins only, although using CemaNeige everywhere) would be very convenient.
This would require more flexibility in CreateInputsCrit.GRiwrmInputsModel.R and
Namely, in CreateInputsCrit.GRiwrmInputsModel.R, we would need to be able to define different values for each basin for these arguments:
`BoolCrit`, `transfo`, `Weights`, `epsilon`
In CreateCalibOptions.GRiwrmInputsModel.R, we would need to be able to distribute FixedParam but also (although less important and useful) `SearchRanges`, `StartParamList`, `StartParamDistrib`Dorchies DavidDorchies David