The goal of hydromad is to provide a modelling framework for environmental hydrology: water balance accounting and flow routing in spatially aggregated catchments.

Hydromad supports simulation, estimation, assessment and visualisation of flow response to time series of rainfall and other drivers. A minimal unit hydrograph framework is used, where areal rainfall is passed through a soil moisture accounting (SMA) model to estimate effective rainfall; this is then passed through a routing model to estimate streamflow. Included are several implementations of common hydrological models consistent with this framework.

The main resource for hydromad is the website: The website describes the different functions and gives examples of the code applications.


  • Add the hydromad repository for this R session:
  • Install hydromad:
  • Optionally install other packages required for certain functions:

Once it is installed, get started with

library(package = "hydromad")

The development version can be installed from GitHub with:

# install.packages("devtools")


The maintainers of hydromad are always keen to receive contributions. However to help us we would like you to consider the following:

  • Please read and use our CONTRIBUTING document, this will really help us integrating your solution into hydromad.
  • This is a list of the current issues (which you might be able to help with).
  • As part of contributing we would like you to consider the ropensci Code of Conduct, which we use for hydromad.


This is a basic example of defining a model in hydromad:

## basic example code
## IHACRES CWI model with exponential unit hydrograph
## an unfitted model, with ranges of possible parameter values
modx <- hydromad(Cotter[1:1000], sma = "cwi", routing = "expuh",
                 tau_s = c(2, 100), v_s = c(0, 1))
#> Hydromad model with "cwi" SMA and "expuh" routing:
#> Start = 1966-05-01, End = 1969-01-24
#> SMA Parameters:
#>       lower upper     
#> tw        0   100     
#> f         0     8     
#> scale    NA    NA     
#> l         0     0 (==)
#> p         1     1 (==)
#> t_ref    20    20 (==)
#> Routing Parameters:
#>       lower upper  
#> tau_s     2   100  
#> v_s       0     1


This project is licensed under the terms of GPL (>=2)


This research was supported by the Sydney Informatics Hub, a Core Research Facility of the University of Sydney.