Enclosed Gridshell Form Finding Process
1. The form finding process starts with a perimeter guide curve.  This should approximate the desired shape of the gridshell.  Keep in mind that sharp curves will be smoothed out.

2. To find the angle for the lathe grid, it is assumed that the best orientation for stability of the structure occurs with the direction of the lathes rotated 45 degrees from the principle axis of the structure.  To find this orientation, lines are rotated around the area centroid of the guide curve, and trimmed by the curve.  The longest length line is chosen to orient the grid.

3. From the orienting axis, a mesh is created with the center at the area centroid of the perimeter guide curve.  Inputs for the mesh are lathe spacing (mesh cell dimensions) and number of lathes (mesh cells in both directions).

Parts 4 – 8 describe the setup and execution of the Kangaroo form finding process
4. From the orientated mesh, a grid of lines is extracted using the Warpweft component from Kangaroo 2.  Two lists are made from the lines of each direction with one list offset one line segment from the other list (the lists contain the same lines, but the first line on one list corresponds to the second line on the other list, and the second on one to the third on the other, etc.).  These two lists are attached to the Kangaroo Angle component which tries to minimize the angle between the lines of both lists.  This simulates a stiff, bendable member such as a wood lathe.  The Angle component is fed into the goals input of the Kangaroo 2 solver.

5. The edges of the cells of the oriented mesh are extracted and fed into a Length Kangaroo goal object component.  This tries to retain the length of the segments, which is important because in actual construction, the grid is pinned at the joints prior to erection.  The Length component is fed into the goals input of the Kangaroo 2 solver.

Parts 6 – 7 describe the generating forces of the form finding process.  So far there is a grid of stiff members pinned at the joints, that acts like a stiff fabric.
6. The mesh points are extracted and those inside the perimeter guide curve are assigned a positive z vector load using the Kangaroo Load component.

7. The perimeter guide curve is offset to the outside a small amount, and the points of the mesh outside the offset are assigned a load with the vectors directed toward a point below the grid.  Alternatively, these points could be assigned a negative z vector load, but the idea is to push inwards somewhat on the mesh to make the walls of the final gridshell steeper resulting in more efficient use of space.  The purpose of the offset is to provide a portion of the grid that does not have load applied so that there won’t be reverse curvature at the bottom of the shell.

8. With goal objects of Angle, Length, and Loading set, the Kangaroo Solver is run.  It is important to reset the solver before running to make sure the simulation conditions are set.  As the solver runs, the grid is deformed by the loading with only the portion of the grid in positive z coordinates visible.  Simulation paused when desired shape reached.

Kangaroo is a dynamic relaxation solver.  This means it works by finding equilibrium between a set of forces.  Therefore, having to stop the solver to achieve a desired shape is an imperfect way to use the solver.  The problem is that constraints such as the support points of the gridshell can’t be set, because they have to be found as the loading determines the form of the shell.  If the solver were left to run, the loading on the points outside the offset would eventually pull the whole grid down.  In the end, precision is not really required in the form finding, as long as the form is determined by the stiffness of the members, their joint locations and more or less by the loading of the structure.

Form Finding Grasshopper Script

You may also like

Back to Top