The Framework for Understanding Structural Errors (FUSE) was developed by Clark et al. (2008) and is a state-of-the-art modelling toolbox. It includes 1248 hydrological model structures, amongst which some well established models for rainfall-runoff simulations (i.e. PRMS, SACRAMENTO, TOPMODEL and ARNO/VIC, also defined as parent models). Each model is characterised by a different architecture of the upper and lower soil layers and parameterisation of processes such as: evaporation, vertical percolation, interflow, base flow and surface runoff.
Fuse takes as input rainfall and potential evapotranspiration time series (areal averages over the river catchment area) and returns a simulated time series of river discharges. It can be used to understand the variability of expected hydrological responses based on model structures.
This package is a re-implementation of the framework described in Clark et al. (2008) and based on the Fortran code provided by M. Clark in 2011. The package consists of two modules: Soil Moisture Accounting module (fusesma.sim) and Gamma routing module (fuserouting.sim). It also contains default parameter ranges (fusesma.ranges and fuserouting.ranges) and three data objects: fuse_hydrological_timeseries (sample input dataset), parameters (sample parameters) and modlist (list of FUSE model structures).
The fuse package, as well as the examples in the vignette, depend on a number of CRAN packages. Check for missing dependencies and install them:
You can install this package from Github with devtools:
Load the package:
The simplest way to test
fuse is to use the dummy data provided with this package, sample the parameter range using the built-in function
generateParameters() and run the model with 1 model structure (e.g. TOPMODEL):
# Load the dummy data data(fuse_hydrological_timeseries) # Sample the parameter range parameters <- generateParameters(1) # Run fuse streamflow <- fuse(DATA = fuse_hydrological_timeseries, mid = 60, # Model structure = TOPMODEL deltim = 1, # Daily time step ParameterSet = parameters) plot(streamflow, xlab = "", ylab = "Streamflow [mm/day]")
For details and more complex examples (e.g. multi-model ensemble), please refer to the vignette.
Fortran users are advised to refer to the latest version of fuse available here.
fusepackage in R doing
citation(package = 'fuse')