7.2 Common Functionality

The following sections are the same (or mostly so) between TUFLOW HPC and TUFLOW Classic.

7.2.1 Defining the Domain

Each fixed grid 2D domain is treated as a rectangle at any orientation. The orientation and dimensions of each 2D domain are defined using .tgc file commands. For the orientation it is recommended that the X-axis falls between 90° and –90° of East due to some post-processing software only operating within this range.

Several options are available for setting the 2D domains grid location and orientation. The options are:

It is recommended during the initial model build process, to view the _dom_check file to ensure that the model domain is set up as intended.

Note, if using the TUFLOW HPC Quadtree functionality, the 2D domain is set up in the Quadtree Control File (.qcf), see Section 7.3.1.2.

Table 7.1: Location (2d_loc) Attribute Descriptions
No Default GIS Attribute Name Description Type
1 Comment Optional field for entering comments. Not used. Char(250)

After establishing the domain’s origin, orientation and extent, the .tgc command Cell Size is used to define the domain’s fixed grid resolution. For example, the below command in the .tgc sets the cell size to 10m (or 10ft is using Units == US Customary):

Cell Size == 10

Note, it is not necessary to specify domain dimensions that are an exact multiple of the domain’s Cell Size (e.g. when using the Grid Size (X,Y) command).

Within this computational domain, 2D cells can be set to be active or inactive, as described in Section 7.2.2. The redundant (inactive) areas around the edges of the domain’s bounding rectangle are automatically removed from the computation. However, when allocating memory for processing of the arrays this is still accounted for. To determine the redundant area, search the TUFLOW log file (.tlf) for “redundant”, as shown in Figure 7.4. If the redundant value is large, revising the model domain dimensions will reduce the memory usage during startup.

Redundant Perimeter Sections Reported in the TLF

Figure 7.4: Redundant Perimeter Sections Reported in the TLF

7.2.2 Active / Inactive Cells

Each 2D cell is assigned a code to indicate its role. The available code types are listed in Table 7.2. The default value is one (1) for active (i.e. the cell can be wet or dry during a simulation).

Commands used to modify the cell codes are:

  • Set Code in the .tgc file. This option sets the cell codes for the entire domain.
  • Read GIS Code in the .tgc file. This option sets the cell codes based on the value in 2d_code input polygons, see Table 7.3.
  • Read Grid Code in the .tgc file. This option sets the cell codes based on the values of an input raster grid.
  • Read GIS Code BC in the .tgc file. This option sets the cell codes from the 2d_bc input polygon. The Type attribute must be set to “CD” and the code value is taken from the 2d_bc f attribute, see Table 8.6.

Note when using the Read GIS Code command, code values are extracted from objects in a 2d_code layer (see Table 7.3). When using the Read GIS Code BC, code values are extracted from objects in a 2d_bc layer (see Table 8.6). Confusing the two GIS layer types and commands will result in WARNING 2320 message being issued.

A typical approach is to set all the cells to be inactive using Set Code == 0 and then read a GIS layer defining the active cells with Read GIS Code == <layer>. The GIS layer regions would have the attribute set to 1 for active. For example:

Set Code == 0 ! Set all cells to inactive (i.e. Code 0)
Read GIS Code == ..\model\gis\2d_code_M01_002.shp ! Reads in a polygon that sets cells to active (i.e. Code 1)

Boundary Cells are automatically set to 2 along external boundaries and links (e.g. HX, HS, HT, QT boundaries). This code value of 2 (see Table 7.2), is output in the TUFLOW grid check file and a value of 2 should not be used in input commands. The _grd_check file can be used to view the active cells (and their code values e.g. 1, 2 or -1) within the domain.

For TUFLOW Classic models containing multiple 2D domains (see Section 10.7.2), a useful option for setting the cell codes is the INVERT flag (see Read GIS Code Invert or Read GIS Code BC Invert), which allows the same code layer/polygons to be used for activate and deactivate regions in multiple 2D domains using a single GIS input.

TUFLOW automatically strips any redundant rows and columns around the active area of the model to reduce simulation times. This is described in Section 7.2.1.

Table 7.2: Cell Codes
Type Code Description
Inactive Cells 0

Inactive cells are cells that are totally removed from the computation. Maximising the area of inactive cells reduces computation time and output file sizes.

For a fixed grid 2D domain, inactive cells still consume memory during a simulation, as these domains are stored on a row column rectangular grid.

For a quadtree grid, inactive cells will consume temporary memory (CPU RAM) during model startup, but do not consume memory (CPU or GPU) during the simulation.
Active Cells 1 Active cells are cells that can wet and dry during a simulation.
Boundary Cells 2

Boundary cells indicate cells that are an external boundary (including some types of 1D/2D dynamic links). There should be an active cell on one side and an inactive or null cell on the other at an external boundary. If an external boundary is digitised inside an active area (i.e. not along the active area boundary), water can flow in both directions either side of the boundary line (only in rare situations would the modeller require this).

Note: It is not necessary to manually specify boundary cells. Boundary lines are digitised in GIS layer(s) and TUFLOW automatically assigns the boundary code to the cells (see Section 8.4.1 and Read GIS BC).
Null Cells -1

Inactive cells used to deactivate cells within the active domain. Null cells may be preferred to inactive cells as they are not excluded from the output mesh structure (eg. not excluded from the XMDF mesh). For two simulations to be compared in some post-processers (eg. SMS), they must have exactly the same mesh. For example, if an area in a model is removed (e.g. filling part of a floodplain), use null cells or raise the ground elevations in preference to using inactive cells so that the two simulations can be compared.

Setting null cells is not supported when using the TUFLOW HPC Quadtree (see Section 7.3.1) functionality.
Table 7.3: 2D Code (2d_code) Attribute Descriptions
No Default GIS Attribute Name Description Type
1 Code The code value (see Table 7.2) to be assigned to cells falling on or within the object. Integer

7.2.3 Data Layering

TUFLOW models are set up using data layering. This is an important, and very useful concept.

Commands are applied in sequential order; and it is possible to override previous information with new data to modify the model in selected areas. For topography modifications, this is extremely useful where a base dataset exists, over which areas need to be modified to represent other scenarios such as a proposed development. This eliminates or minimises data duplication. This concept of layering datasets may also be applied to other GIS , including (but not limited to) 2d_mat, 2d_code and 2d_soil layers. For example, setting all cell codes inactive, then reading in a GIS polygon covering the active cells (as discussed in Section 7.2.2).

Figure 7.5 shows a visual representation of how TUFLOW interprets the following set of .tgc commands:

Read Grid Zpts == grid\DEM_5m.tif
Read Grid Zpts == grid\Bathy_1m.tif
Read GIS Z Shape == gis\2d_zsh_building.shp
The command lower in the TGC will take precedence over a command above where data overlaps and the command has the same functional purpose (eg. topography definition). The DEM_5m layer is read in first. The elevations are then replaced by the overlapping Bathy_1m layer. A 2D Z Shape (2d_zsh_buildings) is then read in which raises all elevations inside the polygon by 5m. The result is shown in the DEM_Z. The DEM_Z is a check file representing the elevation data that TUFLOW has used for the hydraulic calculations. For more information on check files see Section 14.6.

Visual Representation of Data Layering in TUFLOW

Figure 7.5: Visual Representation of Data Layering in TUFLOW

Data layering is discussed in further detail for elevation updates in Section 7.2.5.

7.2.4 Sampling of Data Sets

To setup the boundary of the 2D grid and assign data values to the cells from DEMs, TINs, land-use polygons, soil polygons and so forth, these data layers need to sampled, interrogated or interpolated. There are two approaches to sampling datasets in TUFLOW:

  • Traditional approach (Section 7.2.4.1)
  • Sub-Grid Sampling (SGS) approach - recommended (Section 7.3.3)

The traditional approach by 2D solvers is to sample a single value at the 2D cell centre (ZC). TUFLOW also supports sampling values, for some data types, at the centre of each cell side (ZV and ZU) and the corner of the cell (ZH). The cell side sampling for example, enables a cell side to be set to the height of a levee that is narrower in width than the 2D cell. Subsequently controlling when water can move from adjacent cells depending on the water level relative to the levee crest elevation. The traditional sampling approach is explained in Section 7.2.4.1.

As of the 2020-01 TUFLOW release, TUFLOW HPC supports the sampling of elevations at sub-grid locations, referred to as Sub-Grid Sampling (SGS). The TUFLOW Classic solver does not support SGS due to the nature of the implicit solution and preferred use of a fixed timestep. The many benefits of using SGS are detailed in Section 3.2.3, implementing the SGS approach is described in Section 7.3.3.

7.2.4.1 Traditional Sampling Approach

Topographically, the cell is treated as having a flat horizontal bed at a height set to the cell centre (ZC) elevation, and the cell faces as having flat, rectangular shaped sides at a height set to the cell mid-side (ZU and ZV) sampled elevations as illustrated in Figure 7.6. Using the traditional sampling approach, the topography of a cell is treated as follows:

  • The cell volume is represented as a square bucket with a flat horizontal bed, and simply calculated as the cell centre depth times the cell area.
  • The flow area across a cell face used for the momentum and mass balance equations is simply represented as a rectangular section (i.e. cell side centre depth times the cell width).
  • The bed resistance term in the momentum equation (e.g. Manning’s equation) uses the Resistance Radius approach (i.e. the cell face radius value as used in Manning’s equation is set to the depth and the cell width or cell size is used for the wetted perimeter).
2D Cell Topography - Traditional Approach

Figure 7.6: 2D Cell Topography - Traditional Approach

7.2.5 Elevations

2D domain elevations are defined in the .tgc file. As mentioned in Section 7.2.3, a powerful feature of TUFLOW is its capacity to build the 2D elevations from any number of GIS layers and/or TINs. The typical approach adopted is as follows:

  1. All elevations in the model start with an un-initialised value of 99999. TUFLOW will output an error if any elevations of 99999 (or higher) occur after the processing of the elevations. This is to indicate that elevations in active cells have not been initialised or set.
  2. A default elevation is specified first in the .tgc file using Set Zpt. An inundation free elevation is usually specified. If your elevation data sets are intended to cover your entire active area this step can be omitted so as to trigger the error described above in case elevation data are unintentionally missing (e.g. unintended null areas in a DEM or accidental omission of a layer).
  3. The elevations read directly from a DEM using Read Grid Zpts, or read from TIN in the SMS, 12D or LandXML TIN formats (see Read TIN Zpts).
  4. If there are areas where data is either missing or erroneous, these can easily be corrected via interpolation using Read GIS Z Shape regions or polygons. This is achieved by digitising a polygon around the missing or erroneous data. TUFLOW interpolates elevations across the region based on the existing Zpts around the perimeter of the polygon. An example is shown in Section 7.2.5.2. Missing or erroneous data often occurs with aerial surveys where the sampling is in areas of thick vegetation, water or where post processing has poorly filtered the removal of elevated objects (e.g. buildings).
  5. Sometimes there is a need to remove cut and fill works from the topography. For example, model calibration often requires the removal of infrastructure, such as levees, road embankments and developments that may not have existed at the time of the historic event to back date the topography within the model. This is easily done using Read GIS Z Shape by simply digitising polygons around the various features.
  6. The base elevations set up in the previous step(s) can be modified to represent hydraulic controls, proposed works, failure of a flood defence wall, etc. Some examples are:
    • The crests of road/rail embankments, levees, fences and other solid obstructions are easily inserted using Read GIS Z Line, Read GIS Z Shape or Read GIS Z HX Line. Read GIS Z Shape is particularly powerful as 3D lines can be given a thickness making it very easy to quickly raise, or lower, elevations along a road alignment or a diversion channel where the width of the embankment/channel is wider than the 2D cell size.
    • The proposed cut and fill for a development or other works can be incorporated using Read GIS Zpts, Read GIS Z Shape, Read TIN Zpts or Create TIN Zpts. These powerful commands can set elevations based on regions. Within regions TINs can be generated from points and lines, and the perimeter of the TIN can be automatically merged with the existing Zpts. A TIN of the cut and fill produced by SMS or 12D can be read directly into TUFLOW using Read GIS Zpts.
  7. If there is a need to simulate the failure of a flood defence wall or road/rail embankment, or the collapse of fences, Read GIS Variable Z Shape can be used to control the collapse of the embankment or fences over time. The collapse can be triggered to occur at a specified time, when a water level reached somewhere within the model, or based on the water level difference between two locations.

A 2D domain’s Zpts are built up using one or more of the commands shown in Table 7.4 and discussed in the following sections.

Table 7.4: 2D Zpt Commands
Command Description
Set Zpt Sets all Zpts over the whole 2D domain to the same value. Useful for providing an initial elevation prior to other commands as some Zpts in inactive (land) parts of the model may not receive a value. The default value for all Zpts is 99999. Every Zpt must be assigned a value, essentially making this command mandatory.
Read Grid Zpts Directly interrogates a raster grid (e.g. tif, .flt or .asc) to define Zpt elevations. This command is similar to Read TIN Zpts but works on a grid rather than a TIN.
Read TIN Zpts Reading of a TIN to set the Zpt values within the TIN.
Read GIS Z Shape

Powerful command to modify Zpt values using points, lines and polygons. Lines can vary in width from just the cell sides (thin), whole cells (thick) or be assigned a width (thickness). TINs are created within the polygons and incorporate elevations from points and lines that fall within the polygon. The perimeter of the polygon can be merged with the current Zpt values in part, or in its entirety.

Read GIS Z Shape and Create TIN Zpts are excellent for removing bad data areas and for filling in null areas where the aerial survey has provided poor or no data. Another example is to remove buildings from a DEM.
Read GIS Variable Z Shape Allows the user to define the eroded 3D shape of a section of the 2D domain, specify the period for collapse, and how the collapse is triggered (i.e. at a specified time or when a water level is reached or when a water level difference is exceeded). Raising of the Zpts over time is also permitted (e.g. to model the influence of flood defences during an event or a landslide filling a river).
Create TIN Zpts Useful for having TUFLOW create a TIN using polygons for TIN boundaries and points and lines within the polygons to create the TIN. If no points are snapped to the perimeter vertices of a polygon, the elevations around the polygon’s perimeter are merged with the current Zpt values. The resulting TIN can optionally be exported to SMS and 12D TIN formats.
Read GIS Z Line This is a legacy feature and it is recommended to use the Z Shape functionality (Section 7.2.5.2) instead.
Read GIS Z HX Line Similar to Read GIS Z Line, but uses HX lines and ZP points in a 2d_bc layer (see Table 8.6) to adjust the 2D cell elevations along HX lines.
Read GIS Zpts

Typically used for simple modifications of sections of the topography. Examples are filling an area (defined by a region or polygon object) to the same elevation or dredging (lowering) a section of river using Read GIS Zpts ADD.

Read GIS Z Shape offers greater functionality and may be preferable to using Read GIS Zpts to modify Zpts.
Maximum Points
Maximum Vertices
Use these commands to increase the maximum number of elevation points or maximum number of vertices in a single line or polygon.
Default Land Z Now rarely used in lieu of Set Zpt.
Interpolate ZC
Interpolate ZHC
Interpolate ZUV
Interpolate ZUVC
Interpolate ZUVH

Allows the interpolation of Zpts from other types of Zpts. Now rarely used as nearly all models assign values directly to all the Zpts. The original TUFLOW code only required input of ZH points, and Interpolate ZUVC provided a tool for interpolating the other Zpts.

Models with “bumpy” terrain, such as that from airborne laser surveys, might benefit from using Interpolate ZHC or Interpolate ZUV.

Models through urban areas where the DTM includes the buildings may benefit from using Interpolate ZC ALL LOWER, which reduces the amount of cells that become blocked out due to high ZC elevations from buildings.
ZC == MIN(ZU,ZV) Rarely used. Sets the ZC (cell centre elevation) to the lower of the ZU and ZV (cell sides).

7.2.5.1 Direct Reading of DEM Grids

The use of the .tgc command Read Grid Zpts allows TUFLOW to directly interrogate (point inspect) a DEM to set the Zpt elevations. This command is similar to Read TIN Zpts but works on a grid rather than a TIN.

Grid formats currently supported are:

  • GeoTIFF (.tif)
  • Geopackage raster (.gpkg)
  • Binary grid format (.flt/.hdr)
  • ESRI ASCII Grid format (.asc)

