Basics of Incorporating HBV with Flow
While Flow provides direct support for many aspects of hydrologic representation, it generally needs
one of plugins to represent the full array of processes need in a hydrological model. Flow/HBV
is one such plugin.
The HBV plugin provides support for many of the hydrologic processes represented in the HBV model (Bergström,
1992) (a full description of the model is available here).
Incorporating HBV-based process algorithms in your model requires the following steps:
- Add one of the HBV variants described below as an external 'global method' in your Flow
input file. The specific method invoked depends on which of several HBV-based representations you
want to use. Options are as follows:
HBV.dll Model |
Pools |
Pool Names |
Description |
HBV_Basic |
5 |
SnowPack, Melt, Soil, ShallowGround, DeepGround |
This model captures the basic HBV storage and routing algorithm only. It does not consider irrigation.
It is useful as a fairly simple hydrological model for non-agricultural applications. |
HBV_WithIrrigation |
6 |
SnowPack, Melt, UnirrigatedSoil, IrrigatedSoil, ShallowGround, DeepGround |
This model is similar to HBV_Basic, but partions the soil water pool into two separate pools,
one representing the irrigated portion of a field, one representing the non-irrigated protion of a field. |
HBV_WithQuickflow |
3 |
Soil, ShallowGround, DeepGround |
This model is similar to HBV Basic, but does not include snow or melt pools. |
HBV_WithRadiationDrivenSnow |
5 |
SnowPack, Melt, Soil, ShallowGround, DeepGround |
This model is similar to HBV basic but includes a radiation-driven snow melt routine |
In all cases, the appropriate global_methods entry should look like:
{flow input}.xml
<flow_model>
...
<global_methods>
<reach_routing name="Reach Routing" method="kinematic" query=""/>
<lateral_exchange name="Lateral Exchange" method="none" query=""/>
<hru_vertical_exchange name="Vertical Exchange" method="none" query=""
/>
...
<external name="HBV" method="fn=hbv.dll:HBV_xxxx"/>
...
<global methods>
...
</flow_model>
Replace HBV_xxxx in the above entry with whichever HBV.dll model is appropriate for your problem.
-
Add the appropriate entry to your Flow model's <catchment> tag as follows:
{flow input}.xml
<flow_model>
...
<catchments>
...
<pools="{Pools}" />
<pool_names="{Pool Names}" />
...
</catchments>
...
</flow_model>
where {Pools} and {Pool Names} are replaced with the appropriate values
from the table above. Note that initial water contents for these pools can optionally be specified using
the "init_water_content" attribute of the <catchment> tag.
-
Provide HBV parameters file. Specifically, HBV requires a table of parameter values, specified
using a Flow global "table", using the <table> tag as follows:
{flow input}.xml
<flow_model>
...
<tables>
<table name="HBV" description="HBV Parameters"
col="Ecoregion" source="hbv.csv" type="float" />
</tables>
...
</flow_model>
The HBV Parameters file
For this <table> entry, "HBV" is required as the table name. The 'col'
attribute indicates a field in the IDU coverage used to distribute the HBV parameters across the coverage
- each row of parameters specified in the hbv.csv file will correspond to unique value of the IDU database
field specified by 'col'. The 'source' attribute specifies a CSV file containing
parameters for the HBV model, one row for each unique entry in the 'col' field.
For the CSV file, the following columns are required (order is not important, the name of the column
header is; column names are NOT case-sensitive):
Column Header |
Description |
Notes |
{key} |
Lookup key for spatially distributing parameters. This is required to be the first column in the
file. {key} should be replaced with the corresponding lookup field in the IDU database |
|
CFMAX |
degree-day factor (mm oC-1 day-1) |
|
TT |
threshold temperature (oC) |
|
SFCF |
snowfall correction factor |
|
CWH |
snowpack retains water till this portion is exceeded |
|
CFR |
refreezing coefficient |
|
LP |
soil moisture value above which ETact reaches ETpot (mm) |
|
FC |
maximum soil moisture storage (mm) |
|
BETA |
parameter that determines the relative contribution to runoff from rain or snowmelt (-) |
|
PERC |
Percolation constant (mm) |
|
WP |
No ET below this value of soil moisture (mm) |
|
K0 |
Recession coefficient (day-1) |
|
K1 |
Recession coefficient (day-1) |
|
UZL |
threshold parameter (mm) |
|
K2 |
permanent wilting point (mm) |
|
RAIN |
Recession coefficient (day-1) |
|
SNOW |
Recession Coefficient (day-1) |
|
SFCFCORRECTION |
|
|
KSoil |
|
Only required for HBV_WithQuickflow |
The original HBV model site has good documentation of these parameters here.
Spatially Distributing HBV Parameters
You can provide HBV parameters for specific regions of a study area by providing multiple records
in the HBV CSV Parameters file, with each record indicating a distinct parameter set. The first column
in this file specifies a key that is used by Flow to match an set of parameters (a row in the file) to
a specific IDU attribute (specified in the 'col' attribute of the <table> entry). For example,
if you wanted to have each watershed in your study areas to have its own set of HBV parameters, you would
need to do the following:
-
Include a watershed ID in the IDU coverage uniquely identifying what watershed the IDU is in (say,
in a field called "WATSHED_ID" for this example), and populate it with a unique ID for each
watershed.
-
In the HBV parameters table, provide a record/line for each watershed. The first column of each record
should contain the WATSHED_ID for that set of parameters. While technically not necessary, you should
rename the first column in the HBV CSV file to match the name IDU lookup field (WATSHED_ID in this example).
In any case the first column is always used to contain the lookup key value, even if only one
set of parameters is defined. In the latter case, the corresponding IDU column should have the same value
for the entire study area.
-
Update your Flow xml input file so that the <table> entry's “col” attribute
references the lookup field in the IDU' (WATSHED_ID in this example):
<table name="HBV" description="HBV Parameters" col="WATSHED_ID" source="hbv.csv"
type="float" />
1. Bergström, S.: The HBV Model: Its Structure and Applications,Swedish
Meteorological and Hydrological Institute (SMHI), Hydrology,Norrköping, 35 pp., 1992.