2.2.1 Primary input file (.bbi)
The primary input file (.bbi) stores the model simulation options. An example .bbi file is shown below.
Note that comments may be included on individual lines using the # character as the first word on the line. Inline comments are also allowed - Blackbird will ignore any text that appears to the right of the # character.
## Blackbird Model Input File (.bbi)
#
### General Model Setup Options ----
:ModelType STEADYFLOW
:RegimeType SUBCRITICAL
:Tolerance 0.003
:IterationLimit 50
:WSLSplit 0.7
:ToleranceNormalDepth 0.001
:IterationLimitNormalDepth 50
:WSLSplitNormalDepth 0.4
:MaxRHRatio 2
:MinRHRatio 0.5
:ExtrapolateDepthTable TRUE
:NumExtrapolationPoints 20
:DynamicHAND FALSE
:FrictionSlopeMethod US_FRICTION
:EnforceDeltaLeff FALSE
:ReachLengthDelta 0.3
:ManningCompositeMethod EQUAL_VELOCITY
:SilentRun FALSE
:PreprocMaxDepth 9
:PreprocDepthStep 0.05
:DHANDMaxDepth 9
:DHANDDepthStep 0.05
:FroudeThreshold 0.94
### Calibration parameter ----
:RoughnessMultiplier 1.1
### XSection Specific Options ----
:XSectionDX 0.1
:XSectionConveyanceMethod DEFAULT_CONVEYANCE
:ManningEnforceValues TRUE
### Reach Specific Options ----
:ReachConveyanceMethod DISCRETIZED_CONVEYANCE
:ReachIntegrationMethod EFFECTIVE_LENGTH
## Solver Options ----
:SolverMethod BRENT
:EnableExhaustiveSolution
### Other Options ----
:SkipHeadwaterNodes
:CreateRavenProfiles
### PostProcessing Options ----
:PostprocessingInterpolationMethod INTERP_HAND
:GISPath GIS_files
:WriteNetcdfFormat
:WritePngFormat
:WriteCatchmentJSON
### Runtime Options ----
:SilentRun
:NoisyRun
:DebugRun
The specific commands are elaborated on below.
:ModelType
The model type is specified as either STEADYFLOW for standard step 1D calculations, or HAND_MANNING, which applies a simplified approach that uses the Manning’s equation to compute depths in each streamnode. In the latter case, the depths in each streamnode are computed independently and hydraulic considerations such as energy losses and backwater effects are not considered.
:RegimeType
The regime type is specified as either SUBCRITICAL, SUPERCRITICAL, or MIXED. Currently, Blackbird only supports the SUBCRITICAL regime.
:Tolerance
Tolerance error in metres within the standard step depth calculations at which the iteration stops and the solution is accepted.
:ToleranceNormalDepth
Tolerance error in metres within the normal depth calculations at which the iteration stops and the solution is accepted.
:IterationLimit
Limit on the number of iterations in the computation of depths by the standard step solver.
:ExtrapolateDepthTable
Boolean indicating whether to extrapolate beyond the data in the preprocessed hydraulic variables (TRUE) or stop if asked to extrapolate beyond the table limits (FALSE)
:FrictionSlopeMethod
The friction slope method which indicates how the average slope term \(S_f\) is computed between two streamnodes. This term is applied in calculating the energy loss between two streamnodes. The available options are AVERAGE_CONVEYANCE (default), AVERAGE_FRICTION, GEOMETRIC_FRICTION, HARMONIC_FRICTION, and REACH_FRICTION.
For example, if method is selected as AVERAGE_CONVEYANCE, then \(S_f\) is computed as:
\[ S_f = \left( \frac{Q_1+Q_2}{K_1+K_2} \right)^2 \] where \(Q_1\) is the flow at the downstream streamnode, \(Q_2\) is the flow at the upstream streamnode, \(K_1\) is the conveyance of the downstream streamnode, and \(K_2\) is the conveyance of the upstream streamnode.
If the method is AVERAGE_FRICTION, the friction slope \(S_f\) is computed simply as:
\[S_f = \frac{S_{f_1} + S_{f_2}}{2}\] where \(S_{f_1}\) is the friction slope at the downstream streamnode, and \(S_{f_2}\) is the friction slope at the upstream streamnode.
:ManningCompositeMethod
This command specifies the method for computing the composite Manning’s roughness for the streamnode at a particular depth. This may be one of the following options: EQUAL_FORCE, WEIGHTED_AVERAGE_AREA, WEIGHTED_AVERAGE_WETPERIMETER, WEIGHTED_AVERAGE_CONVEYANCE, and EQUAL_VELOCITY.
If the method is EQUAL_FORCE (the default), then \(n_c\) is computed as:
\[ n_c = \sqrt{\frac{1}{P} \sum P_i*n_i^2} \]
where \(P\) is the total wetted perimeter, \(P_i\) is the wetted perimeter of the ith section, and \(n_i\) is the Manning’s roughness coefficient of the ith section.
If the method is WEIGHTED_AVERAGE_CONVEYANCE, then $n_c$ is computed as:
\[ n_c = \frac{1}{K_T} \sum_{i=1}^{N_b} K_i*n_i \]
where \(K_T\) is the total conveyance (\(\sum K_i\)), \(K_i\) is the ith conveyance, \(n_i\) is the ith roughness coefficient, and \(N_b\) is the number of sections (either cross-sections divisions or raster cells).
:SilentRun
The model runs with minimal output if TRUE, useful for faster and repeated runs.
:NoisyRun
The model runs with additional output if TRUE, useful in model investigations and diagnostics.
:DebugRun
The model runs with even more outputs that are typically used in debugging. This has some overlap with :NoisyRun
:DHANDMaxDepth
The maximum depth (metres) used to compute DHAND rasters. In tandem with :DHANDDepthStep, Blackbird will look to DHAND rasters in the folder defined by :GISPath based on the sequence of DHAND depths.
:DHANDDepthStep
The depth increment (metres) used to compute DHAND rasters. In tandem with :DHANDMaxDepth, Blackbird will look to DHAND rasters in the folder defined by :GISPath based on the sequence of DHAND depths.
:WriteNetcdfFormat
If this command is present, generates output depth rasters in NetCDF format instead of GeoTiff format.
:InputNCFile
Optional name of the input NetCDF file (NOTE: must be relative to :GISPath). If not present, will search for the default name of bb_inputs.nc
:WritePngFormat
If this command is present, generates output depth rasters in PNG format instead of GeoTiff format with metadata provided in JSON format.
:RoughnessMultiplier
A numeric global roughness multiplier that multiplies all Manning’s n roughness values at each streamnode by the given value. Multiplier must be greater than zero.
:XSectionConveyanceMethod
The conveyance method for cross-sections. This may be one of OVERBANK_CONVEYANCE, DEFAULT_CONVEYANCE, COORDINATE_CONVEYANCE, DISCRETIZED_CONVEYANCE_XS, AREAWEIGHTED_CONVEYANCE_ONECALC_XS, or AREAWEIGHTED_CONVEYANCE.
:ReachConveyanceMethod
The conveyance method for reaches. This may be one of DISCRETIZED_CONVEYANCE_R, AREAWEIGHTED_CONVEYANCE_ONECALC_R, or ROUGHZONE_CONVEYANCE.
:ReachIntegrationMethod
The integration method for reaches, which tells Blackbird how the pre-processed hydraulic properties were computed. If the option is set to EFFECTIVE_LENGTH (default), this indicates the effective length was used to normalize properties. If REACH_LENGTH, this indicates the reach length was used for normalization, and Blackbird will automatically recalculate the properties in the pre-processed tables to be normalized to the effective reach length.
:SolverMethod
This indicates the type of solver to be used in computing depths in the model. For steady-state, the options are as follows:
BRENT(default): uses an implementation of the Brent root-finding algorithm (Brent (1973)) to robustly compute the critical and estimated depths. This is the recommended method for all steady-state cases.
SECANT: uses the secant method to estimate critical and estimated depths. This implementation uses a number of rules depending on the depths and iteration number to attempt to produce stable results. If the:EnableExhaustiveSolutionis also in the .bbi file, then the secant method will instead of theEXAUSTIVEapproach for a given node if a stable solution is not found after a few iterations with the SECANT method.
EXHAUSTIVE: a non-iterative method, this method deploys an ‘exhaustive’ calculation of all points in the pre-processed depth curves to determine which depth has a minimum energy for the critical depth, and which produces the lowest error in the energy balance from the previous node, resulting in the estimated depth. The accuracy of this method is limited by the points in the pre-processed depth curves as no interpolation is performed, and will very likely be slightly slower than theBRENTmethod.
:SkipHeadwaterNodes
This option allows the model to skip all calculations in headwater nodes, and effectively set the depth to zero in all headwater streamnodes.
This is useful in building coupled hydrologic-hydraulic models, where the flow estimations require the drainage area from headwater basins to be included, even if a complete channel for flood mapping with Blackbird is not defined.
:CreateRavenProfiles
With this option, the model will not be run to estimate depths and/or produce depth maps. Instead, an output file with Raven-compliant channel rating curves will be created for each streamnode in the model. This file can be used as an alternative to specifying channel profiles with cross-sections of elevation and roughness values. The output format of this file is:
:ChannelRatingCurves profile_00002
:BedSlope 0.0984
:StageRelations # [depth, area, top_width, discharge, perimeter]
0.00, 0.000, 0.000, 0.000, 0.000
0.50, 2.043, 177.422, 12.089, 177.422
...
:EndStageRelations
:EndChannelRatingCurves
Streamnodes with a bed slope of less than 0.01 are set to 0.01 to comply with Raven limits on bed slope for routing (Raven issues warnings with a bed slope of less than 0.01).
If :SkipHeadwaterNodes is specified, then headwater nodes will also be skipped in the generated channel rating curves file, since it is assumed that headwater nodes will not have useful routing information and are also not required in Raven. Instead, a single default profile is provided for headwaters with placeholder values. This is not anticipated to impact the routing in Raven, as channel routing is not performed for headwater basins.
In addition, a default Raven-compliant .rvh file will be produced, with a :Subbasins and :HRUs block included, which assumes a single HRU per subbasin. A default set of classes are included for each HRU. Slope is set to the bed slope (a bold assumption, as the channel bed slope is likely not the same as the overall subbasin slope), and the aspect is simply set to 90 for each HRU. For more sophisticated Raven models, it is recommended that the HRU properties are recalculated, as the values in this HRU table may not be accurate, and may have implications on rainfall-runoff modelling.
:PostprocessingInterpolationMethod
The post-processing method used to generate depth rasters following the computation of depths at each streamnode. This may be one of:
NONE: no depth raster is computed, only HydraulicOutputs.csv is outputted from results.CATCHMENT_HAND: the streamnode depth is applied as a constant depth within the streamnode, and depths are computed from the HAND raster
INTERP_HAND: streamnode depths are interpolated, and depths are computed using the HAND raster
CATCHMENT_DHAND: the streamnode depth is applied as a constant depth within the streamnode, and depths are computed from the closest DHAND raster
INTERP_DHAND: streamnode depths are interpolated, and depths are computed from the closest DHAND raster
:WriteNetcdfFormat
The output format of flood rasters is instead written in netcdf as an .nc file.
:WritePngFormat
The output format of flood rasters is instead written as a .png file, which is optimized for viewing in web browsers.
:WriteCatchmentJSON
The JSON files used in BlackbirdView are additional written to the output folder.
:GISPath
Defines the directory where Blackbird will look for relevant GIS files. Standard naming conventions for all inputs GIS files are expected within this folder, others will be ignored.
:RedirectToFile
This command will direct Blackbird to read in another .bbi file at the specified location. This command is useful for organization of multiple large model files.
2.5 Comment Characters
Note that comments may be included on individual lines using the # character as the first word on the line. Inline comments are also allowed - Blackbird will ignore any text that appears to the right of the # character.