Nearly all GIS software will support one of the above grid formats.

The GeoTIFF format is the default output format and preferred input format. It is faster to read and write compared to the .flt and .asc formats, and also supports compression. The format of grids can be converted (e.g. from .flt to .tif), the TUFLOW Wiki Raster Format Conversion details how to do this.

Like other .tgc commands, the command Read Grid Zpts can be specified multiple times. An option to specify ADD, MIN or MAX in the same way as for other similar commands is also available.

Clip regions can be specified as a second argument in the command Read Grid Zpts (and also Read TIN Zpts) by reading in a GIS layer containing one or more polygons to clip the area of Zpts to be inspected. For example, the command below will only assign elevations to Zpts that lie inside polygons within the 2d_clip_DEM layer:

Read Grid Zpts == grid\DEM_M01.tif | DEM\2d_clip_DEM.shp

The attributes of the clip layer are not used, and only polygons are processed. As such, any of the TUFLOW empty files can be used as the template for this layer. Polygons can have holes in them if required.

This is particularly useful for clipping out a TIN or DEM due to unwanted or irregular triangulation around the periphery, especially for secondary TINs/DEMs of proposed developments lying within the primary TIN/DEM.

Note: For your base Zpts from the primary DEM or TIN, do not clip this with your active 2d_code layer as this will cause problems with Zpts along any external 2d_bc boundaries. If no clip layer is specified, the Read Grid Zpts or Read TIN Zpts commands assign all Zpts falling within the Grid / TIN an elevation irrespective of whether a cell is active or inactive.

When reading grids into TUFLOW, the same interpolation approach occurs for all formats. The procedure TUFLOW follows is:

  • The DEM elevation is assumed to be in the centre of the DEM grid cell (pixel), as shown by the four red circles in the picture below.
  • A midpoint vertex (green circle) is defined in the middle of the four DEM elevations.
  • The elevation of the midpoint vertex (green circle) is equal to the average of the four DEM elevations (red circles).
  • The DEM grid cell centre points (red circles) and midpoint vertex (green circle) are used to create a TIN.
  • Elevations within the TIN are interpolated from the associated TIN points. For example, a Zpt is included in the image below as a yellow point. The elevation assigned to that Zpt is the planar (linear) interpolation of the surrounding three elevation points associated with the top TIN triangle in the image.

7.2.5.2 Z Shape Layers (2d_zsh)

Read GIS Z Shape provides flexibility for manipulating Zpt values by combining various 2d_zsh GIS layer geometries and attribute options. This includes the ability to represent 3D breaklines and TINs. Tables 7.5, 7.6 and 7.7 describe the attributes and options available for each geometry (point, line and polygon). Example use cases are provided in Section 7.2.5.2.2.

Zpt values are primarily modified using 2d_zsh polygon and line geometries. Additional flexibility is available when they are grouped with points, lines and other attribute options. 2d_zsh points do not directly modify Zpt values. Instead, they assign elevations to lines and polygons or help define TINs when used with a polygon. Line behaviour depends on classification. Lines are considered Thin, Thick or Wide based on the Shape_Width_or_dMax attribute value (see Table 7.6).

The following describes how each geometry modifies Zpt values:

  1. Polygons:
    • All polygons are triangulated using the process described for Create TIN Zpts in Section 7.2.5.4. However, there are two key differences when applying this process to Z shape (2d_zsh) layers:
      • If a line is to be used for TIN generation, “TIN” must be specified for the Shape_Options attribute (see Table 7.6).
      • Merge polygon handling differs slightly. For Create TIN Zpts, polygon vertices without defined elevations from snapped points are automatically merged. For Read GIS Z Shape polygon layers, vertices can be assigned a special value of -99999 via a snapped point, allowing elevations to be interpolated from neighbouring defined vertices (see Table 7.5).
    • As shown in Figure 7.7:
      • The processed TIN triangulation polygons can be viewed in the _sh_obj_check layer.
      • Elevations of all control Zpts (ZC, ZH, ZU and ZV) within the polygon are modified based on the TIN triangulation.
    • When Sub-Grid Sampling (SGS) is enabled (with TUFLOW HPC) – see Section 7.3.3.1.2:
      • The 2d_zsh polygon modifies all SGS sample points within the polygon extent, based on the TIN triangulation (see Section 7.3.3.1.2).
      • If a crest is included in the modified topography and is not aligned exactly with a cell face, lower elevation values may be sampled in the SGS cell face width vs depth curve, potentially allowing water to leak at a lower elevation (see Section 7.3.3.1.3SGS Breakline Detection Delta). To avoid this, 2d_zsh breaklines with RIDGE or MAX specified for the Shape_Options attribute (see Table 7.6) should be added along the polygon or TIN crest to enforce the elevations.
    • When Quadtree is enabled (with TUFLOW HPC) – see Section 7.3.1.4:
      • For 2d_zsh polygons with merged elevations at undefined vertices extending across multiple quadtree nested layers, it is recommended to review the _zsh_zpt check file to ensure appropriate representation. CHECK/WARNING 2934 will be written in this instance.
Example of 2d_zsh polygon with Zpt modification

Figure 7.7: Example of 2d_zsh polygon with Zpt modification

  1. Thin and Thick Lines:
    • Line type is determined by the Shape_Width_or_dMax attribute value (see Table 7.6):
      • Thin lines have a value of zero (0).
      • Thick lines have a value greater than zero (0) and less than or equal to 1.5 times the 2D Cell Size.
    • As shown in Figure 7.8:
      • Thin lines modify cell faces (ZH, ZU and ZV Zpts) where the line intersects the ends of the model cell’s imaginary “cross-hairs” that extend from cell mid-sides to mid-side.
      • Thick lines modify entire cells (ZC, ZH, ZU and ZV control Zpts) along the line. The cells are selected if the thick line intersects any part of a cell’s imaginary “cross-hairs” that extend from cell mid-sides to mid-sides.
      • The MIN or GULLY Shape_Options (see Table 7.6) override the line type and define a path through the cell face and cell centre (ZU, ZV and ZC control Zpts only), lowering Zpt values only if the new value is lower than the current value to ensure a connected flow path.
        Note: The GULLY option is not intended to accurately represent the shape of a waterway and is not recommended for use with SGS, as it can overestimate conveyance. See Section 7.3.3 and the TUFLOW Wiki Quadtree and SGS FAQ page for more details.
      • Elevations assigned to control Zpts selected by either a thin or thick line are based on the perpendicular intersection of that Zpt with the line. If there is no perpendicular intersection, the nearest vertex on the line is used.
    • From the 2023-03 release onwards, TUFLOW HPC applies the full weir equation in the 2D domain along thin and thick breaklines using the advanced weir formulation (see Section 5.7.4.3). Default weir flow parameters can be adjusted separately for thin and thick breaklines – see Section 7.3.4.
    • When Sub-Grid Sampling (SGS) is enabled (with TUFLOW HPC) – see Section 7.3.3.1.2:
      • The 2d_zsh line modifies elevations based on the cell’s control Zpts (unlike polygons, which directly modify all SGS sampled elevations), as described in Section 7.3.3.1.3SGS Z Shape Line Approach.
      • By default, thin lines apply a gradient along the cell face using side and corner Zpts (ZH, ZU and ZV), while thick lines apply a sloping cell area for the cell volumes using ZC, ZU, ZV and ZH Zpts.
      • Use of the MIN or GULLY Shape_Options (see Table 7.6) is not recommended, as it can overestimate conveyance – see Section 7.3.4.
      • It is strongly recommended to add MAX or RIDGE lines (see Table 7.6) for every hydraulic control (e.g. levees (artificial or natural), road or rail embankments) to reduce “leakiness” caused by SGS sampling. See Section 7.3.3.1.3SGS Breakline Detection Delta.
    • When Quadtree is enabled (with TUFLOW HPC):
      • A modified cell “cross-hair” selection approach, referred to as the “spider web” approach, is applied. Instead of using cross-hairs, this method draws imaginary lines from the cell centre to each connected cell face, ensuring continuous cell selection.
Example of 2d_zsh GULLY, thin and thick line Zpt modification

Figure 7.8: Example of 2d_zsh GULLY, thin and thick line Zpt modification

  1. Wide Lines:
    • Wide lines have a Shape_Width_or_dMax (see Table 7.6) value greater than 1.5 times the 2D Cell Size.
    • As shown in Figure 7.9, a buffer polygon is created around the line, extending to a distance of half the Shape_Width_or_dMax value (on either side of the line). All control Zpts (ZC, ZH, ZU and ZV) within the buffer polygon are assigned elevations based on a perpendicular intersection with the line and the interpolated line elevation at that intersection. This buffer polygon is written to the _sh_obj_check layer.
    • When Sub-Grid Sampling (SGS) is enabled (with TUFLOW HPC) – see Section 7.3.3.1.2:
      • The 2d_zsh line will modify elevations based on the cell’s control Zpts (rather than directly modifying all sampled SGS elevations as for polygons), as described in Section 7.3.3.1.2 and Section 7.3.3.1.3SGS Z Shape Line Approach.
      • By default, wide lines apply a gradient along the cell face using the side and corner Zpts (ZH, ZU and ZV), and a sloping cell area for the cell volumes (using ZC, ZU, ZV and ZH Zpts). SGS points are sampled from these.
      • For partially selected cells at the buffer’s boundary, a sloping cell area is determined based on the cell’s modified Zpts within the buffer and the unmodified Zpts outside the buffer, and all SGS sample points will be updated within the partially selected cells.
      • It is recommended to consider alternative TIN based modification methods via Read GIS Z Shape 2d_zsh polygons or Create TIN Zpts to improve representation.
Example of 2d_zsh wide line Zpt modification

Figure 7.9: Example of 2d_zsh wide line Zpt modification

Table 7.5: 2D Z Shape (2d_zsh) Point Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z

Elevation of the point. Points are only used to assign elevations along lines and polygon perimeters, or for the creation of TINs within polygons. They do not modify Zpts directly.

An elevation of -99999 has a special meaning when the point is snapped to a vertex of a polygon. The -99999 indicates to ignore the elevation at that vertex and of any automatically inserted vertices between that vertex and the two neighbouring vertices. Instead the elevations are based on the elevations of the neighbouring vertices. If a neighbouring vertex also has a -99999 point snapped to it, the next vertex is used, and so on. This feature is very useful, as illustrated in the example above.

Note: This special meaning does not apply to points snapped to lines, only to polygons. For lines that have at least one point snapped to a vertex, any remaining vertices where no points are snapped will be interpolated by default.
Float
2 dZ Change in elevation of the Z attribute of the 2d_zsh object at the point (does not change the Zpt elevations directly). To leave Z unchanged, set to zero. Useful for easily adjusting the height of the shape object without having to change the original Z value. For example, if the Z attribute has been set to 5mAHD, a dZ value of 0.1m will raise the point’s Z elevation to 5.1mAHD. Float
3 Shape_Width_or_dMax Not used. Float
4 Shape_Options Not used. Char(20)
Table 7.6: 2D Z Shape (2d_zsh) Line Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z

Elevation of the line if no points are snapped to the line.

If the ADD option is specified, the value entered is used to increase (positive Z values) or decrease (negative Z values) the elevation of the Zpt values by the amount specified (i.e. a value of 0.5 will raise existing Zpt values by 0.5m).

Otherwise ignored.
Float
2 dZ

Ignored if the Z attribute is specified.

If point(s) (with the Z attribute set) are snapped to the line, this attribute behaves as described in Table 7.5.
Float
3 Shape_Width_or_dMax

No TIN: Provided TIN is not specified for the Shape_Options attribute, this attribute specifies the width (thickness) of the breakline in metres. If equal to zero, only the elevations along the cell sides and corners are adjusted (i.e. a thin breakline). If less than or equal to 1.5 times the 2D Cell Size, a line of whole cells is adjusted (i.e. a thick line). Otherwise all Zpts within a distance of half Shape_Width_or_dMax are adjusted.

TIN: If TIN is specified for the Shape_Options attribute, this attribute controls the maximum distance between automatically added intermediate vertices. If set to zero, half the 2D domain’s Cell Size is used. If less than zero no intermediate vertices are inserted.
Float
4 Shape_Options

ADD: Add the shape’s Z attribute value to the current Zpts. If ADD is specified, any automatic merging around the region perimeter is ignored (to merge the perimeter with existing Zpts when using the ADD option, specify a value of zero for the Z and dZ attributes for the region).

MAX, RIDGE or RAISE: Only changes a Zpt elevation if the Z Shape elevation at the Zpt is higher.

MIN, GULLY or LOWER: Only changes a Zpt elevation if the Z Shape elevation at the Zpt is lower.

TIN: Indicates the line is only to be used for of generation of TINS from polygons (only sections of TIN lines that fall within the polygon(s) are used).
Char(20)
Table 7.7: 2D Z Shape (2d_zsh) Polygon Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z

If the NO MERGE option is specified, used to set the elevation of the polygon perimeter if there are no points snapped to the perimeter.

If the ADD option is specified, the value entered is used to increase (positive Z values) or decrease (negative Z values) the elevation of the Zpt values by the amount specified.

Otherwise ignored.
Float
2 dZ

If the Z attribute and NO MERGE option is specified, this attribute behaves as described in Table 7.5.

If the Z attribute is not specified and the NO MERGE option is specified, this attribute behaves as described in Table 7.5, however Z is assumed to be zero (0).

Otherwise ignored.
Float
3 Shape_Width_or_dMax

The maximum distance between intermediate points inserted around the polygon’s perimeter to interpolate elevations from the current Zpts. If set to zero, half the 2D Cell Size is used. If less than zero no intermediate vertices are inserted.

Not used if the NO MERGE or ADD options are specified.
Float
4 Shape_Options

ADD: Add the shape’s Z attribute value to the current Zpts. If ADD is specified, any automatic merging around the region perimeter is ignored (to merge the perimeter with existing Zpts when using the ADD option, specify a value of zero for the Z and dZ attributes for the region).

MAX, RIDGE or RAISE: Only changes a Zpt elevation if the Z Shape elevation at the Zpt is higher.

MIN, GULLY or LOWER: Only changes a Zpt elevation if the Z Shape elevation at the Zpt is lower.

MERGE (default): The elevations at perimeter vertices that do not have an elevation point snapped to them are merged with the current Zpt values. This option will be applied if MERGE ALL or NO MERGE are not specified.

MERGE ALL: Ignores elevations from any points snapped to the perimeter and merges all perimeter vertices with the current Zpt values.

NO MERGE: When there are no points snapped to the perimeter, does not merge the perimeter elevations with the current Zpt values, and sets the elevation from the Z attribute.
Char(20)
7.2.5.2.1 Order of Processing

When a mixture of different geometries and attribute options occurs within the same 2d_zsh GIS layer to control how Zpt values are modified, the order in which they are processed follows the below protocols:

  1. Polygons are processed first, in the order that they occur in the 2d_zsh GIS layer.
  2. Wide lines are processed second, in the order that they occur in the 2d_zsh GIS layer. If the buffer polygons of two wide lines overlap each other, the latter one prevails (i.e. the modifications do not compound). In this situation, it is recommended to separate the two wide lines into two different 2d_zsh GIS layers.
  3. Thin and thick lines are processed last, depending on the Shape_Options attribute (see Table 7.6), in the following order:
    • All ADD lines are processed first.
    • Next, lines with no Shape_Options specified (i.e. NULL) – these will modify all Zpts affected by the line.
    • Then, lines with GULLY, LOWER or MIN.
    • Finally, lines with RIDGE, RAISE or MAX.
    • If there are multiple lines with the same Shape_Options, they are processed in the order that they appear in the 2d_zsh GIS layer.

The priority can be further controlled by using different 2d_zsh layers and controlling the order in which layers are listed and subsequently processed in the .tgc file (with latter occurrences of the Read GIS Z Shape command building on any previous modifications).

The same Zpts may be modified numerous times through the application of separate 2d_zsh layers or GIS objects that may overlap, with the latter occurrence prevailing based on the above processing protocols. Each sequential modification builds upon the last change. Where this occurs, the _2d_zpt_check will include multiple separate objects stacked at the same Zpt location, which detail each sequential change from the previous modified elevation assigned from all objects in all 2d_zsh layers.

7.2.5.2.2 Examples

