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
### 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
### PostProcessing Options ----
:PostprocessingInterpolationMethod INTERP_HAND
:GISPath GIS_files
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, and runs with lots of diagnostics info if FALSE.
: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.
: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
: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.
Boundary Conditions file (.bbb)
The primary input file (.bbb) stores the model boundary conditions, including any upstream or downstream boundaries (e.g., normal depth at the downstream streamnode) and flows provided to the model. An example .bbb 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 Boundary Conditions File (.bbb)
#
:BoundaryCondition
:StationName catch_050
:Station -99
:Reach default_reach_name
:Location downstream
:BCType NORMAL_DEPTH
:BCValue 0.005713
:InitialWSL -99
:EndBoundaryCondition
:SteadyFlows
:Attributes nodeID flowprofile1 flowprofile2 flowprofile3
2 156.2 246.2 314.7
:EndSteadyFlows
# source and sinks correspond to number of flow profiles
# if none provided assume sources and sinks are all zero
:StreamnodeSourcesSinks
:Attributes nodeID source sink source sink source sink
2 0 0 0 0 0 0
:EndStreamnodeSourcesSinks
The specific commands are elaborated on below.
:BoundaryCondition
The boundary conditions at specific streamnodes that allow the standard step solution to start at either the upstream or downstream ends are provided within this block. For a subcritical regime, this only needs to be defined at the downstream most streamnode (the only regime currently supported).
:StationName
Within the :BoundaryConditions block, the station name defines the name of the streamnode at which the boundary condition is applied.
:Reach
Within the :BoundaryConditions block, the name of the reach on which the streamnode is located.
:Location
Within the :BoundaryConditions block, the location is defined either as DOWNSTREAM or UPSTREAM, depending on the type of boundary condition being applied.
:BCType
Within the :BoundaryConditions block, this defines the type of boundary condition. This can be one of:
NORMAL_DEPTH: computes the normal depth at the streamnode
SET_WSL: sets the water surface level (WSL) to a specified value (must be greater than or equal to the minimum thalweg elevation)
SET_DEPTH: sets the depth in the streamnode (must be greater than zero)
:InitialWSL
Within the :BoundaryConditions block, the initial water surface level may be set. If left as blank (-99), this will be estimated automatically as a starting guess. Only used if :BCType is NORMAL_DEPTH.
:SteadyFlows
This table specifies the flows (in \(m^3/s\)) at each node by nodeID. Multiple flow profiles may be provided, and each flow profile (i.e., a set of flows describing flow at each streamnode) will be run in each model simulation. The table is provided in the following format:
:SteadyFlows
:Attributes nodeID flowprofile1 flowprofile2 .. flowprofile3
<nodeID1> <flow1> <flow2> ... <flow3>
<nodeID2> <flow1> <flow2> ... <flow3>
...
:EndSteadyFlows
The flows may vary between streamnodes to represent accumulation of water within the system from rainfall-runoff process or other phenomenon. This table is used in conjunction with :StreamnodeSourcesSinks to compute the flows in each streamnode.
:StreamnodeSourcesSinks
This table (optionally) specifies the flow sources and sinks (in \(m^3/s\)) at each node by nodeID. For multiple flow profiles, the sources and sinks under each flow profile may be specified.
The table is provided in the following format, where fp refers to flow profile:
:StreamnodeSourcesSinks
:Attributes nodeID source sink ... source sink
<nodeID1> <fp1_source> <fp1_sink> ... <fpN_source> <fpN_sink> ... :EndStreamnodeSourcesSinks
These may be a more convenient method for representing explicitly where flows vary from the :SteadyFlows table. If not provided for any nodes (or at all), the sources and sinks for all flow profiles are assumed to be zero (i.e., no change from the :SteadyFlows table).
:RedirectToFile
This command will direct Blackbird to read in another .bbb file at the specified location. This command is useful for organization of multiple large model files.
Geometry file (.bbg)
The primary input file (.bbg) stores the model geometry data. A partial example .bbg 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.
# :Streamnodes block must be defined first
:Streamnodes
:Attributes nodeID nodetype downnodeID upnodeID1 upnodeID2 stationname station reachID ds_reach_length us_reach_length1 us_reach_length2 contraction_coeff expansion_coeff min_elev bed_slope
2 REACH 3 -1 -1 catch_002 284.5 1 269.8 284.5 -99 0.1 0.3 454.9058 0.0324
3 XSECTION 4 2 -1 catch_003 554.4 1 277.6 269.8356 -99 0.1 0.3 454.6 0.02569
...
:EndStreamnodes
# point to preprocessed hydraulic variables for reaches
:RedirectToFile waldemar_reaches.bbg
# point to cross-section data
# :RedirectToFile waldemar_xsections.bbg
The specific commands are elaborated on below.
:Streamnodes
This defines the table of streamnodes used in the model, as well as relevant hydraulic properties of the network (such as the upstream and downstream nodes, reach lengths), and the type of streamnode. The type of streamnode may be REACH, in which case pre-processed reach-integrated properties will be expected to be provided later with the :PreprocHydTable command, or of type XSECTION, in which a cross-section profile will be expected with the :StreamnodeCrossSection command.
This table must be defined before other streamnode properties (such as cross-section or reach-integrated data) is provided.
:CrossSections
This defines the section in which cross-section data is provided, and ends with the :EndCrossSections command. Within this block, cross-section data is provided with the :StreamnodeCrossSection command. The format for this table is:
:StreamnodeCrossSection <nodeID> # nodeID
:BankStations <xx1> <xx2>
:RoughnessZoneValues <nn1> <nn2> <nn3>
:Attributes xx zz nn
0 100.0 0.05 # first one must be defined
1 99.5 # interpret as the same as previous
2 98 # interpret as 0.05
3.5 96 0.035
4 95.58 0.035
5 96.5
6 97 0.07
7 99
:EndStreamnodeCrossSection
where:
within :BankStations, xx1 is the location of the left bank station, xx2 is the location of the right bank station
within :RoughnessZoneValues (optional), nn1 is the roughness value of the left overbank section, nn2 is the roughness at the channel section, nn3 is the roughness at the right overbank section. If provided, these will override the nn values in the Attributes section
within the :Attributes block, xx is the horizontal data perpendicular to the channel, zz is the elevation data in the cross-section, and nn is the Manning’s roughness value for that point. The roughness may be defined irregularly, in which case the previous roughness point is assumed to apply at the next horizontal location as well until a new one is defined.
:PreprocHydTable
This defines the table of pre-processed hydraulic properties for many attributes, and defined for each streamnode of type REACH.
The full description is omitted here for brevity, please see sample files for examples of this type of table.
:RedirectToFile
This command will direct Blackbird to read in another .bbg file at the specified location. This command is useful for organization of multiple large model files.
This is particularly recommended for the .bbg file, which is likely to be the largest file(s) in the Blackbird model setup. It may be especially helpful to separate the base :Streamnodes table, any :CrossSections data, and any :PreprocessedHydraulicTables data.
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.