Components for creating projections of surface water flows.
The “flows” components create naïve projections or simulations of overland surface water flows and provide methods to analyse the results of these calculations.
The key component — the
FlowPath — accepts a series of ‘drop points’ on a
Mesh that become the starting locations of each hypothetical flow path. These starting points then act as the origin points in an ongoing behaviour loop:
- The origin points each sample the surface or mesh to determine its slope
- This sampling identifies a vector that points ‘downhill’
- Each point is then moved along this vector a pre-specified distance and a new point created
- A line is drawn between the origin points and their new points
- The new points are assigned as origin points and the process repeats
The line segments created by this process are ‘grown’ through this series of descending jumps. This ‘gradient descent’ process repeats until a path crosses the edge of the form, a specified quantity of iterations are performed, or until the algorithm determines that there is no further downhill path. This halting calculation aims to identify a ‘basin’ where water might collect and pool rather than continue to flow downhill.
The component then produces as an output a series of
Polylines, from which the beginnings, ends, and individual segments can be readily extracted. The process provides degrees of flexibility. By accepting any given set of
Points (rather than enforcing a spatial grid or other formation) it offers the ability to work across a number of contexts, from situations where you may want to simulate a uniform distribution (say rain) or just a particular point-source of water.
FlowPath component takes two forms a
SurfaceFlowPath and a
MeshFlowPath depending on the geometric type of the ‘landscape’ you want to test.
Construct flow paths over a surface or mesh
|Surface or Mesh
S or M
|Base landscape form (as a surface or a mesh) for the flow calculation
SurfaceParameter or MeshParameter
|Start points for the flow paths. These should be above the surface (they will be projected on to it)
|Amount to move for each flow iteration. Small numbers may take a long time to compute. If not specified or set to 0 a (hopefully) sensible step size will be calculated.
|A limit to the number of flow iterations. Leave unset or to 0 for an unlimited set of iterations
|Whether to multithread the solution (this can speed up long calculations)
|The points of each simulated flow path ‘jump’
|A polyline linking each of the flow points into a path
Workflows and Examples
Once calculated, these flow paths can then be used as inputs for two further components:
The example file for this component demonstrates a number of options for visualisation and extension, such as:
- Using a
Metaballcomponent to display (a very crude) ‘pooling’ effect at the end of the flow paths
- Using geometric intersections to test how drainage pits intercept water flows
- Fading the color of the paths as they travel further from their ‘source’