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 johnharding@fastmail.fm 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.

  • Charles C Vincent

    :-)

  • Ángel Linares

    Thanks for the component. I enjoyed a lot reading the paper. Thanks for sharing!

  • emlplsn

    Hi John,

    Thanks for sharing this. I'm just a little curious about how this approach deals with stability and time steps. My experience is that DR becomes quite sensitive to changes in stiffness and masses during runtime in relation to a fixed time step. Are the time steps being updated after each iteration just like the nodal masses are being updated according to new geometry?

    //Emil

  • John Harding

    Hi Emil,

    Thanks for the reply.

    I've just updated the component and examples to make the time step an input. This can now be adjusted to suit the problem in hand and avoid instability. The default value is 0.001.

    The time step stays consistent throughout, and for most problems the Euler integration used seems to work just as well for the dynamic loads, although an adaptable time step would be better.

    John.

  • emlplsn

    John,

    Thanks for your reply and thanks for the updated component. Adaptable time step algorithms is an interesting topic. I am currently in the process of writing a 6DOF DR solver (earlier discussed with you through mail), and I am really struggling with finding a good method for adjusting timesteps during relaxation. If I may ask, how would you go about implementing this in your DynamicMass.gha? Also, you mentioned Euler integration - is it symplectic / semi-implicit Euler you are using? 
    //Emil