Some examples of using Read GIS Z Shape are given below. Models set up using these topography update features are provided in the Topography Features Example Model Dataset on the TUFLOW Wiki.

Example 1: Triangulating Elevations over a Null Area. Expand to find out more.

The image below shows an example of a DEM that is missing data over a small area within the 2D domain. Gaps in DEM coverage can sometimes occur over water bodies and occasionally between the tiles of ALS or LiDAR data received from a third-party provider. An example of using the MERGE topography update feature is provided in the TUFLOW Tutorial Module 2

The .tgc command Set Zpt may be used to quickly and easily assign elevations to Zpts within these areas, however the limitations of the command mean the same elevation will be assigned to all null Zpts across the entire 2D domain. This may not be suitable in situations where there are multiple gaps in coverage or where the gap is located on steep terrain.

Read GIS Z Shape with 2d_zsh polygons may instead be used to triangulate Zpt values based on the Zpt elevations of the polygon perimeter.

Import in an empty 2d_zsh GIS layer, and digitise a polygon around the gap in coverage as shown. Ensure there is a reasonable buffer around the null area. The attributes of the polygon may be left blank. Alternatively, a value may be entered in the Shape_Width_or_dMax attribute to control the maximum distance between intermediate points inserted around the polygon’s perimeter to interpolate elevations. When left blank, this distance is half the 2D cell’s size.

This image shows the resulting _DEM_Z check file. The _zsh_zpt_check layer can be used to view the final Zpt elevation assigned.

Example 2: Use of the NO MERGE and ADD Shape Options. Expand to find out more.

The 2d_zsh NO MERGE option can be used to assign a single elevation to all Zpts within the 2d_zsh polygon (read by the Read GIS Z Shape command). An example of using the NO MERGE topography update feature is provided in TUFLOW Tutorial Module 2. This may be useful to set the elevation of a polygon to a known finished floor level of a proposed development. Digitise a polygon within an empty 2d_zsh GIS layer, and populate the Z attribute of the 2d_zsh polygon with the desired elevation. Set the Shape_Options attribute to NO MERGE. The example below will assign an elevation of 42.1mAHD to all Zpts located within the 2d_zsh polygon.

Note that if the NO MERGE option is omitted and no points are snapped to the perimeter of the polygon, the Z attribute will be ignored and the Zpt elevations will be triangulated based on the Zpt elevations of the polygon perimeter.

Alternatively, to raise the polygon by a fixed value (i.e. to represent the slab height of a building) enter this value in the Z attribute and set the Shape_Options to ADD. An example of using the ADD topography update feature is also provided in TUFLOW Tutorial Module 2.

TUFLOW will add the value entered in the Z attribute to the existing Zpt elevations within the polygon. The entry within the figure will raise Zpt elevations by 0.15m. The use of a negative value will lower the Zpt elevations by the value of the Z attribute. The _zsh_zpt_check layer can be used to view the elevation points (Zpts) that have been modified.

Example 3: Raising an Embankment. Expand to find out more.

The ADD option may also be used when the 2d_zsh object has been digitised as a line. An example of using the ADD topography update feature is provided in TUFLOW Tutorial Module 2. Populate the Z attribute with the amount the embankment is to be raised by. Populate the Shape_Options attribute with ADD as shown in the second figure of Example 2 above. This will raise the existing Zpt elevations by the value of the Z attribute. By default, TUFLOW will assume a thin line, and only alter the ZH, ZU and ZV Zpt elevations of a cell. The Shape_Width_or_dMax attribute may be optionally specified to represent a thick or a wide line (refer to Section 7.2.5.2).

Alternatively, if a 3D breakline has been digitised, the dZ attribute on the snapped points may be used to raise or lower the embankment. The dZ attribute increases or decreases the elevation of the point’s Z attribute by the amount of dZ. In the example below, a 3D breakline has been created by snapping points to either end of the line. The elevations along the line are determined by a linear interpolation of the Z attribute of the points. Entering a positive dZ value at each point will raise the elevations at the points by the amount of dZ at each point (0.2m for one of the points in the figure below). The elevations along the line are then interpolated based on these revised values. The _zsh_zpt_check layer can be used to view the final Zpt elevation assigned.

Example 4: Removing ridges from a poorly triangulated DEM. Expand to find out more.

The image shows two false ridges indicated by the H letters. These were caused by a poor triangulation by the TIN software used to create the DEM. These ridges caused unrealistic flow patterns, as shown by the velocity vectors.

Note, the blue cells at the bottom are the downstream boundary cells.

This image is of the DEM_Z and _zpt_check check file layers from the TUFLOW simulation. This is how TUFLOW interprets the DEM data. The false ridges are clearly shown.

To remove the ridges, import an empty 2d_zsh layer, and digitise a polygon around the ridges as shown. By default (i.e. using the default attribute values), the elevations assigned around the perimeter of the polygon are interpolated from the current Zpt values.

One problem with this approach is that the elevations along the right-hand side (i.e. along the edge of the floodplain between Locations A and B) are interpolated from the high Zpts along this boundary.

To solve this problem, digitise points either into the 2d_zsh layer or into another 2d_zsh…_P (points) layer that snap to the vertices of the polygon where the high elevations occur. Assign a Z attribute of -99999 to each point, as shown in the image. The -99999 indicates to not interpolate an elevation from the existing Zpts. Instead, the elevations at Locations A and B are used to interpolate elevations at vertices where -99999 has been assigned.
Use Read GIS Z Shape to process the polygon and points and generate the TIN as shown in the image. The TIN can be viewed by importing the _sh_obj_check GIS layer.
This image shows the new DEM_Z check file after the above 2d_zsh layer has been applied. As can be seen, the ridges have been removed and the flow patterns are now realistic.
Example 5: Highway Embankment Removal Example. Expand to find out more.

The figures below demonstrate a case where a new highway, present in the DEM, needed to be removed because the calibration flood events occurred before the highway was built. To remove the highway, a 2d_zsh polygon was digitised around the highway. All attributes were left as their defaults and no elevation points were required.

To reflect the topography of the original (pre-highway) terrain, a 2d_zsh line and point feature were added (using the method described in Example 3 above). Either Read GIS Z Shape or Create TIN Zpts can be used to apply this topographic modification.

7.2.5.3 Variable Z Shape Layer (2d_vzsh)

TUFLOW 2D model topography can be varied over time to simulate breaching of embankments, raising of flood defences during an event, or the filling of a river due to a landslide, by using Read GIS Variable Z Shape. The 2d_vzsh layer is used to define the final topographic shape at the end of the topography change period. As summary of the GIS layer attributes is provided in Table 7.8. The first four attributes of 2d_vzsh are the same as the 2d_zsh layer. They are used to define the finished state of the variable geometry. Additional attributes have been added to allow the user to define how/when the breach commences and for how long. The breach/fill can be triggered using a number of methods:

Variable Z Shapes can be restored once or repeatedly. Examples would be a breach of a flood defence wall or levee that is reinstated 6 hours later, or a sand bar of a creek entrance that repeatedly opens and closes. To use the restore feature, two additional attributes Restore_Interval and Restore_Period are required as described below in Table 7.8. For a single restoration event, only these two additional attributes are required. To restore repeatedly, “REPEAT” must be specified in the Shape Options in column 4. Repeated restoration is only possible for the water level and water level difference trigger methods, as a time trigger will not be able to be reached on a second occasion.

Note, this variable geometry feature should be used instead of the 2d_bc VG option (unless the rate of change of the erosion/fill is non-linear) as 2d_vzsh layers are easier to define and manage.

Table 7.8: 2D Variable Z-Shape (2d_vzsh) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z

Point: Same as for Table 7.5.

Line: Same as for Table 7.6.

Polygon: Same as for Table 7.7.
Float
2 dZ

Point: Same as for Table 7.5.

Line: Same as for Table 7.6. The exception is for a thin line, for which the final elevations along the line can be set to dZ metres above the current Zpt values.

For example, if a thin line represents a fence that is being collapsed, and the finished height of the collapsed fence is to be 0.2m above existing ground levels, specify a dZ value of 0.2. Note this only applies if the NO MERGE Shape_Options has not been specified.

Polygon: Same as for Table 7.7.
Float
3 Shape_Width_or_dMax

Point: Same as for Table 7.5.

Line: Same as for Table 7.6.

Polygon: Same as for Table 7.7.
Float
4 Shape_Options

Point:

TRIGGER or TRIGGER 1D: Indicates the point is not an elevation point, but a trigger location. The trigger must be given a name using the Trigger_1 attribute. TRIGGER 1D is required if a 1D node water level is used to trigger a 2D variable Z-Shape. The trigger point must be snapped to the 1D node or channel end in the 2d_vzsh layer to achieve this.

Line or Polygon: Same as for Table 7.6 (line) or Table 7.6 (polygon). Except the ADD option is not supported.

REPEAT: Specify this option for the variable Z shape to repeatedly function indefinitely based on the below trigger and restore attributes.

Thin Line:

NO MERGE: For thin lines (Shape_Width_or_dMax = 0), the final elevations along the line are as specified. If NO MERGE is not specified for a thin line, the final elevations are set to be the same as the current Zpt values plus the dZ value.

REPEAT: Specify this option for the variable Z shape to repeatedly function indefinitely based on the below trigger and restore attributes.
Char(20)
5 Trigger_1

Point: If Shape_Options is set to TRIGGER or TRIGGER 1D, enter the name of the trigger location. The name can contain any characters and can include spaces. Otherwise not used.

Line or Polygon: To commence the failure at a specified time leave blank.

To commence failure based on reaching a water level elsewhere in the model, enter the name of the trigger location.

Thin Line: For thin lines there are two special options as follows. Specify DEPTH to have the failure commence once the depth of water adjacent to the cell side exceeds the amount specified for Trigger_Value. Specify DEPTH DIFF to have the failure commence once the difference in water level across the cell side exceeds the amount specified for Trigger_Value.
Char(20)
6 Trigger_2

Point: Not used.

Line or Polygon: The name of a second trigger location (only needed if the breach is to be initiated on a water level difference between two trigger locations).
Char(20)
7 Trigger_Value

Point: Not used.

Line or Polygon: If Trigger_1 is blank, the simulation time in hours that the breach is to commence.

If Trigger_1 is specified and Trigger_2 is left blank, the water level at Trigger_1 that needs to be reached to trigger the failure.

If both Trigger_1 and Trigger_2 are specified, the water level difference between Trigger_1 and Trigger_2 that needs to be exceeded to trigger the failure. The water level difference is taken as the absolute of the difference between Trigger_1 and Trigger_2, so there is no need to specify a negative value.

Thin Line:

If “DEPTH” is specified for Trigger_1, the depth in metres adjacent to the cell side that needs to be exceeded to trigger the failure at the cell side.

If “DEPTH DIFF” is specified for Trigger_1, the water level difference in metres across the cell side that needs to be exceeded to trigger the failure.

For all of the above options the length units are metres if modelling in SI units, or feet, if using Units == US Customary.
Float
8 Period

Point: Not used.

Line or Polygon: Time in hours over which the variation in Zpt elevations occurs.
Float
9 Restore_Interval

The time in hours between when the variable Z shape has finished altering the geometry and when to start restoring the Zpts back to their original values.

Note: “REPEAT” must be specified in Column 4 to allow repeated triggering and restoration of the Variable Z Shape (for the water level and water level difference options), otherwise restoration will only occur once.
Float
10 Restore_Period Time in hours over which the variation in Zpt elevations occurs to restore the Zpts back to their original values. Float

Example 1: Variable Z Shape Example: Breaching of an Embankment

