Finding funicular forms using dynamic weights

During form-finding of funicular networks, dynamic weights that update per time-step relative to a local measure are interesting... not least because such systems often converge when intuition says they should explode.

For the case of a tensile spring network in 3 dimensions, the equilibrium result is funicular so long as the network is at most valency-3 (incident edges per node) and therefore statically determinate. This determinancy means that tensile springs (e.g. zero natural length) can be replaced with rigid bars to form a funicular thrust network (Block, 2007) with identical forces.

This component provides a method for exploring these _trivalent_ networks within Grasshopper, in a similar way to using Kangaroo (note: you will get a warning if the system is not statically determinate).

You can explore networks with constant nodal forces (0D), dynamic based on line length (1D) or dynamic based on local area triangles (2D). The examples available in the link below give examples of each.

The component is open source, available on github and released under the MIT licence. It will appear under Extra>Rosebud following installation of the gha file in the libraries folder.

Download latest release (gha and example files) here:

A preprint describing the method in more detail is attached below. This paper was presented at the 2013 International Association for Shell and Spatial Structures 2013 Symposium:

Please send any queries to or post comments below.

Block, P. & Ochsendorf, J. (2007). Thrust Network Analysis: A new methodology for three-dimensional equilibrium.
International Journal of Shell and Spatial Structures, 155.

Load Previous Comments
  • John Harding


    Sure I remember our email chat.

    With regards adaptable time steps, I'm guessing here but I think the standard numerical methods that account for error (to adjust the time step) could be used. As I tend to deal with weak systems it's not so critical for this kind of application. Have you been in contact with Chris Williams directly? I'm sure he'd be happy to help.

    To answer your second question, semi-implicit Euler is used with this solver. I should use RK4 or something really...


  • emlplsn


    Many thanks for taking the time. I haven't been in touch with Chris directly. He was overseas last week, but I missed him unfortunately. I will indeed check with him. It's a little bit tricky when the integration of the rotational DOFs must be carried out simultaneously, since they can have different stability thresholds compared to the translational DOFs (due to differences in translational / angular stiffness). One approach explained here is to use a constant time step, but instead update the fictitious nodal masses (which are separated from the dead load of the structure).

    I have a C# implementation of RK4 based on what is explained in this paper. Let me know and I would be happy to share.


  • Gaurav Goel

    Hey John thanks for designing this component. It seems very interesting. I was your student at Nottingham university and we did a paper shell fabrication using processing in our studio in 2014. This component seems to make that process easier !!