Flow - Using the HBV Plug-in
Skip Navigation Links

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:

  1. 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.
     
  2. 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.
     
  3. 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>
    
    

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.

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:

  1. 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.

  2. 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.

  3. 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.