The image below shows an example of a 2d_vzsh layer. The solid magenta line is the polygon, the magenta dashed lines are lines used to enforce TIN breaklines, and the four magenta points all have an elevation of 41.0m. The Shape_Options attribute for the polygon was set to MIN (this means that the Zpt elevation can only be lowered (i.e. eroded), and the dashed lines have Shape_Options of TIN (to indicate that they are to be used for TIN generation, and not for Z lines). The vertices of the polygon that do not have a point snapped to them will be automatically assigned an elevation based on the existing Zpt values. The polygon vertices with the points snapped to them are assigned the elevation of the point (in this case, all at 41.0m). The elevation of the dashed lines will be constant at 41m as they are snapped to the 41m points.

The only other object in the layer is the yellow pin point labelled A. This is a trigger point. Its only attribute values are: TRIGGER for the Shape_Options attribute; and A for the Trigger_1 attribute. This sets the point as a trigger point and the “A” is the name of the trigger point. The magenta polygon also has attribute values of: A for Trigger_1 (this indicates that the erosion trigger is based on the water level at Trigger Location A); a Trigger_Value of 42.0 (i.e. when the water level at location A reaches 42m, start the erosion); and a Period value of 1.0 indicating that the erosion takes one hour to complete.

The final eroded Zpt values are based on the TIN created by TUFLOW (the grey triangles in the image below). The central section will be horizontal at 41m, sloping up either end to elevations based on the road level. The _vzsh_zpt_check layer is useful to view the Zpts affected by the variable Z shape. This layer is also shown in the image below. The green triangles indicate that the Zpt level is to be eroded, and the crosses indicate no change (this is because of the MIN Shape_Options). The final eroded Zpt values are labelled in the image below. Other useful attributes are also available in this layer.

ZSH Example 2

The images below show the modelled breach which occurs using the example above. Each image is in half hour intervals. The colour shading is of the elevations (specify ZH as a Map Output Data Types to view the changes in ground level over time).

7.2.5.4 3D TIN Layers (2d_ztin)

TINs (triangulations) of elevation points and 3D lines within a polygon can be carried out using Create TIN Zpts. This is particularly useful for modifying the Zpt elevations where there have been, or are proposed, changes to the base DEM Zpt values.

Note, for large datasets it is likely to be much more efficient to use GIS or 3D surface modelling software to triangulate the data, and read triangulated data in a supported format (see Read TIN Zpts) or to convert to raster (see Read Grid Zpts).

The protocols applied to the Create TIN Zpts command are:

  1. A TIN is created for each polygon in the 2d_ztin layer.
  2. Any points found within a polygon are used when generating the TIN.
  3. Any lines are converted to points, and those points falling within the polygon are used for the TIN creation. Lines are converted to points as follows:
    1. All vertices (nodes) of the line are converted to points.
    2. The dMax attribute is used to insert additional vertices between the line’s vertices. For example, if dMax is set to 10, then additional intermediate vertices are inserted at least every 10 metres (or feet if using Units == US Customary) between the existing vertices where the distance between the existing vertices exceeds this value. If the dMax attribute does not exist or is zero, half the 2D domain’s Cell Size is used as the dMax value.
    3. If there are any points snapped to the line’s vertices, the elevations of these points are used to set the elevations at all the vertices generated along the line. In this way, a 3D breakline effect can be produced within the TIN. If there are no points snapped to the line, the line’s Z attribute elevation is used giving the effect of a horizontal line.
  4. The perimeter of the polygon/TIN can either be merged with the current Zpt values or have its own values as follows:
    1. If there are no points snapped to the perimeter of the polygon, the elevations of the polygon’s perimeter vertices, and of any automatically inserted vertices, are based on the current Zpt values (i.e. the Zpt values assigned by any prior commands).
    2. If there are one or more points snapped to the polygon’s perimeter vertices, the perimeter is not merged with the Zpt values, and the elevations of the snapped points are used to assign elevations to the perimeter vertices and any automatically inserted vertices.
    3. The frequency of any automatically inserted points around the perimeter is controlled by the dMax attribute. If the dMax attribute does not exist or is zero, half the 2D domain’s Cell Size is used.

The 2025 release introduced a new method “Method B” as beta functionality for triangulating TINs that applies to any of the commands that build a TIN, such as Create TIN Zpts and Read GIS Z Shape commands. The new method can be applied using the TIN Triangulation Approach command. “Method A” is the original triangulation approach. Method B uses the same inputs as Method A and creates the same input points and elevations, however, creates the triangles differently. While Method A adds additional vertices to lines to encourage edges to follow breaklines, these are strongly enforced using Method B. Method B also generates more balanced triangles avoiding long skinny triangles or clumps of triangles.

Models using the Create TIN Zpts functionality are provided in the Static Topography Updates Example Model Dataset on the TUFLOW Wiki.

A useful quality control option of Create TIN Zpts is the WRITE TIN option. This will write a TIN to either the SMS TIN or SMS 2DM format depending on the setting of TIN Output Format. If this option is specified, a SMS .tin or .2dm file is written for each TIN generated, and the triangles are written to the _sh_obj_check layer. This means that the TIN can be cross-checked, viewed, and edited and modified in SMS (tin or 2dm) or QGIS (2dm). Read TIN Zpts can be used to assign Zpt elevations from the modified SMS TIN.

A second argument to specify a GIS layer containing one or more polygons to clip the area of Zpts to be inspected can be used with the Read TIN Zpts command. Refer to Section 7.2.5.1 for more information.

Table 7.9: 2D Tin (2d_ztin) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z

Point: Elevation of the point.

Line: Elevation of the line. Ignored if there are any points snapped to the line’s vertices.

Polygon: Not used.
Float
2 dMax (optional)

Point: Not used.

Line: Maximum distance between automatically created intermediate vertices. If set to zero or this attribute does not exist, half the 2D domain’s Cell Size is used. If less than zero no intermediate vertices are inserted.

Polygon: Same as for Line above.
Float

7.2.5.5 3D Breakline Layers (2d_zln)

This is a legacy feature and it is recommended to use the Z Shape functionality (Section 7.2.5.2) instead. For details on this feature see Read GIS Z Line in Appendix C.

7.2.5.6 Zpt Layers (2d_zpt)

This is a legacy feature, to define base elevations it is recommended to use the Read Grid Zpts functionality (Section 7.2.5.1) instead. For details on this legacy feature see Read RowCol Zpts in Appendix C.

Similarly, Read GIS Zpts is also a legacy command. It is recommended to use the Z Shape functionality (Section 7.2.5.2) instead of it.

7.2.5.7 Using Multiple Layers and Points Layers

GIS layers used for Read GIS Z Shape, Read GIS Variable Z Shape, Create TIN Zpts, Read GIS Layered FC Shape, Read GIS Z Line (legacy), Read GIS Z HX Line (legacy) and Read GIS FC Shape (legacy) can be split into more than one layer to better manage the variety of data these commands sometimes require.

For example, one layer may contain the elevation points, another the TIN lines and polygons and another the 3D Z lines. This is useful in terms of managing the data, and especially when interrogating and/or viewing the data in GIS. It is a requirement of the shapefile format that the different geometries (points, lines and regions) are in separate shapefiles. The TUFLOW empty template files include the following filename suffixes to differentiate which files are suitable for point, line or region features.

  • _P for point features (e.g. 2d_zsh_M03_002_P.shp)
  • _L for line features (e.g. 2d_zsh_M03_002_L.shp)
  • _R for region or polygon features (e.g. 2d_zsh_M03_002_R.shp)

This is optional for MapInfo users; the different geometries can occur in the same MapInfo file or can be separated if preferred.

A maximum of nine (9) layers per command line is allowed, and each layer is separated by a vertical bar (“|”). For example, to read a Z Shape layer which has both line and points, the command may be:

Read GIS Z Shape == gis\2d_zsh_M03_002_L.shp | gis\2d_zsh_M03_002_P.shp

If using the GeoPackage format && is also used to specify more than one layer from a common database in the same command line. An example is provided below. See Section 4.3.3 for further details.

Read GIS Z Shape == gis\2d_zsh_R.gpkg | gis\2d_zsh_002.gpkg >> 2d_zsh_L && 2d_zsh_P

7.2.5.7.1 Point Only Layers

To minimise the number of attributes, some/all points may optionally be placed into a separate layer with less attributes as discussed below. This simplifies the datasets making them easier to manage and interrogate.

A layer is treated as a separate points layer if:

  1. It has less attributes than the minimum required for the command. For most commands there is only one attribute for the points layer (i.e. Elevation or Z) as described in Table 7.10. The exception is Read GIS FC Shape, which requires the first two attributes. This option requires that the points layer be defined within the command line syntax. For example: Read GIS Z Shape == gis\2d_zsh_M03_002_L.shp | gis\2d_zsh_M03_002_P.shp
  2. The points file uses the same filename as the associated line or region file with the addition of “_pts” as a suffix to its filename (for example 2d_zsh_M03_002_pts.shp will be automatically associated with the line file 2d_zsh_M03_002.shp). This option is supported for backward compatibility; however, it’s recommended that this option not be used (it is preferable to enter the filename of the second layer so that it is clear as to which layers are being used). Read GIS Z Shape == gis\2d_zsh_M03_002.shp

The data processing logic for points layers is outlined below:

  1. The specified layer, 2d_zsh_M03_002.shp, is opened. This layer may or may not contain elevation points. If any elevation points exist they are used.
  2. A separate points layer can optionally be used to specify additional points or all of the points. The layer can be specified in one of two ways:
    1. Entering the pathname of the points layer after the main layer. A “|” must be used to separate the two layers. The points layer must be the second layer specified. For example:
      Read GIS Z Shape == gis\2d_zsh_M03_002_L.shp | gis\2d_zsh_M03_002_P.shp
    2. Alternatively, name the points layer the same as the main layer, but with a “_pts” extension. If a layer exists with the “_pts” extension, TUFLOW automatically assumes this layer is associated with the main layer and includes all points within this layer when applying the above commands. For this example, the layer would be named 2d_zsh_M03_002_L_pts.shp.
  3. The first approach (i) above prevails over the second (ii) if both apply.
  4. If neither (i) or (ii) apply, TUFLOW assumes there is no separate points layer.

Multiple points layers can be specified. The points layer can be referenced in any location except for the first layer within the command line entry. For example, the below syntax will produce an error due to the points file being the first entry.

Incorrect:
Read GIS Z Shape == gis\2d_zsh_M03_002_P.shp | gis\2d_zsh_M03_002_L.shp

Correct:
Read GIS Z Shape == gis\2d_zsh_M03_002_L.shp | gis\2d_zsh_M03_002_P.shp

Table 7.10: 2D Z (2d_z_) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Z Elevation (or change in elevation for ADD option) of the point. Float

7.2.6 Land Use (Materials)

7.2.6.1 Bed Resistance

The bed resistance values for 2D domains are created by using GIS layer polygons or rasters of different bed resistance zones. The default and recommended bed resistance formulation is Manning’s n. Manning’s n values can be varied with depth (as user specified curve or using the Log Law formula (see Section 7.2.6.3.1)) or varied with velocity-depth product (VxD).

For TUFLOW Classic, bed resistance can also be set to use either Manning’s M values (1/n) or Chezy coefficients using the Bed Resistance Values command in the .tcf file. As this is a TUFLOW Classic feature only, it is further discussed in Section 7.4.3.

The recommended approach is to use materials to define how the bed roughness varies over the model. Each material is defined by a positive integer ID which represents a different roughness category. GIS layers of land-use or vegetation often make excellent material layers. Examples of different material categories are river in-bank, bank vegetation, pasture, maintained grass, roads, buildings, forest, mangroves, etc. Each material is assigned a constant Manning’s n value, depth or VxD varying Manning’s n. The material layer can also be used to set rainfall losses (if using direct rainfall - see Section 8.4.3), fraction impervious, storage area and land-use hazard categories (see Section 7.2.6.3.1).

Material/roughness values are used by TUFLOW during conveyance calculations at the cell mid-sides (refer to Section 7.1 and 7.1.3). However, rainfall losses and fraction impervious are applied to the cell and not cell sides, and materials ID values are sampled at both cell mid-sides and cell centres.

The most common approach is to digitise one or more 2d_mat materials layers (see Table 7.11) and assign Manning’s n values to the materials using Read Materials File. This approach allows the easy adjustment of Manning’s n values, for example during model calibration or sensitivity testing.

When creating the base 2d_mat layer, it is common practice to not digitise the most common or the most difficult to digitise material, and instead use the following data layering of commands in the .tgc file (see Section 4.1.8).

The Read GIS Mat and Read Grid Mat commands may be used as many times as required to further modify the materials in parts of a 2D domain. Each subsequent dataset will overwrite the preceding assigned material value, as described in Section 7.2.3.

The default material value is zero. As a material value of zero is not allowed, every cell and cell-side must be assigned a material value using Set Mat, Read GIS Mat and/or Read Grid Mat in the .tgc file (it is good practice to always set a default materials value using the Set Mat as the first material command in the .tgc file). The assigned material ID values do not need to be continuous but must be within the range 1 to 32,767.

Table 7.11: 2D Materials (2d_mat) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Material The material ID value referenced within a Materials File (see Section 7.2.6.3). Integer

7.2.6.2 Log Law Depth Varying Bed Resistance

At very shallow depths the Manning’s n value and/or equation may not be a reliable estimate of bed resistance. The Log Law or “Law of the Wall” approach offers a theoretically based derivation of resistance based on a bed shear analysis. This relationship along with benchmarking against flume test results was used by Boyte (2014) to derive the following equation that varies Manning’s n with depth based on the roughness height of the surface:

\[\begin{equation} n = \frac{\kappa y^{\frac{1}{6}}}{\sqrt{g}\left[\ln\left( \frac{y}{z_{0}} \right) - 1 \right]} \tag{7.5} \end{equation}\]

\[\begin{equation} z_{0} = \ \frac{k_{s}}{30} + \frac{0.11\nu}{U_{f}} \tag{7.6} \end{equation}\]

Where:

  • \(k_s\) is the roughness height in m
  • \(\kappa\) is typically in the range 0.38 to 0.42 (recommend 0.4)
  • \(y\) is depth
  • \(\nu\) is the kinematic viscosity and is set to 10-6 m2/s
  • \(U_f\) is the friction velocity defined as \(\sqrt{Sgy}\) where \(y\) approximates \(A/P\) and \(S\) is the water surface slope

Equation (7.5) becomes singular as \(\ln\left( \frac{y}{z_{0}} \right)\) approaches 1, and asymptotes to zero as depth becomes large. It is necessary to apply sensible limits for the resulting \(n\) under these circumstances. For depths such that \(\ln\left( \frac{y}{z_{0}} \right) < 1.000001\) the Manning’s n is set to \(n = 10\). For all other cases, the resulting value for \(n\) is bounded to be in range \(n_{limit} < n < 10.\)

Figure 7.10 illustrates how the equivalent Manning’s n varies with depth using the log law for a roughness height of 10mm (0.01m) that would be applicable to a small pebble bed. The different series are the variations in the slope, \(S\), where 0.001 is 0.1% slope, 0.02 is 2% slope and 0.1 is a 10% slope. As can be seen there is a significant variation in Manning’s n below 2cm (0.02m) and a trend to a n value of around 0.018, with only a minor variation due to slope.

In terms of applying a limiting n value, if, for example, \(n_{limit}\) was set to 0.02, then the Manning’s n value would not fall below 0.02.

Figure 7.11 shows a comparison using the Log Law versus a constant Manning’s n value (Boyte, 2014). The thesis investigated the use of the Law of the Wall for direct rainfall modelling using TUFLOW. The flow depths in this example range from 4 to 20cm and the roughness height, \(k_s\), was 3cm.

The Log Law Depth Varying Bed Resistance is activated by entering special characters in the 2nd column of the Materials File. See Section 7.2.6.3 and Table 7.12.

Example of Log Law Variation of Manning’s n with Depth

Figure 7.10: Example of Log Law Variation of Manning’s n with Depth

Example of Log Law versus Constant Manning’s n with Depth

Figure 7.11: Example of Log Law versus Constant Manning’s n with Depth

7.2.6.3 Materials File

Materials file(s) contain information on a material’s roughness and, optionally, rainfall losses if using direct rainfall. The file is referenced within the .tcf file using Read Materials File and can be in one of two formats (.csv or .tmf). The .csv format is the recommended of the two options. It supports all functionality. The .tmf format does not. For example, the log law bed resistance option is only available via the .csv format. The .csv format also supports curves of Manning’s n versus depth.

More than one materials file may be specified by repeat occurrences of the command Read Materials File however, most models will use only a single materials file. Any combination of .tmf and .csv files can be used and up to 1,000 materials are allowed in total.

If a second argument is provided with Read Materials File, this value is used to factor all Manning’s n values. For example, the following command increasing all Manning’s n values by 10%:

Read Materials File == My_Materials.tmf | 1.1

7.2.6.3.1 .csv Format

The .csv format materials file is a comma delimited text file containing Manning’s n and other information for different materials (e.g. land-uses). The format is intended to be generated from an Excel file database of materials and associated data in a similar manner to BC databases (with the option of using the Excel TUFLOW Macro .xlam macros to export to the .csv format - the Excel TUFLOW Tools.xlam can be downloaded from here). The .csv can also be written from text editor if preferred.

The format of the materials.csv file is described in Table 7.12.

Note: The .csv format offers access to all materials features, whereas the .tmf format does not.

Table 7.12: Materials .csv File Format
No.  Description
1 Mat (Material ID) number, which must be an integer.
2

Contains information on the bed resistance values (usually Manning’s n). The options available are:

  • Single n value (the n value is assumed constant at all water depths).
  • Two pairs of depth and n values (see the y1, n1, y2, n2 option described in Table 7.13 for the .tmf format (i.e. Columns 5 to 8). The values must be separated by commas.
  • A .csv file containing n vs depth values. By default, when the n vs depth values are read they are assumed to be in the first two columns of the .csv file containing the curve’s data. However, you can specify the columns to be used by placing the column label after the .csv filename using a vertical bar “|” to separate the column label from the .csv filename. If only one column label is given, this is assumed to be the depth column and the next column must contain the Manning’s n values. As for boundary data, TUFLOW searches down the rows until it finds the first numeric values and will start reading from this row until a row is found with no more numeric values. To view how the n values vary with depth over time, use the “n” option for Map Output Data Types.
  • If the first four characters are “VxD:” the Manning’s n values for the material will be varied according the velocity times depth product, rather than depth. The VxD versus n values are provided in the same manner as for depths described above. Note that the Manning’s n value never increases during the simulation, it can only remain the same or decrease. This feature was provided to allow the user to reduce Manning’s n with increasing VxD to represent the “stripping” of river banks in high VxD areas, and then keeping the reduced Manning’s n as the flood recedes, hence why the n value cannot increase once decreased during the simulation. VxD was used in preference for simply V to avoid reducing n values at very shallow depths (but high velocities) when the flood first inundates the 2D cells.
  • If the first four characters are “Log:” the bed resistance as defined by the theoretically derived log law for shallow flows is applied. Three numbers are required after the “Log:” in space or comma delimited format. These are: Ks (roughness height), Kappa (0.3 to 0.4) and the limiting Manning’s n value. See Section 7.2.6.2 for more information.
3 Sets the rainfall loss parameters using the initial loss/continuing loss option. The initial/continuing loss is entered as two comma delimited numbers in a similar manner to the third and fourth column values in the .tmf format. See Table 7.13. Refer to Section 7.2.6.4.
4 Reserved.
5 Defines the Storage Reduction Factor (SRF) value. If no fifth column entry exists, no SRF is applied. The default is an SRF of 0 (i.e. no change in storage). See Section 7.2.9.1 for more information.
6 Defines the Fraction Impervious of the overlying material type. The value entered should be a number from 0.0 to 1.0 where 0.0 is fully pervious and 1.0 is fully impervious. The default is a value of 0.0, assuming that the overlying material is 100% pervious. This feature is used to influence the amount of water that is infiltrated into the ground with the soil infiltration feature. Refer to Section 7.2.7 for more information. Note: This option works with the Soli Infiltration feature (see Section 7.2.7). It does not apply to materials rainfall losses (Column No 3 above) when applying direct rainfall (see Section 8.4.3).

An example of a materials.csv is provided in Figure 7.12. To give a description of the material, this must be done after all inputs for that material and must be preceded by a “!” or “#”.

In the example shown in Figure 7.12:

  • Material 1 has a constant n value of 0.03 and no rainfall loss parameters.
  • Material 5 varies n with depth using the four y1, n1, y2, n2 values (as per .tmf format approach) and no rainfall loss parameters.
  • Materials 11 and 12 use depth vaying n sourced from a file called Grass.csv. As only one column label has been specified, the y values must occur under that label and the n values must occur in the next adjoining column (see Figure 7.13). An IL of 10mm and CL of 2mm/h for both materials will be used for any direct rainfall.
  • Materials 21 and 22 use depth vaying n sourced from a file called Trees.csv. As two column labels have been specified, the y and n values must occur under the specified labels (see 7.13). An IL of 20mm and CL of 2mm/h for Material 21, and 25 and 2 for Material 22, will be used.
  • Material 31 uses the log law approach (Section 7.2.6.2) with a roughness height of 0.01m, Kappa value of 0.4 and limiting Manning’s n of 0.02. IL = 0mm and CL = 0mm. The fraction impervious value is set to 1.0 (fully impervious).
  • Material 32 use depth vaying n sourced from a file called Buildings.csv. In Buildings.csv Column A is used for y values and Column B for n values. IL = 0 and CL = 0. The storage reduction factor is set to 0.3 (30% reduction in storage) and the fraction impervious value is set to 1 (fully impervious).
Example of Materials .csv File Format

Figure 7.12: Example of Materials .csv File Format

Example of the Grass.csv file read into the Materials.csv

Figure 7.13: Example of the Grass.csv file read into the Materials.csv

Example of the Trees.csv file read into the Materials.csv

Figure 7.14: Example of the Trees.csv file read into the Materials.csv

7.2.6.3.2 .tmf Format

The .tmf format is a text file containing Manning’s n and other information for different materials (e.g. land-uses). The file can contain comments using the “#” and/or “!” comment characters at any location. When comment characters are specified, the remainder of the line is ignored. The format of the materials .tmf file is described in Table 7.13. The first two columns are mandatory and must be specified. All other columns are optional. A maximum of 100 different materials can be specified in this format.

Note: The .tmf format does not offer all materials functionality, whereas the .csv format in the above section does.

Table 7.13: Materials .tmf File Format
No.  Description
1 Mat (Material ID) number, which must be an integer.
2

Manning’s n value.

Note, if the four values in columns 5 to 8 are specified, the Manning’s n value in this column is ignored and not used.
3 Sets the initial loss if using a direct rainfall boundary (via Read GIS RF or Rainfall Control File). Refer to Section 7.2.6.4. This does not apply to Global Rainfall BC. The units are mm, or if Units == US Customary inches.
4 Sets the continuing loss rate if using a direct rainfall boundary (via Read GIS RF or Rainfall Control File). Refer to Section 7.2.6.4. This does not apply to Global Rainfall BC. The units are mm/hr, or if Units == US Customary inches/hr.
5 y1 – The depth below which the Manning’s n value n1 (column 6) is applied.
6 n1 –The Manning’s n value applied below depth y1 (column 5).
7 y2 – The depth above which the Manning’s n value n2 (column 8) is applied.
8

n2 –The Manning’s n value applied above depth y2 (column 7).

Between y1 and y2, the Manning’s n value is interpolated between n1 and n2 according to Bed Resistance Depth Interpolation. When specifying values for columns 5 to 8, initial and continuing loss values must be specified in columns 3 and 4 as described above (use zero values if not using direct rainfall).
9 Reserved.
10 Defines the Storage Reduction Factor (SRF) value. The default is an SRF of 0. Enter 0 to ensure there is no change in 2D cell storage for the material type. See Section 7.2.9.1 for more information.
11

Defines the fraction impervious of the overlying material type. The value entered should be a number from 0.0 to 1.0 where 0.0 is fully pervious and 1.0 is fully impervious. The default is a value of 0.0, assuming that the overlying material is 100% pervious. This feature is used to influence the amount of water that is infiltrated into the ground with the soil infiltration feature. Refer to Section 7.2.7 for more information.

Note: This option works with the Soli Infiltration feature (see Section 7.2.7). It does not apply to materials rainfall losses (Column No 3 above) when applying direct rainfall (see Section 8.4.3).

The .tmf file format is shown in the examples below. See Set Mat, Read GIS Mat and Read Grid Mat for assigning the material IDs to the 2D domains. These material values may also be used to define bed resistance values across 1D XZ cross-sections (see Section 5.6.1.1.2).

    ! Comments and blank lines are allowed in this file
    ! First value is the Mat value, Second is the Manning’s n value
    1, 0.03! waterways
    2, 0.08! river banks
    11, 0.06! grazing land
    12, 0.04! parks and gardens
    13, 0.15! sugar cane
    14, 0.12! natural forest
    15, 0.02! roads

To include the initial loss (mm) and the continuing loss rate (mm/h) optionally enter a third and fourth value as shown below. If an IL is specified, a CL must also be specified otherwise an ERROR occurs. Both can be omitted, in which case, they are both set to zero.

    1, 0.03! waterways
    2, 0.08, 20, 2! river banks
    11, 0.06, 20, 2! grazing land
    12, 0.04, 5, 1.5! parks and gardens
    13, 0.15, 10, 2! sugar cane
    14, 0.12, 30, 2.5! natural forest
    15, 0.02, 2, 0! roads

To vary n values with depth (m) using two pairs of values optionally enter values in the fifth to eighth columns as shown below in lines 2 and 3 (Materials 2 and 11) below. IL and CL values must be entered (use zero if not relevant). If depth varying manning’s n is not used, column 5 to 8 should be left blank, not set to zero.

    1, 0.03! waterways
    2, 0.08, 20, 2, 0.3, 0.15, 0.5, 0.08! river banks with long grass 0.3m high
    11, 0.06, 20, 2, 0.1, 0.1, 0.15, 0.06! grazing land
    12, 0.04, 5, 1.5! parks and gardens
    13, 0.15, 10, 2! sugar cane
    14, 0.12, 30, 2.5! natural forest
    15, 0.02, 2, 0! roads

To reduce the storage of cells, enter a SRF value in the tenth column as shown in line 7 for Material 15 below. The example shown reduces the storage of all cells with Material ID of 15 by 20%. Note that a value of -1 has been entered for the ninth column as this field has been reserved. If not used, specify 0 to ensure no change in storage for the material.

    1, 0.03! waterways
    2, 0.08, 20, 2, 0.3, 0.15, 0.5, 0.08! river banks with long grass 0.3m high
    11, 0.06, 20, 2, 0.1, 0.1, 0.15, 0.06! grazing land
    12, 0.04, 5, 1.5! parks and gardens
    13, 0.15, 10, 2! sugar cane
    14, 0.12, 30, 2.5! natural forest
    15, 0.02, 2, 0, , , , , -1, 0.2! roads with width reduced by 20%

To specify a fraction impervious, enter a value between 0.0 and 1.0 in the eleventh column as shown in line 4 for Material 12 below. The example shown partially restricts the rate of infiltration by applying a fraction impervious of 0.1 or 10%.

    1, 0.03! waterways
    2, 0.08, 20, 2, 0.3, 0.15, 0.5, 0.08! river banks with long grass 0.3m high
    11, 0.06, 20, 2, 0.1, 0.1, 0.15, 0.06! grazing land
    12, 0.04, 5, 1.5, , , , , -1, 0, 0.1! parks and gardens (10% impervious)
    13, 0.15, 10, 2! sugar cane
    14, 0.12, 30, 2.5! natural forest
    15, 0.02, 2, 0, , , , , -1, 0.2! roads with width reduced by 20%

7.2.6.4 Rainfall Losses

Rainfall losses applied through the Materials file (.tmf or .csv format) remove the loss depth from the rainfall before it is applied as a boundary on the 2D cells. Rainfall losses are ideal for modelling situations in which water is prevented from reaching the ground, such as through the interception by trees.

Note that the ILCL rainfall losses are different to the ILCL infiltration losses that can be applied using the .tsoilf file (refer to Section 7.2.7.2). The ILCL soil infiltration losses will infiltrate ponded water into the ground. It is possible to use both methods in the same simulation – for example, rainfall that doesn’t reach the ground would be modelled as a material IL/CL (applied as a loss to the rainfall) and infiltration into the ground as IL/CL via soil types. The log file (see Section 14.4.1) will report the material and soil properties separately as shown in the example below:

Example Material Properties:

    #4 - Material 4:
    Fixed Manning’s n = 0.030
    IL = 1.0mm, CL = 0.0mm/h
    Landuse Hazard ID not set.
    SRF (Storage Reduction Factor) = 0.
    Fraction Impervious = 0.

Example Soil Properties:

    #1 - Soil 1 [based on pre-defined soil type SAND]:
    Suction = 49.5 mm
    HydCond = 117.8 mm/hr
    Porosity = 0.417
    Initial Moisture = 0.2
    Soil Capacity = 0.217

Specifying the “fraction impervious” on the material allows the materials and the soils to be independent (i.e. the same soil can be present under both road and forest). This fraction impervious only applies to the infiltration into the soil, not to the Materials file rainfall losses.

7.2.7 Infiltration

Four methods are available to infiltrate water from the surface into the ground:

  • Green-Ampt (GA) - Section 7.2.7.1.1;
  • Horton (HO) - Section 7.2.7.1.2;
  • Initial Loss/Continuing Loss (ILCL) - Section 7.2.7.1.3; and
  • SCS Curve Number (SCS) (HPC only) - see Section 7.3.5.1.1.

When using TUFLOW HPC, it is possible to model multiple vertical groundwater layers, as well as enable horizontal flow of groundwater. As these features are only available in TUFLOW HPC, they are discussed in Section 7.3.5.2.

The first three methods mentioned above (GA, HO, and ILCL) monitor the amount of water infiltrated and if the ground becomes saturated, infiltration ceases. With these methods the amount of water that can be infiltrated depends on:

  • The infiltration approach and soil parameters used for the top most (infiltration) soil layer.
  • The number, thickness, porosities, and initial moisture of the groundwater layers.
  • The fraction impervious value of the overlying material layer.

The cumulative infiltration data is stored and computed at cell centres. As such all soil data and groundwater layer geometry is sampled from the GIS / Grid layers at cell centres. Likewise the material “fraction impervious” data is sampled at cell centres (unlike the Manning’s values which are sampled at face centres).

The following .tgc commands are used to set the ID for the soil type referenced in the TUFLOW soils file (.tsoilf) (Section 7.2.7.2):

Each of these commands has the option of specifying which soil layer(s) the command applies to. Note that 2D infiltration is activated by the occurrence of one of these commands. If none of the commands exists for a 2D domain, soil infiltration does not occur for that domain.

If soils are specified, the soil ID for each cell are written to the _grd_check layer. The .tlf file contains the parameters for each Soil ID.

7.2.7.1 Infiltration Layer

Only wet 2D cells can infiltrate water into the ground. If using soil infiltration with a single groundwater layer, the default groundwater depth is infinite. The depth (thickness) of the groundwater layer can be set globally using the following commands:

They can also be set spatially with the following GIS and Grid commands:

The soil thickness sets the layer depth from the surface elevation. The soil base elevation sets the absolute elevation of the bottom of the layer. If both methods are specified for a given grid cell, the highest of the two will be adopted. The input units should be in metres or feet. To set an initial groundwater level within the soil layer, see Section 8.8.2.

In releases prior to 2023-03, the groundwater level (or depth) was set to represent a water table. For backward compatibility, it is still possible to the set a water table, using these commands:

The amount of water that enters the soil is also dependent on the fraction impervious value of the overlying material layer. The default is that the overlying material is 100% pervious (i.e. 0% impervious). However, if, for example, a concrete parking lot overlies a sandy soil, the imperviousness of the parking lot can be specified as 100% (i.e. totally), or 90% (i.e. partially) restrict the rate of infiltration. This is described in the materials file in Section 7.2.6.

If using TUFLOW HPC’s SGS functionality (Section 7.3.3), cells can be considered “partially wet”. This necessitated options for factoring down the rate of infiltration into the topmost groundwater layer, the methods are discussed in Section 7.3.3.1.3.

7.2.7.1.1 Green-Ampt (GA)

The Green-Ampt approach varies the rate of infiltration over time based on the soil’s hydraulic conductivity, suction, porosity and initial moisture content. The method assumes that as water begins to infiltrate into the soil, a line develops differentiating between the “dry” soil (with moisture content\(\ \theta_{i}\)) and the “wet” soil (with moisture content equal to the porosity of the soil η). As the infiltrated water continues to move through the soil profile in a vertical direction, the soil moisture changes instantly from the initial content to a saturated state. This concept is presented in Figure 7.15.

Green-Ampt Model Concept[^2]

Figure 7.15: Green-Ampt Model Concept2

The basic form of the Green-Ampt equation is expressed as follows:

\[\begin{equation} f(t) = K\left( 1 + \ \frac{\mathrm{\Delta}\theta\left( \varphi + h_{0} \right)}{F(t)} \right) \tag{7.7} \end{equation}\]

Where:

  • \(t\) = time
  • \(K\) = saturated hydraulic conductivity
  • \(\mathrm{\Delta}\theta\) = defined as the soil capacity (the difference between the saturated and initial moisture content)
  • \(\varphi\) = soil suction head
  • \(h_{0}\) = depth of ponded water
  • \(F(t)\) = cumulative infiltration calculated from:

\[\begin{equation} F(t) - \ \mathrm{\Delta}\theta\left( \varphi + h_{0} \right)\ln\left( 1\ + \ \frac{F(t)}{\mathrm{\Delta}\theta\left( \varphi + h_{0} \right)} \right) = Kt \tag{7.8} \end{equation}\]

The TUFLOW Wiki Green-Ampt Infiltration Parameters provides a detail description of the various Green-Ampt parameters, including how each influences the soil infiltration behaviour.

Models using the Green-Ampt infiltration loss approach are provided in the Soil Options Example Model Dataset on the TUFLOW Wiki.

United States Department of Agriculture (USDA) soil types have been hardwired into TUFLOW and are presented in Table 7.14, along with the soil parameters. Alternatively, it is possible to define a customised soil type by specifying user defined values as shown in Table 7.15.

Table 7.14: USDA Soil types for the Green-Ampt Infiltration Method
USDA Soil Type Suction (mm) Suction (inches) Hydraulic Conductivity (mm/hr) Hydraulic Conductivity (in/hr) Porosity (Fraction)
Clay 316.3 12.453 0.3 0.012 0.385
Silty Clay 292.2 11.504 0.5 0.020 0.423
Sandy Clay 239.0 9.409 0.6 0.024 0.321
Clay Loam 208.8 8.220 1.0 0.039 0.309
Silty Clay Loam 273.0 10.748 1.0 0.039 0.432
Sandy Clay Loam 218.5 8.602 1.5 0.059 0.330
Silt Loam 166.8 6.567 3.4 0.134 0.486
Loam 88.9 3.500 7.6 0.299 0.434
Sandy Loam 110.1 4.335 10.9 0.429 0.412
Loamy Sand 61.3 2.413 29.9 1.177 0.401
Sand 49.5 1.949 117.8 4.638 0.417

The Green-Ampt approach is appropriate for simulating single rainfall events where the evapotranspiration and gravity-driven drainage is not significant. The 2023-03 release introduced functionality in TUFLOW HPC to allow for horizontal movement of soil water (Section 7.3.5.2.1), to extend TUFLOW’s capacity to conduct long term simulations with multiple rainfall events. This means, ideally, the initial soil moisture and the cumulative infiltration must be ‘reset’ before each rainfall event. The 2023-03 release implemented a simple change to the Green-Ampt equation to consider the changing initial soil moisture and the cumulative infiltration.

\[\begin{equation} f(t) = K\left( 1 + \ \frac{\phi\left( \varphi + h_{0} \right)}{h_{soil}} \right) \tag{7.9} \end{equation}\]

Where:

  • \(\phi\) = porosity of the soil
  • \(h_{soil}\) = Soil water depth.

The initial moisture is no longer used to set \(\mathrm{\Delta}\theta\) (the difference between the saturated and initial moisture content) in Equation (7.7), and the cumulative infiltration is replaced by the soil water depth at the time rainfall event.

These two approaches produce slightly different results for the infiltration rate with the Green-Ampt method. If the previous approach is required, and the model has only one soil layer and no horizontal advection, then it can be selected by using the Defaults == Pre 2023 command.

7.2.7.1.2 Horton (HO)

The Horton approach to infiltration uses the following equation:

\[\begin{equation} {f = f}_{c} + \left( f_{0} - f_{c} \right)e^{- kt} \tag{7.10} \end{equation}\]

Where:

  • \(f_0\) is the initial infiltration rate in mm/hr or inches/hr (if using Units == US Customary)
  • \(f_c\) is the final (indefinite) infiltration rate
  • \(t\) is time in hours (period of time that the cell is wet)
  • \(k\) is the Horton decay rate.

If an initial loss (IL) is specified, the initial loss is applied first, followed by the Horton infiltration. Figure 7.16 shows an example of how the infiltration rate varies over time for \(f_0\) equal to 3, \(f_c\) equal to 1 and \(k\) equal to 0.1.

Models using the Horton infiltration loss approach are provided in the Soil Options Example Model Dataset on the TUFLOW Wiki.

Example of Horton Infiltration Rate over Time

Figure 7.16: Example of Horton Infiltration Rate over Time

7.2.7.1.3 Initial Loss/Continuing Loss (ILCL)

The Initial Loss/Continuing Loss (IL/CL) method is a more simplistic approach compared to the Green-Ampt and Horton infiltration methods. The IL/CL method infiltrates water based on an initial volume (at any rate) then transitions to a constant rate after the initial loss volume is exceeded.

Note that the IL/CL infiltration is separate to the IL/CL materials values used to generate excess rainfall for direct rainfall simulations (refer to Section 7.2.6.4 for further information).

Models using the IL/CL infiltration loss approach are provided in the Soil Options Example Model Dataset on the TUFLOW Wiki.

7.2.7.2 Soils File (.tsoilf)

Soils infiltration is applied to the model by defining a soils (.tsoilf) file, which is read into the .tcf using the Read Soils File command. Table 7.15 presents the parameters of the .tsoilf file and Figure 7.17 shows an example of a completed file. A number of example models demonstrating the various soil options are available on the TUFLOW Wiki Soil Options. The soils (.tsoilf) file is similar to the materials file where you assign a positive integer ID to each soil, define the infiltration method (options are “NONE”, “GA”, “HO” and “ILCL”) followed by the soil parameters as the remaining values. The Porosity (saturated moisture content), Initial Moisture (fraction of the soil that is initially wet), Max Ponding Depth and Horizontal Hydraulic Conductivity are all optional with default values of 1.0, 0.0, 0.0 and 0.0 respectively.

Note: Table 7.15 does not include the additional attributes in regards to horizontal advection or the two addiitonal soil types available if using TUFLOW HPC (SCS and convection). For these attributes, refer to Table 7.27 instead.

Table 7.15: Soil File (.tsoilf) Parameters
Column No.  No Intriltration Green-Ampt Green-Ampt Horton Initial/Continuing Loss
1 Soil ID Soil ID Soil ID Soil ID Soil ID
2 NONE GA GA HO ILCL
3 USDA Soil Type (see Table 7.14) (mandatory) Suction (mm or inches) (mandatory) Initial Loss (mm or inches) (mandatory) Initial Loss (mm or inches) (mandatory)
4 Initial Moisture (Fraction) (optional) Hydraulic Conductivity (mm/h or in/h) (mandatory) Initial Loss Rate (\(f_0\)) (mm/h or in/h) (mandatory) Continuing Loss (mm/h or in/h) (mandatory)
5 Max Ponding Depth (m or ft) (optional) Porosity (Fraction) (mandatory) Final Loss Rate (\(f_c\)) (mm/h or in/h) (mandatory) Porosity (Fraction) (optional)
6 Initial Moisture (Fraction) (optional) Exponential Decay Rate (k) (\(h^{-1}\)) (mandatory) Initial Moisture (Fraction) (optional)
7 Max Ponding Depth (m or ft) (optional) Porosity (Fraction) (optional)
8 Initial Moisture (Fraction) (optional)

Note for the Green-Ampt method:

  • the initial moisture and porosity values in Table 7.15 above are fractions. The soil capacity is defined as the difference between the saturated moisture content (porosity) and the initial moisture content, hence the initial moisture should not exceed the porosity otherwise the soil capacity is set to zero and no infiltration will occur for that soil type. A WARNING 2508 is issued if this occurs.
  • the max ponding depth value is an optional value that can be used, if desired, to set a limit for the depth of ponded water (\(h_0\)) value used in the Green-Ampt Equation (7.7). The minimum of the water depth and the max ponding depth value is used as the \(h_0\) value. The default max ponding depth value is 0, to be consistent with the basic form of the Green-Ampt equation, as hydrology models do not necessarily have a depth calculated at cells.
 Example Soils .tsoilf File Format

Figure 7.17: Example Soils .tsoilf File Format

One or more soils need to be specified globally and/or via GIS layers/raster grids to activate the infiltration feature. The first attribute of the GIS layer/s must be the Soil ID referenced within the .tsoilf file, in the same way that a 2d_mat layer references a Material ID stored within the materials .tmf or .csv file.

Table 7.16: 2D Soil (2d_soil) GIS Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Soil The soil ID value referenced within a Soils File (see Table 7.15). Integer

Each soil type can have a different infiltration method and infiltration parameters assigned to it, including a no infiltration option, as shown in Table 7.15. Other parameters that can optionally be set are:

  • The imperviousness of the surface (see Fraction Impervious parameter within the materials definition in Table 7.13 or Table 7.12); and
  • Groundwater or impervious level beneath the ground surface (refer to Section 8.8.2).

The current limit to the number of soils types is 1,000 for TUFLOW Classic simulations and 255 for TUFLOW HPC simulations.

7.2.8 Hydraulic Structures

7.2.8.1 Introduction

Bridges, box culverts and other structures that constrict flow can be modelled in 2D directly, rather than using 1D elements, provided the flow width of the structure is of a similar or larger size than the 2D cell size. Cells are modified in their height (invert and obvert) and width. For bridges, additional losses associated with piers and flow reaching the underside of the deck are specified. For box culverts, the additional resistance for vertical walls is specified. Additional form losses (energy head losses) can be specified for all flow constrictions.

Weir flow (across levees and other embankments) is modelled in 2D domains by default, this is handled differently between TUFLOW Classic and TUFLOW HPC. Refer to Sections 7.4.2 and 7.3.4 respectively.

Modelling hydraulic structures in 2D domains must be carried out with a good understanding of the limitations of different approaches and the different flow regimes possible. The modeller must understand why and where the energy losses occur when assigning form losses to a 2D cell or contraction and expansion losses to a 1D element (Syme, 2001b).

It is important to note that contraction and expansion losses associated with structures are modelled differently in 1D and 2D schemes. 1D schemes rely on applying form loss coefficients, as they cannot simulate the horizontal or vertical changes in velocity direction and speed. 2D schemes model these horizontal changes and do not require the introduction of form losses to the same extent as that required for 1D schemes. 2D schemes still however require the introduction of additional form losses since they do not model losses in the vertical or fine-scale horizontal effects (such as around a bridge pier). See Syme (2001b) for further details.

The following webinars by Bill Syme and Greg Collecutt (two TUFLOW Developers) discuss the theory behind the energy losses and affluxes modelling associated with hydraulic structures.

Additionally, the 2D Hydralic Structures Wiki Page contains information regarding 2D hydraulic structures, including theory, setup and Frequently Asked Questions (FAQs).

It is recommended that the losses through a structure be validated through:

  • Calibration to recorded information (if available).
  • Cross-checked using desktop calculations based on theory and/or standard publications (e.g. “Hydraulics of Bridge Waterways” (Bradley, 1978) or “Guide to Bridge Technology Part 8, Hydraulic Design of Waterway Structures” (Austroads, 2018).
  • Crosschecked with results using other hydraulic software.

To validate structure flows and energy losses:

  • Specify time-series output (PO) lines of flow (Q_) and flow area (QA) across the structure (see Section 11.3.2). Upstream and downstream water levels may also be specified using PO points or extracted from the map (e.g. XMDF) output.
  • Using the upstream and downstream water levels, determine whether flow is upstream or downstream controlled and estimate the flow using theoretical equations or other methods.
  • Using publications such as “Hydraulics of Bridge Waterways” (Bradley, 1978) or “Guide to Bridge Technology Part 8, Hydraulic Design of Waterway Structures” (Austroads, 2018), determine the energy loss coefficient and compare this with the total energy loss calculated in the model. The total energy loss is given below. Clearly, any energy losses associated with bed resistance (e.g. Manning’s equation) need to be allowed for by subtracting this term from the calculated head difference \({(h}_{1} - h_{2})\).
    \[\begin{equation} \zeta_{total} = {(h}_{1} - h_{2})\frac{2g}{V^{2}} \tag{7.11} \end{equation}\]
    Where:
    • \(\zeta_{total}\) = total energy loss
    • \(h_{1}\) = upstream head
    • \(h_{2}\) = downstream head
    • \(V\) = depth and width averaged velocity (i.e. \(\frac{Q\_}{QA}\))

Table 7.17 lists the recommended approaches for modelling 1D and 2D structures using TUFLOW. This is discussed further in the following paragraphs.

Table 7.17: Hydraulic Structure Modelling Approaches
Structure 1D Approach 2D Approach
Box Culvert
(For culverts with a steep slope, use a 1D element)
OK OK
Circular Culvert OK N/A
Bridge OK OK
Weirs OK OK

1D Approach

1D structures are discussed in Section 5.7. 1D modelling is the preferred approach where the total structure width is less than one or two 2D cells. Entry and/or exit losses are defined for each structure. Testing has shown that these losses may need to be reduced where the structure width is significant compared with the cell size (Syme, 2001b).

1D structures can be linked to the 2D domain using either an SX or HX connection, as outlined in (see Section 10.2). The influence of these connection types on the modelled flow behaviour is shown in Figure 7.20.

SX Link: Momentum is not transferred into or out of the 1D element to/from the 2D domain. “Suppressed” flow patterns in the 2D domain occur at the structure outlet when using 1D elements, especially if the structure width is significant compared with the cell size. The water tends to spread, rather than jet out, as there is no inertia across the link. The effect of this is illustrated in Figure 7.19, which shows the effect on flow patterns and the preservation of inertia across 1D/2D links when modelling a structure. Figure 7.19 (red velocity arrows) is that using SX links, whilst Figure 7.18 (green arrows) is that using a fully 2D solution. As can be seen, using a SX link the water tends to spread from the structure outlet, as opposed to forming a jet as in the fully 2D solution which is conserving momentum. When using the SX link, a jet like effect can be created using “wing walls” in the 2D domain at the structure outlet by assigning flood free elevations to the ZU and ZV Zpts either side of where the 1D element discharges into the 2D domain.

HX Link: Momentum is not transferred into or out of the 1D element to/from the 2D domain, however the velocity field across the HX link is assumed to be undisturbed. Provided the HX link is appropriately located (i.e. perpendicular to the flow field) this produces the effect of preserving momentum, as illustrated by the dark blue arrows (Figure 7.20). Use of HX links at a structure may require a smaller 1D timestep than that required by a SX link.

2D Approach

2D representation of structures is preferred where the total structure width is greater than one or two 2D cells. The flow area must be adequately represented by the 2D Zpts and any adjustments to cell widths (see Section 7.2.8.3 and 7.2.8.2. The head drop across the structure during different flow regimes should be validated against other methods and/or literature. Some additional form losses are normally required to achieve correct head drop (see Syme (2001b)). Momentum is transferred through the structure as shown in the top image (green arrows) in Figure 7.18, providing more realistic flow patterns than using a 1D element with a SX link, as illustrated by the middle image (red arrows) in Figure 7.19.

Flow patterns using 2D FC cells (i.e. a fully 2D solution)

Figure 7.18: Flow patterns using 2D FC cells (i.e. a fully 2D solution)

Flow patterns using a 1D element connected to 2D SX links

Figure 7.19: Flow patterns using a 1D element connected to 2D SX links

Flow patterns using a 1D element connected to 2D HX links

Figure 7.20: Flow patterns using a 1D element connected to 2D HX links

7.2.8.2 2D Bridge Structures (2d_bg)

Modelling bridge structures in the 2D domain is possible using the BG Shape input layer (2d_bg). The 2d_bg layer facilitates the modelling of bridge structures based on research on energy losses (Collecutt et al., 2022). This method is similar to the Layered Flow Constrictions (described below in Section 7.2.8.3), however, some key updates have been made. The layers in a 2d_bg are called the “pier layer” and the “super structure layer”, which consists of the “deck layer” and the “rail layer”.

Bridges can be defined as either a line or polygon GIS feature using the .tgc command Read GIS BG Shape. The layer attribute description is provided in Figure 7.21 and Table 7.18.

Points can be used to spatially vary the bridge soffit, deck depth and rail depth, with the BG Shape points input layer (2d_bg_pts). The layer attribute description is provided in Table 7.19. This can be used to model an arch bridge or sloping deck. The point objects can be placed in a separate layer to the line or polygon GIS features.

The 2d_bg layer adjusts the FLC value in the vertical as follows:

\[\begin{equation} \zeta_{total} = \left( \zeta_{pier} + \zeta_{SuperS}\frac{y_{SuperS}}{D_{IP}} \right)\frac{(y_{pier} + y_{SuperS})}{y_{total}} \tag{7.12} \end{equation}\]

Where:

  • \(\zeta_{pier}\) = FLC of the pier layer.
  • \(\zeta_{SuperS}\) = FLC to the superstructure layer.
  • \(y_{SuperS}\) = depth of water in the superstructure layer (cannot exceed \(D_{IP}\)).
  • \(D_{IP}\) = depth to the inflection point from the bridge soffit.
  • \(y_{pier}\) = depth of water in the pier layer (cannot exceed \(D_{pier}\)).
  • \(D_{pier}\) = depth of the pier layer, i.e. from the bed elevation to the bridge soffit.
  • \(\zeta_{total}\) = overall form loss coefficient applied.

The vertical distribution of the form loss coefficient has the following characteristics:

  • Water level below the deck layer: The same result as the 2d_lfcsh approaches, i.e. a constant form loss based on that specified for the pier layer (\(\zeta_{pier}\)) is applied.

  • Water level between the deck soffit and the inflection point: The FLC value is linearly increased from \(\zeta_{pier}\) to \(\zeta_{pier} + \zeta_{SuperS}\). The observations from the CFD and the field measurement indicate the inflection point is located around 1.6 times the bridge deck depth above the bridge soffit. The “Inflection Depth” (\(D_{IP}\)) is assumed as:
    \[\begin{equation} D_{IP} = {IPf}_{SuperS}D_{deck}\phi_{Deck} \tag{7.13} \end{equation}\] Where:

    • \({IPf}_{SuperS}\) = a factor to set the elevation of the inflection point. (IP). Default is 1.6.
    • \(D_{deck}\) = depth of the bridge deck layer.
    • \(\phi_{Deck}\) = blockage of the bridge deck layer.


    Note that the effect of partial blockage at the rail layer can be considered by adding the rail layer depth (\(D_{Rail}\)) to the inflection depth proportionally based on the rail layer blockage (\(\phi_{Rail}\)): \[\begin{equation} D_{IP} = {IPf}_{SuperS}\left( D_{deck}\phi_{Deck} + D_{Rail}\phi_{Rail} \right) \tag{7.14} \end{equation}\] Where:

    • \(D_{Rail}\) = depth of the rail layer.
    • \(\phi_{Rail}\) = blockage of the rail layer.


  • Above the inflection point the FLC gradually reduces with increasing depth (in a similar manner to the 2D Layered Flow Constrictions METHOD B and METHOD C approaches). This is to simulate the transition to drowned flow and tendency to zero energy losses with increasing depth over the bridge deck.

2D BG Shape Attributes and Vertical Distribution of Form Loss Coefficient

Figure 7.21: 2D BG Shape Attributes and Vertical Distribution of Form Loss Coefficient

The 2023-03-AD build implemented three extra approaches to adjust the FLC value between in the deck soffit and the inflection point:

BG FLC Default Approach == {LINEAR} | LINEAR-CONSTANT | PARABOLIC | INVERTED-PARABOLIC

  • LINEAR: the default option introduced above. The depth averaged FLC value is linearly increased from the bottom of the bridge deck to the inflection point. After the inflection point it gradually reduces.
  • LINEAR-CONSTANT: the depth averaged FLC is linearly increased from the bottom of the bridge deck to the top of the bridge deck. Between the top of the bridge deck and the inflection point, the FLC is kept constant. After the inflection point it gradually reduces.
  • PARABOLIC: the depth averaged FLC is increased using a parabolic function from the bottom of the bridge deck to the inflection point. After the inflection point it gradually reduces.
  • INVERTED-PARABOLIC: the depth averaged FLC is increased using an inverted parabolic function from the bottom of the bridge deck to the inflection point. After the inflection point it gradually reduces.

This approach can be changed for individual BG structure using the Options attribute (see Table 7.18). The vertical profiles of the depth averaged FLC values applied by the four methods are illustrated in the figure below:

Figure 7.22: Depth Averaged FLC Applied Using Four Adjustment Approaches

Other key features of the BG layer that are different from the Layered Flow Constriction are:

  • The BG layer does not apply geometry updates. This not only offers simplicity, but also is a desirable option considering that the size of TIN polygons used to modify the bridge bed elevations are often different from the size of polygon used to select BG cell faces.
  • For a line layer a “Deck_Width” value of zero sets the layer as a thin line. It selects one row of faces in the direction of flow, and the FLC value is applied to the faces unchanged. A “Deck_Width” value larger than zero sets the layer as a thick line that selects a whole cell, i.e. two faces in the direction of flow. The FLC values at the faces are divided by two. The wide line feature is not supported by the BG layer. BG polygon shapes are recommended if more than 3 rows of faces must be selected.
  • For a polygon layer, the “Deck_Width” defines the bridge width in the predominant direction of flow. This value is used to distribute the total FLC value to the selected faces, i.e.:
    \[\begin{equation} \zeta_{face} = \left( \frac{\zeta_{total}}{Deck\_Width} \right) \times Cell\ Size \tag{7.15} \end{equation}\] This means users no longer need to convert the FLC value to “form loss per metre”, which is required by the Layered Flow Constrictions polygons.

The overall blockage of the face is calculated using the same method as the Layered Flow Constriction:

\[\begin{equation} \phi_{total} = \frac{{(y}_{pier}\phi_{pier} + y_{deck}\phi_{deck} + y_{rail}\phi_{rail})}{y_{total}} \tag{7.16} \end{equation}\]

Where:

  • \(\phi_{n}\) = layer n blockage.
  • \(y_{n}\) = layer n water depth (set to zero if dry and cannot exceed depth of layer).
  • \(\phi_{total}\) = overall cell face blockage applied.

The FLC value applies an energy loss across 2D cell faces as:

\[\begin{equation} \mathrm{\Delta}h = \zeta_{total}\frac{V^{2}}{2g} \tag{7.17} \end{equation}\]

where \(V\) is the 2D cell face velocity in the presence of the blockage. When setting the blockage values, considerations need to be taken into account whether the source of the FLC value is based on the approach velocity (the velocity in the absence of piers blockage) or structure velocity (the velocity with area blocked out by the piers). For example, Hydraulics of Bridge Waterways (Bradley, 1978) or Guide to Bridge Technology (Austroads, 2018) derives FLC value based on the cross-sectional averaged velocity in the absence of piers, and thus it is recommended to set the Layer 1 blockage value as zero (0). For more information, please see the TUFLOW Wiki 2D Hydraulic Structures page.

Models using 2D bridge structures are provided in the 2D Structures Example Model Dataset on the TUFLOW Wiki.

Table 7.18: 2D Bridge Shape (2d_bg) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 ID Unique identifier up to 32 characters in length. It may contain any character except for quotes and commas, and cannot be blank. As a general rule, spaces and special characters (e.g. “\”) should be avoided, although they are accepted. Char(32)
2 Options This attribute can be used to overwrite the global setting specified with the .tcf command BG FLC Default Approach to change FLC calulation method individually. Char(32)
3 Pier_pBlockage

The percentage blockage of the pier Layer. For example, enter ‘5’ for a blockage of 5%.

Note: there is no need to apply a blockage value if the FLC is estimated based on the approach velocity (the velocity in the absence of piers). For more discussion, please see the TUFLOW Wiki page on the 2D Hydraulic Structures.
Float
4 Pier_FLC Pier layer total form loss coefficient. Float
5 Deck_Soffit The elevation of the bridge soffit (m or ft). Float
6 Deck_Depth The thickness of the bridge deck (m or ft). Float
7 Deck_Width

Line:

If equal to zero, sets the layer as a thin line and selects one row of faces in the direction of flow. The FLC value is applied to the faces unchanged.

If larger than zero, sets the layer as a thick line that selects a whole cell, i.e. two faces in the direction of flow. The FLC value at the faces is the total FLC divided by two.

Polygon:

Defines the bridge width in the predominant direction of flow (m or ft). This value is used to distribute the total FLC value to the selected faces. The FLC applied at cell faces is calculated using equation (7.15).
Float
8 Deck_pBlockage The percentage blockage of the deck layer. Enter ‘100’ for a solid bridge deck obstruction. Float
9 Rail_Depth The depth of the rail layer (m or ft). Float
10 Rail_pBlockage The percentage blockage of the rail layer. Float
11 SuperS_FLC

A postive SuperS_FLC specifes the combined form loss coefficient for the deck and the rail layers. Two layers are treated as a single “superstructure” layer in this new bridge method.

If the SuperS_FLC attribute is left blank, and Blank BG FLC Approach is set to Method A or B, superstructure FLC is generated automatically. See Section 7.2.8.2.1.

If a negative SuperS_FLC value is specified, the absolute value of SuperS_FLC is taken as a calibration factor, and is applied as a multiplier to the automatically generated superstructure FLC. If the SuperS_FLC attribute is blank, a multiplier of one is used.
Float
12 SuperS_Ipf A factor to set the elevation of the inflection point (IP) at which the transition from pressure flow to drowned flow commences. The default value is 1.6. Char(64)
Table 7.19: 2D Bridge Shape Points (2d_bg_pts) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Deck_Soffit The elevation of the bridge soffit (m or ft). Float
2 Deck_Depth The thickness of the bridge deck (m or ft). Float
3 Rail_Depth The depth of the rail layer (m or ft). Float
4 R1 Reserved for future use. Float
5 R2 Reserved for future use. Float
6 R3 Reserved for future use. Float
7.2.8.2.1 Automatic Generation of Superstructure FLC

The 2023-03-AD build implemented a feature to automatically generate the superstructure FLC value based on the CFD benchmarking study (Collecutt et al., 2022) if the SuperS_FLC attribute is left blank and Blank BG FLC Approach is set to Method A or B.

Blank BG FLC Approach == {NONE} | METHOD A | METHOD B

  • NONE: The default approach, i.e. the superstructure FLC must be specified manually.
  • METHOD A: The blank superstructure FLC values will be calculated based on the ratio of the depth of the pier layer (\(D_{Pier}\) in the equations above) and the thickness of the super structure layer:
    \[\begin{equation} T_{SuperS} = D_{Deck}{Blockage}_{Deck} + D_{Rail}{Blockage}_{Rail} \tag{7.18} \end{equation}\]
  • METHOD B: The blank superstructure FLC values will be calculated based on the ratio of the depth of the pier layer (\(D_{Pier}\)) and the thickness of the deck layer:
    \[\begin{equation} T_{SuperS} = D_{Deck}{Blockage}_{Deck} \tag{7.19} \end{equation}\]

With Method A and B, the superstructure FLC value is linearly interpolated within the \(D_{Pier}\)/\(T_{SuperS}\) range of 1~10 and capped at 0.6 and 0.16 outside this range, as shown in the Figure 7.23.

If a negative SuperS_FLC value is specified, the absolute value of SuperS_FLC is taken as a calibration factor, and is applied as a multiplier to the automatically generated superstructure FLC. If the SuperS_FLC attribute is blank, a multiplier of one is used.

Figure 7.23: CFD benchmarking study of FLC vs \(D_{Pier}\)/\(T_{SuperS}\) ratio (\(h_{B}\)/\(T\) in the original paper)

7.2.8.3 Layered Flow Constrictions (2d_lfcsh Layers)

Layered flow constrictions allow losses and blockages to be varied with water depth. This provides the opportunity to model the flow under and over a bridge deck, or a pipeline crossing a waterway.

Note: The 2023-03-AA release introduced the 2d_bg layer, see 2D Bridge Structures. It is recommended that it be used for representation of bridges. Prior to this, bridges were commonly modelled using a 2d_lfcsh.

Four vertical layers within a layered flow constriction (not GIS layers) are represented. The lower three layers each have their own attributes. Each layer is assigned its own percentage blockage and form loss coefficient. The top (fourth) layer assumes the flow in Layer 4 is unimpeded. Within the same shape, the invert of the bed, and thickness of each layer can vary in 3D.

For example, the layers of a bridge structure could be defined as follows.

  • Layer 1: Beneath the bridge deck. Might be 5% blocked due to the bridge piers and have a small form loss for the energy losses associated with the piers.
  • Layer 2: The bridge deck. This would be 100% blocked and the form loss coefficient would increase due to the additional energy losses associated with flow surcharging the deck.
  • Layer 3: The bridge rails. These might be anything from 100% blocked (solid concrete rails) to 10% blocked (very open rails). Some form losses would be specified depending on the type of rails.
  • Layer 4: Flow over the top of the rails - flow is assumed to be unimpeded.

Layered flow constrictions function by adjusting the flow width of the 2D cell so as to represent the combination of blockages of the four layers. When the flow is only within Layer 1, only the attributes of Layer 1 are applied. As the water level rises into Layer 2, the influence of the Layer 2 attributes increase as the water continues to rise. Similarly, for Layer 3 and Layer 4.

The cell side flow width is calculated by summing the flow areas of each layer (including the effects of layer blockages) and dividing by the water depth.

As of the 2020-10 release three options are available to specify the method in which form losses are applied:

  • METHOD A (CUMULATE in releases prior to 2020-10): Accumulates losses through each of the layers in the 2d_lfcsh as the depth of water increases.
  • METHOD B (PORTION in releases prior to 2020-10) – the default: Proportions the losses through each of the layers in the 2d_lfcsh based on the depth of water.
  • METHOD C: Combines the METHOD A and METHOD B approaches by utilising METHOD A through to the top of Layer 3 and METHOD B above Layer 3.
  • METHOD D: Allows the modeller to control the depth at which the losses start to reduce when the flow transitions between pressure flow and drowned flow. This approach is the same used by the 2d_bg layer (introduced in the 2023-03 release), and is discussed in Section 7.2.8.2. It is recommended to use the 2d_bg layer as it has the benefit of a simplified attribute table, for easier user input.

The following .tcf command can be used to set the default method to be applied to all structures in the model:

Layered FLC Default Approach == [ METHOD A | {METHOD B} | METHOD C | METHOD D ]

To specify the method on a structure by structure basis, populate the Shape_Options attribute (refer to Table 7.20) with either “Method A”, “Method B” (the default), “Method C” or “Method D”.

Whilst the default approach of using METHOD B is unchanged for backward compatibility purposes, it is recommended the new approaches of METHOD C or the TUFLOW HPC’s 2d_bg layer approach be considered as they are shown to emulate behaviour from CFD modelling more closely for pressurised flow conditions (Collecutt et al., 2022).

Detailed explanation outlining how the losses are applied is provided in the following sections.

METHOD A

If the form loss method has been set to METHOD A (CUMULATE), the losses are accumulated as the water level rises through the layers according to the following equation. This approach was replaced as the default setting for the 2016-03 release due to it producing inconsistent results where the bridge is substantially overtopped (drowned out) with a large percentage of the flow occurring through Layer 4, and the overall energy loss reducing with increasing water depth once the structure is submerged.

\[\begin{equation} \zeta_{total} = \zeta_{1} + \zeta_{2}\frac{y_{2}}{D_{2}} + \zeta_{3}\frac{y_{3}}{D_{3}} \tag{7.20} \end{equation}\]

Where:

  • \(\zeta_{n}\) = layer n FLC
  • \(D_{n}\) = depth of layer n
  • \(y_{n}\) = layer n water depth (set to zero if dry and cannot exceed depth of layer)
  • \(\zeta_{total}\) = overall form loss coefficient applied

METHOD B

If the form loss method has been set to METHOD B (PORTION), the losses are applied pro-rata according to the depth of water in each layer using the equation below. Note that Layer 4 (e.g. above the bridge deck rails) is always assumed to contribute a zero FLC. If a layer is not flooded the depth for that layer, yn, is set to zero.

\[\begin{equation} \zeta_{total} = \frac{{(y}_{1}\zeta_{1} + y_{2}\zeta_{2} + y_{3}\zeta_{3})}{y_{total}} \tag{7.21} \end{equation}\]

\[\begin{equation} y_{total} = y_{1} + y_{2} + y_{3} + y_{4} \tag{7.22} \end{equation}\]

Where:

  • \(\zeta_{n}\) = layer n FLC
  • \(y_{n}\) = layer n water depth (set to zero if dry and cannot exceed depth of layer)
  • \(\zeta_{total}\) = overall form loss coefficient applied

METHOD C

METHOD C effectively combines the METHOD A (CUMULATE) and METHOD B (PORTION) approaches by utilising METHOD A through to the top of Layer 3 and METHOD B above Layer 3. METHOD C adjusts the FLC value in the vertical as follows.

  • Water level below Layer 2: The same result as for all other approaches (i.e. a form loss based on that specified for Layer 1 is applied). This is typically used for the energy losses associated with bridge piers.

  • Water level below top of Layer 3: Same approach as for METHOD A.

  • Water level above Layer 3: Gradually reduces the energy loss with increasing depth by proportioning with depth. The energy loss is calculated as that accumulated from Layers 1 to 3 pro-rated by the depth of Layers 1 to 3, plus no losses pro-rated by the depth above the Layer 3.
    \[\begin{equation} \zeta_{total} = \left( \zeta_{1} + \zeta_{2}\frac{y_{2}}{D_{2}} + \zeta_{3}\frac{y_{3}}{D_{3}} \right)\frac{{(y}_{1} + y_{2} + y_{3})}{y_{total}} \tag{7.23} \end{equation}\]
    \[\begin{equation} y_{total} = y_{1} + y_{2} + y_{3} + y_{4} \tag{7.24} \end{equation}\]

    Where:

    • \(\zeta_{n}\) = layer n FLC
    • \(y_{n}\) = layer n water depth (set to zero if dry and cannot exceed depth of layer)
    • \(\zeta_{total}\) = overall form loss coefficient applied
    • \(D_{n}\) = layer n thickness

Regardless of the FLC approach, the FLC value applies an energy loss across 2D cell faces as:

\[\begin{equation} \mathrm{\Delta}h = \zeta_{total}\frac{V^{2}}{2g} \tag{7.25} \end{equation}\]

where V is the 2D cell face velocity in the presence of the blockage. When setting the blockage values, considerations need to be taken into account whether the source of the FLC value is based on the approach velocity (the velocity in the absence of piers blockage) or structure velocity (the velocity with area blocked out by the piers). For example, Hydraulics of Bridge Waterways (Bradley, 1978) or Guide to Bridge Technology (Austroads, 2018) derives FLC values based on the cross-sectional averaged velocity in the absence of piers, and thus it is recommended to set the Layer 1 blockage value as zero (0). For more information, please see the TUFLOW Wiki 2D Hydraulic Structures page.

Layered FC shapes are defined as either a line or polygon GIS objects using the .tgc command Read GIS Layered FC Shape. The file attribute description is provided in Table 7.20.

Points can be used to vary the invert of the bed, and thickness of each layer in 3D. In this case, four attributes are required as outlined in Table 7.21. This can for example be used to model an arched bridge or sloping deck. The point objects can be placed in a separate layer to the line or polygon GIS features.

Please note, overlapping flow constriction inputs is not supported.

Models using layered FC shapes are provided in the 2D Structures Example Model Dataset on the TUFLOW Wiki.

Table 7.20: Layered Flow Constriction Shape (2d_lfcsh) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Invert

Performs same function as described for the Z attribute in Tables 7.5 (point), 7.6 (line) and 7.7 (polygon) and is applied to the Invert elevation values. To leave the Zpt levels unchanged (i.e. use the existing Zpt elevations), enter a value of 99999.

Point: Not used.

Line: Invert of constriction (m above datum). If points are snapped to the line, set to 99999 and the invert specified in the points layer is used.

Polygon: Used to set the elevation of the polygon perimeter only if NO MERGE option is specified and there are no points snapped to the perimeter. If points are snapped to the perimeter, set to 99999 and the invert specified in the points layer is used.

Otherwise ignored and the Zpt elevations within the polygon will be adjusted by triangulated around the perimeter at every half-cell size.
Float
2 dZ Performs same function as described for dZ in Table 7.5 and is applied to the Invert elevation values. Float
3 Shape_Width_or_dMax

Point: Same as for Table 7.5.

Line: Same as for Table 7.6.

Polygon: Same as for Table 7.7.
Float
4 Shape_Options

Point: Same as for Table 7.5.

Line or Polygon: Same as for Tables 7.6 (line) and 7.7 (polygon). Additional options for Layered FLC Default Approach, this will overwrite the global setting specified with the .tcf command.

  • METHOD A (CUMULATE in releases prior to 2020-10): Accumulates losses through each of the layers in the 2d_lfcsh as the depth of water increases.

  • METHOD B (PORTION in releases prior to 2020-10): Proportions the losses through each of the layers in the 2d_lfcsh based on the depth of water.

  • METHOD C: Combines the METHOD A and METHOD B approaches by utilising METHOD A through to the top of Layer 3 and METHOD B above Layer 3.

  • METHOD D: Allows the modeller to control the depth at which the losses start to reduce when the flow transitions between pressure flow and drowned flow. From the 2023-03-AA release and onwards it is recommended to use the 2d_bg layer, see Section 7.2.8.2.

Char(20)

5

L1_Obvert

The obvert (soffit) of Layer 1.

Float

6

L1_pBlockage

The percentage blockage of Layer 1. For example, enter 5 for a blockage of 5%.

Float

7

L1_FLC

Layer 1 form loss coefficient. Used for modelling fine-scale “micro” contraction/expansion losses not picked up by the change in the 2D domain’s velocity patterns (e.g. bridge pier losses, vena-contracta losses, 3rd (vertical) dimension etc.).

This parameter should be used as a calibration parameter.

So that this attribute is independent of 2D cell size, it has different treatment depending on the object it is attached to as follows:

  • Line: The FLC value is the total form loss. The FLC value is automatically adjusted and applied to cell faces based on the width of the line:
    • For thin lines, the FLC value is applied to the cell faces unchanged.
    • For thick (whole cell) lines, the FLC value is divided by two (two cell faces in the direction of flow).
    • For wide lines, the FLC value applied to all cell faces is calculated by the total FLC value divided by the line’s width and multiplied by the cell size.
  • Polygon: FLC is the form loss per unit length. The FLC applied at cell faces is automatically adjusted to be the form loss per unit length multiplied by the cell size. To calculate the form loss per unit length, divide the total form loss for the structure by the length of travel in the direction of flow (i.e. bridge width). The unit of length is metres, or feet if using Units == US Customary.

If a negative FLC value is specified, the absolute value is taken and applied unadjusted to all cell faces affected by the line or polygon. Note, this is not cell size independent, and if the 2D cell size is changed, this attribute also needs to be changed.

The form loss coefficient is applied as an energy loss based on the dynamic head equation (7.25) below where \(\displaystyle \zeta_{a}\) is the FLC value.

\[\Delta h = \zeta_{a}\:\frac{V^2}{2g}\]
Float
8 L2_Depth The depth of Layer 2. Depth units are in metres, or feet if using Units == US Customary. Float
9 L2_pBlockage The percentage blockage of Layer 2. For example, enter 100 for a solid obstruction such as a bridge deck or pipe. Float
10 L2_FLC Layer 2 form loss coefficient. See notes for L1_FLC Float
11 L3_Depth The depth of Layer 3. Depth units are in metres, or feet if using Units == US Customary. Float
12 L3_pBlockage The percentage blockage of Layer 3. Float
13 L3_FLC Layer 3 form loss coefficient. See notes for L1_FLC Float
14 Notes Optional field for entering comments. Not used. Char(40)
Table 7.21: Layered Flow Constriction Shape Point (2d_lfcsh…_pts) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 Invert

Invert of constriction (metres above datum, or feet above datum if using Units == US Customary).

To leave the Zpt levels unchanged (i.e. use the existing Zpt elevations), enter a value of 99999.
Float
2 L1_Obvert The obvert (soffit) of Layer 1. Float
3 L2_Depth The depth of Layer 2. Depth units are in metres, or feet if using Units == US Customary. Float
4 L3_Depth The depth of Layer 3. Depth units are in metres, or feet if using Units == US Customary. Float

7.2.9 Cell Modification

7.2.9.1 Storage Reduction (2d_srf)

The storage of 2D cells may be reduced (e.g. to model hypothetical filling, or reduced storage from buildings), or increased (e.g. for stability). For example, if a cell has a Storage Reduction Factor (SRF) value of 0.1, then its storage (surface area) is reduced by 10%. If the SRF value is less than zero, the storage is increased. The default SRF value is zero (i.e. no change in storage).

SRF values are assigned to cells in one or both of the following ways:

  1. Using the Set SRF and Read GIS SRF .tgc commands. The 2d_srf layer has only one attribute, a float or real value nominally called SRF.
  2. Assigned to materials .csv/.tmf files as the 5th and 10th column values respectively (refer to Table 7.12 and Table 7.13).
  3. Using the .tgc command Read Grid SRF to assign SRF values from a raster input grid.
  4. Via SX connections to 1D. The default approach increases the storage in the 2D cells by the average associated 1D node storage. Refer to Section 10.2.2 and .tcf command SX Storage Approach. The applied SRF value is reported in the SRF attribute of the _grd_check layer.

Note that a user can apply a combination of material SRF values and Read GIS SRF layers. The item that is used by the simulation depends on the order of commands in the .tgc file. The last read input takes precedence. For example, if a cell’s storage is adjusted by layers read in using both the Read GIS SRF and Read GIS Mat commands, though Read GIS Mat is lower in the .tgc file, it will prevail.

If a large reduction in cell storage is applied, for stability reasons it may be necessary to also reduce the cell conveyance using a higher roughness or cell flow width (see Section 7.2.9.2). For example, if a 10m cell size model has a SRF value of 0.99, without any SRF the cell area is 100m2 (10m x 10m), with a SRF of 0.99 this would be reduced to 1m2. If no reduction in conveyance for flow entering or leaving the cell is made, a significant volume of flow may enter the cell between timesteps, this would cause the water level in the cell to jump a large amount, potentially leading to oscillations in water levels.

Models using the storage reduction functionality are provided in the Boundary Condition Options Example Model Dataset on the TUFLOW Wiki.

7.2.9.2 Cell Width Factor (CWF)

The .tgc commands Set CWF, Read GIS CWF and Read Grid CWF can be used to adjust the 2D cell flow widths, in the same manner as for 2D flow constrictions (refer to Section 7.2.8.3). The CWF is a factor, for example a value of 0.1 will limit the flow width to 10 percent. The adjusted flow width applies at all depths. When reading from a polygon object in GIS format, any cell sides that fall within the polygon will have the width factor applied. The factor is entered using a 2d_cwf GIS layer (see Table 7.22). These factors can be reviewed in the uvpt_check file.

Table 7.22: Cell Width Factor (2d_cwf) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 CWF The factor used to adjust 2D cell flow width at all depths (see Section 7.2.9.2). Float

7.2.9.3 Form Loss Coefficient (FLC)

Form loss coefficients can be applied in the .tgc to add an additional energy loss at the 2D cell side (in the same manner as for 2D flow constrictions, see Section 7.2.8.3 and 7.2.8.2).

Unlike flow constrictions, the FLC applied using this approach does not vary with depth. The form or energy loss can be applied as fixed values with the .tgc commands Set FLC, Read GIS FLC and Read Grid FLC or on a form loss per unit length basis with the .tgc commands Set FLC/L, Read GIS FLC/L and Read Grid FLC/L. For Read GIS FLC and Read GIS FLC/L, the form loss coefficient is entered using a 2d_flc GIS layer (see Table 7.23).

The advantage to applying the FLC on a per unit length basis is that it makes these inputs independent of the 2D cell size when using regions (polygons). As such, if the 2D cell size is changed, the same energy loss will be applied to both models over the area of the region.

Any cell sides that fall within the polygon will have the additional form loss. These loss can be reviewed within the uvpt_check file.

Section 7.2.8 provides a detailed discussion about the application of additional form losses.

Table 7.23: Form Loss Coefficient (2d_flc) Attribute Descriptions
No.  Default GIS Attribute Name Description Type
1 FLC The form loss coefficient used to apply additional energy loss at 2D cell sides (see Section 7.2.9.3). Float

7.2.9.4 Modify Conveyance

The. tgc command Read GIS Zpts Modify Conveyance can be used to modify the elevation of a series of cells based on an increase or decrease in conveyance. Three inputs are required for this operation. These are:

  1. A GIS layer containing a region / polygon object within which the modification will apply;
  2. A conveyance multiplication factor; and
  3. A water level grid.

The command syntax is:

Read GIS Zpts Modify Conveyance == <gis layer> | <K_factor> | <Water_Level_Grid>

The terrain levels are adjusted based on the depth of water relative to the water surface provided. The elevations are modified by \(depth\left( 1 - f^{\frac{3}{5}} \right)\), which is effectively a change in conveyance of \(K\times f\) where \(K\) is conveyance and \(f\) is the multiplication factor. For example, f = 1.2 would be a 20% increase in conveyance resulting in a deepening of the waterway. The specified base water level grid is a grid surface in a supported input raster format. The grid does not need to be in the same resolution as the 2D domains, but is typically the _h_Max grid output by TUFLOW from a previous simulation (see Section 11.2.2.2).

This feature is useful for sensitivity testing the changes in flood behaviour due to a deepening or accretion of a river’s bed based on a change in conveyance.

This command would normally be applied in the .tgc, after all elevation (Zpt) commands as the Zpt adjustment is based on the Zpt elevations processed up until the location of this command in the .tgc file. An example is provided below:

Read GIS Zpts Modify Conveyance == gis\2d_mod_river.shp | 0.9 | base_h_Max.tif

Where:

  • 2d_mod_river.shp contains polygons of the areas to be modified, in this case along the river. This can be in any supported vector format (.gpkg, .shp or .mif).
  • 0.9 is the factor change in conveyance compared to a base case (i.e. 10% decrease in conveyance).
  • base_h_Max.tif is a raster grid of the peak water level grid from a base case simulation. It is recommended to copy this grid layer from the results folder and place it somewhere under model\grid\. If this grid layer varies with AEP, it is recommended to use the one .tcf with a Variable to define the AEP, or alternatively a Scenario variable.

7.2.10 Modelling Urban Areas

The modelling of urbanised floodplains presents many more challenges to hydraulic modellers than those of rural floodplains. It requires careful consideration of the representation of buildings, walls and fences to accurately replicate the overland flow routes. With the advancement of modern computing hardware and software, 2D solutions are increasingly being used over 1D solutions to represent urban areas.

This section of the manual discusses the various methods available in TUFLOW to represent the features within an urban area. It does not aim to identify the most appropriate method, however, discusses the pros and cons to provide the modeller with guidance on selecting the most suitable method for their study.

Syme (2008) explores modelling approaches for buildings and fences, it can be found along with other publications in the TUFLOW Library.

7.2.10.1 Buildings

A number of methods can be used for representing buildings in a TUFLOW 2D model. These are:

  • Utilising a higher bed resistance (roughness);
  • Raising the elevation of 2D cells where buildings exist;
  • Deactivating the 2D cells (code = 0) where buildings exist;
  • Reducing the cell storage;
  • Restricting the flow using a cell width reduction or additional form loss; or
  • Applying a breakline along the upstream faces of buildings.

Utilising a high bed resistance parameter for buildings is a commonly used method to encourage the development of preferential flow paths around buildings during urban flooding scenarios. This method is commonly used and preferred over others as it accounts for the storage that the building provides once it becomes inundated (Syme, 2008). Depth varying roughness is recommended if using this approach in combination with direct rainfall modelling. A low roughness value is recommended at shallow depths, representing the rapid run-off response associated with rainfall on building roofs. High bed roughness is recommended for deeper flows when the building structure impedes overland flow. The application of depth varying roughness is described in Section 7.2.6.

Buildings may also be “removed” from the 2D domain by categorising the buildings as “Land” cells (see Section 7.2.2) or raising the Zpt elevations above the predicted flood level (see Section 7.2.5.2). This method may be appropriate when the building/s have been designed to not flood. In this case, care should be taken to ensure the chosen cell size is able to appropriately represent the area of the building and the storage ‘removed’ from the floodplain. Representing buildings in this fashion will not take into account any below ground storage, such as that provided by underground car parks or basement properties. If using a direct rainfall approach (rain on grid), this method is most likely not suitable. Any land (inactive) cells will have no rainfall applied, meaning the flow volume will be incorrect, artificially high cells (e.g. 10m above ground levels) may cause stability issues as flows exit the building.

Flood studies often require the simulation of extreme flood events, where a great number of buildings are expected to become inundated. It may not be appropriate in these cases to “remove” the building entirely from the 2D domain. A more suitable approach may be to raise the Zpt elevations (see Section 7.2.5.2) of the building polygons to match the finished floor level, thereby specifying the elevation at which the building is able to flood. This may allow for direct rainfall simulations using a modification of the cell elevations.

The use of a thin breakline around the edges of the building can be used to prevent the building becoming a flow path, whilst not removing the storage volume (see Section 7.2.5.2). For example, three sides of the building could be blocked, this will still allow water to enter the building but not flow through it.

Layered flow constrictions (see Section 7.2.8.3) or Cell Width Factor (see Section 7.2.9.2) may be used to impede the flow of water as it passes through the building. The sides of 2D cells may be partially blocked to represent obstructions such as internal or external walls. Additionally, a form loss can be applied using form loss coefficients (see Section 7.2.9.3).

A storage reduction factor can also be used to reduce the area in the cell available for water using the SRF options (see Section 7.2.9.1). This can be used in conjunction with the other methods, for example, a building may have the storage reduced by 20% by applying a SRF of 0.2, this could be combined with a Cell Width Factor of 0.8 (20% reduction in flow area through the building).

In the absence of guidelines in the literature it is recommend that the approaches for modelling buildings be sensitivity tested or calibrated, if possible.

7.2.10.2 Roads

Roads typically represent the main flow routes through urban areas. The chosen cell size of the 2D domain is a key factor in ensuring an appropriate number of cells have been used to represent the width of the roads, as previously discussed in Section 3.2.2. Choosing too coarse a resolution may result in the roads not being accurately represented and minor flow routes not being represented at all. An unnecessarily fine resolution may translate to excessively long simulation times and stability problems if the Courant condition is exceeded. Ideally, it is recommended that the main flow routes be represented with a width of approximately 3-4 cells across. Note, when using the TUFLOW HPC SGS functionality (see Section 7.3.3) identification of locations where a breakline should be used to represent a flow control crest may be important. The SGS Breakline Detection Delta tool (see Section 7.3.3.1.3) can assist modellers in identifying where breaklines may need to be added.

For overland flood studies where a high proportion of sheet flow is predicted, differentiation between the road and pavement elevations may influence the predicted areas of inundation. A DTM based on LiDAR or ALS data, may not necessarily pick up this detail, and requiring manual modification of the topography using breaklines.

It is possible to apply the Log Law rule for very shallow flow through automatically varying Manning’s n. This is of particularly interest for modelling flow over smooth surfaces such as roads and concrete (see Section 7.2.6.2).

7.2.10.3 Fences and Walls

Fences and walls can cause significant blockages during a flood event, influencing the direction that flood waters take. Walls act to deflect the path of flood waters and if overtopped, may act as weirs. Fences may partially impede the flow of water and can be prone to becoming blocked with debris. There is also the potential for both walls and fences to collapse during a flood event.

Fences and walls are typically included within a TUFLOW model by digitising a series of breaklines. The 2d_zsh GIS layer permits the width of the breakline to be specified (see Section 7.2.5.2). A “thin” line modifying only the ZU and ZV (cell side) elevations may be preferred to represent fences, in situations where the width of the cell size is notably greater than the width of the obstruction. A “thin” line does not modify the ZC (cell centre) elevations hence has no impact on the cell storage. A “thick” line on the other hand, modifies the ZU, ZV and ZC Zpt elevations and may be more appropriate to represent wider obstructions such as railway embankments.

The 2d_vzsh GIS layer (see Section 7.2.5.3) may be used to represent an embankment that collapses during the simulation. The breach may be triggered at a specified time, by the water level at a defined location or the water level difference between two locations exceeding a specified amount.