Soil_HBV: Empirical soil moisture routine

View source: R/RcppExports.R

Soil_HBVR Documentation

Empirical soil moisture routine


This module allows you to account for actual evapotranspiration, abstractions, antecedent conditions and effective runoff. The formulation enables non linear relationships between soil box water input (rainfall plus snowmelt) and the effective runoff. This effective value is the input series to the routine function (Routing_HBV).





numeric integer suggesting one of the following options:

  • 1: Classical HBV soil moisture routine.

  • 2: HBV soil moisture routine with varying area. This option should be used with SnowGlacier_HBV's model 3.


numeric matrix with the following series

Model 1

  • column_1: Total = Prain + Msnow [mm/Δ t]. This series comes from the output of the SnowGlacier_HBV module.

  • column_2: potential evapotranspiration [mm/Δ t]. Since the package has a simple model (PET) to obtain this series I strongly recommend using the Evapotranspiration package.

Model 2

  • column_1: as in model 1.

  • column_2: as in model 1.

  • column_3 : relative soil area (ratio of soil surface over basin area). When the glacier area changes the soil does the same, so coherence between this two series should be seek.This value is used to scale the effective runoff accordingly (Rech column in the matrix output).


numeric vector with the following values:

  1. initial soil water content [mm]. This is a model state variable and is internally used as first soil moisture value.

  2. relative area [-]. Only needed when using model 1. This is the soil surface proportion relative to the catchment as a whole, so the values should never supersede one (1). This value is used to scale the effective runoff accordingly (Rech column in the matrix output).


numeric vector with the following values:

  1. FC: fictitious soil field capacity [mm].

  2. LP: parameter to get actual ET [-].

  3. β: exponential value that allows for non-linear relations between soil box water input (rainfall plus snowmelt) and the effective runoff [-].


Numeric matrix with the following columns:

  1. Rech: recharge series [mm/Δ t]. This is the input to the Routing_HBV module.

  2. Eact: actual evapotranspiration series [mm/Δ t].

  3. SM: soil moisture series [mm/Δ t].


Bergström, S., Lindström, G., 2015. Interpretation of runoff processes in hydrological modelling—experience from the HBV approach. Hydrol. Process. 29, 3535–3545.


# The following is a toy example. I strongly recommend to see
# the package vignettes in order to improve your skills on HBV.IANIGLA

# HBV soil routine with variable area
## Calder's model
potEvap <- PET(model = 1, hemis = 1, inputData = as.matrix(1:315), elev = c(1000, 1500),
              param = c(4, 0.5))

## Debris-covered ice
 ObsTemp   <- sin(x = seq(0, 10*pi, 0.1))
 ObsPrecip <- runif(n = 315, max = 50, min = 0)
 ObsGCA    <- seq(1, 0.8, -0.2/314)

## Fine debris covered layer assumed. Note that the ice-melt factor is cumpulsory but harmless.
DebrisCovGlac <- SnowGlacier_HBV(model = 3, inputData = cbind(ObsTemp, ObsPrecip, ObsGCA),
                                 initCond = c(10, 3, 1), param = c(1, 1, 0, 3, 1, 6))

## Soil routine
ObsSoCA     <- 1 - ObsGCA
inputMatrix <- cbind(DebrisCovGlac[ , 9], potEvap, ObsSoCA)

soil <- Soil_HBV(model = 2, inputData = inputMatrix, initCond = c(50), param = c(200, 0.5, 2))

HBV.IANIGLA documentation built on Nov. 24, 2022, 1:07 a.m.