Flows

Components for creating simple projections and analysis of surface water flows.

The associated model and definition that demonstrating the use of these components can be downloaded here. You will need to have installed the Groundhog plugin for the definition to work properly.
Surface water flow paths across a littoral region

Surface water flow paths across a littoral region

Image via Philip Belesky for the “Processes and Processors” project (http://philipbelesky.com/projects/processes-and-processors/)

The “flows” components create naïve projections or simulation of surface water flows and provide further means to analyse the results of this calculation. The key component — the FlowPath accepts a series of ‘drop points’ on a Surface or Mesh that become the starting locations of each hypothetical flow path. From there, each point samples the surface or mesh to determine its slope, which becomes a directing vector (i.e. one that points ‘downhill’). Each point is then moved along this vector a pre-specified distance, forming a line. The end of this line part then becomes the starting point for the next direction; creating a recursive process where flow paths assemble themselves as Polylines that grow through this series of descending jumps.

This ‘gradient descent’ process repeats until a path crosses the edge of the form, after a specified quantity of iterations, or until the algorithm determines that the path has reached a point without a viable further downhill path. This halting calculation aims to identify ‘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.

The FlowPath component takes two forms a SurfaceFlowPath and a MeshFlowPath depending on the geometric type of the ‘landscape’ you want to test.

Flow Projection (Surface)

Nickname
Srf Flows
Panel
Hydro
Icon

Construct flow paths over a surface

Mode Name ID Description Optional Type
Surface S Base landscape form (as a surface) for the flow calculation SurfaceParameter
Points P Start points for the flow paths. These should be above the surface (they will be projected on to it) PointParameter
Fidelity F 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. NumberParameter
Steps L A limit to the number of flow iterations. Leave unset or to 0 for an unlimited set of iterations IntegerParameter
Thread T Whether to multithread the solution (this can speed up long calculations) BooleanParameter
Flow Points F The points of each simulated flow path ‘jump’ PointParameter
Flow Paths C A polyline linking each of the flow points into a path CurveParameter

Flow Projection (Mesh)

Nickname
Mesh Flows
Panel
Hydro
Icon

Construct flow paths over a mesh

Mode Name ID Description Optional Type
Mesh M Base landscape form (as a mesh) for the flow calculation MeshParameter
Points P Start points for the flow paths. These should be above the mesh (they will be projected on to it) PointParameter
Fidelity F 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. NumberParameter
Steps L A limit to the number of flow iterations. Leave unset or to 0 for an unlimited set of iterations IntegerParameter
Thread T Whether to multithread the solution (this can speed up long calculations) BooleanParameter
Flow Points F The points of each simulated flow path ‘jump’ PointParameter
Flow Paths C A polyline linking each of the flow points into a path CurveParameter

Once calculated, these flow paths can then be used to support further analysis of the landscape’s hydrological features.

The first component for this is FlowCatchment. It uses the collection of flow paths (knowing their end points) to identify different catchment areas. That is to say, it classifies each flow path into groups depending upon which paths finish or ‘drain’ into the same approximate location. This grouping is visually represented using a Voronoi diagram with each cell centred on the original Pts used as the ‘start’ of each path (adjacent cells of the same group will be merged). Additionally, the different catchment groups are provided with a distinct colour code and its cells/paths are output as distinct branches so they can be visualised or analysed further.

Flow Catchments

Nickname
Catchments
Panel
Hydro
Icon

Identify the catchments within a set of flow paths

Mode Name ID Description Optional Type
Flow Paths C The flow paths as generated by the flows component CurveParameter
Proximty Threshold T The distance between end points required to form a catchment NumberParameter
Catchments B The catchment boundaries identified CurveParameter
Flow Paths P The flow paths grouped by catchment CurveParameter
Color Codes C Colour codes the uniquely identify each path and boundary ColourParameter
Grasshopper definition demonstrating how to use the flow and catchment analysis for Surface and Mesh form.

Grasshopper definition demonstrating how to use the flow and catchment analysis for Surface and Mesh form.

Philip Belesky, for http://groundhog.la