inversion {transfR} | R Documentation |
Estimate net rainfall by inversion
Description
Estimate net rainfall by inverse modelling, where the model is a convolution between net rainfall and a unit hydrograph in order to simulate discharge.
Usage
inversion(Qobs, ...)
## Default S3 method:
inversion(Qobs, uh, RnAp, deltat, ...)
## S3 method for class 'units'
inversion(
Qobs,
uh,
RnAp,
deltat,
Bd = 0.01,
Dd = 1,
Bp = 0.001,
Tp = 20,
Ad = 0.01,
Ap = 0.9,
warmup = 10,
cooldown = 8,
dosplit = TRUE,
split = 30,
fixedpar = TRUE,
parallel = FALSE,
cores = NULL,
...
)
## S3 method for class 'transfR'
inversion(Qobs, verbose = TRUE, ...)
Arguments
Qobs |
discharge vector or object of class |
... |
further arguments passed to or from other methods |
uh |
unit hydrograph vector |
RnAp |
net rainfall a priori. If no unit is provided, |
deltat |
time step of the time series. If no unit is provided, |
Bd |
parameter used to maintain a minimum value of standart deviation for low discharge values.
If no unit is provided, |
Dd |
decorrelation time of discharge errors. If no unit is provided, |
Bp |
parameter used to maintain a minimum value of standart deviation for low net rainfall values.
If no unit is provided, |
Tp |
decorrelation time of net rainfall errors. If no unit is provided, |
Ad |
parameter equivalent to the coefficient of variation of the discharge measurement error. If
no unit is provided, |
Ap |
parameter equivalent to the coefficient of variation of the net rainfall error. If no unit
is provided, |
warmup |
length of the warmup period. If no unit is provided, |
cooldown |
length of the period removed at the end of the simulation. If no unit is provided,
|
dosplit |
boolean, if true the inversion is performed by
subperiods of length defined by |
split |
length the subperiods if dosplit is true. If no unit is provided, |
fixedpar |
boolean, if false Ap and Ad are calibrated dynamically according to the coefficient of variation of RnAp and Qobs respectively (see details) |
parallel |
boolean, if true the splitting of the inversion by subperiods is parallelised |
cores |
the number of cores to use for parallel execution if |
verbose |
boolean indicating if information messages should be written to the console |
Details
In a convolution between the unit hydrograph (uh
) and net rainfall that is simulating
streamflow at the outltet (Qobs
), and where net rainfall is the only unknown variable, this function estimates
net rainfall by inversion (Tarantola and Valette 1982; Menke 1989; Boudhraâ et al. 2018). It requires an
a priori on this net rainfall (that could be estimated by the function rapriori), a description
of the errors on the discharge (Ad
, Bd
, Dd
) and on the net rainfall (Ap
,
Bp
, Tp
) that are assumed to be Gaussian and unbiased. Default values of these parameters
are taken from de Lavenne et al. (2016). If fixedpar
is deactivated, Ap
is estimated at 20
of variation of Qobs.
It is recommanded to use warmup
and cooldown
periods in order to reduce the problem of oscillations
created by inversion.
If object
is provided, results are stored as a new space-time attribute in the object
called "RnAp".
Value
An object of the same class of Qobs
. If Qobs
is a transfR object,
the same transfR object incremented by the new computed attributes.
References
Boudhraâ H, Cudennec C, Andrieu H, Slimani M (2018). “Net rainfall estimation by the inversion of a geomorphology-based transfer function and discharge deconvolution.” Hydrological Sciences Journal, 63(2), 285–301. doi:10.1080/02626667.2018.1425801.
de Lavenne A, Skøien JO, Cudennec C, Curie F, Moatar F (2016). “Transferring measured discharge time series: Large-scale comparison of Top-kriging to geomorphology-based inverse modeling.” Water Resources Research, 52(7), 5555–5576. doi:10.1002/2016WR018716.
Menke W (1989). Geophysical data analysis: discrete inverse theory, volume 45. Academic Press.
Tarantola A, Valette B (1982). “Inverse problems= quest for information.” Journal of Geophysics, 50(3), 150–170.
See Also
Examples
data(Oudon)
icatch <- 1 # Catchment index
itime <- 1:1000 # Using the first values for a quicker example
Qobs <- Oudon$obs[["Qobs"]][itime,icatch]
Qspec <- units::set_units(Qobs/st_area(st_geometry(Oudon$obs)[icatch]), "mm/h")
deltat <- units::set_units(1, "h")
uc <- velocity(hl = Oudon$hl[[icatch]])
uh <- uh(hl = Oudon$hl[[icatch]], uc = uc, deltat = units::set_units(1,"h"))$prob
RnAp <- rapriori(Qobs = Qspec, lagtime = lagtime(hl = Oudon$hl[[icatch]], uc = uc),
deltat = deltat)
RnInv <- inversion(Qobs = Qspec, RnAp = RnAp, uh = uh, deltat = deltat)