In the past year I have done some work with the diagrid.  It is a commonly used structural framework.  Probably the most recognizable building using this system is the Gherkin/Swiss Re tower in London by Norman Foster.  This technique has many things working for it;  it is very flexible, it uses the triangle, a very structurally stable shape, as its basis, and it also ensures planar surfaces.  These aspects, especially its flexibility make it a very attractive tool in computational design.

I have used it mainly in a couple of tower designs, though it is also included in the latest competition that I finished.  In these tower projects I have found that even though the basic principles are the same, because of the differing parameters that are incorporated, the way it is modeled in grasshopper is quite different.

This is a topic that has been broached by Daniel Davis at his excellent blog Digital Morphogenesis.  He has noticed how little we reuse solutions for the same problem, often starting from scratch when someone else has already figured it out.  I have found many of problems he discusses with using the grasshopper database, but my focus here will be on the specific issues in my diagrid studies.

The diagrid can be defined very simply in grasshopper, by subdividing a surface and connecting 3 of the resulting vertices of each resulting subsurface.  As you can see below the inputs and variables are straight forward, just a surface and how many divisions you need.

But this is only the start, once you add parameters and have specific outcomes that are required the definition becomes quite complicated.  The actual division process of the surfaces remains the same, what changes is are how you achieve that surface and what happens to it after.

The first example is from a tower I began developing for work.  Though the project never got off the ground the diagrid was one of the first things I worked out about it.  It is tower that twists and tapers.  I wanted to able to control everything inside grasshopper so there is no input geometry, but a lot of variables inside the definition.


GH Definition

Because all the control happens inside the grasshopper definition the are many variables, including 4 controlling the twist, 4 controlling the taper, and 4 controlling the basic shape of the tower.  There are also variables that directly affect the diagrid, such as the number subdivisions on each facade and how many floors to use for each of the modules. The diagrid here is modified to create intersecting “x” forms, which are the structural modules.  To achieve this each diagonal is split in half and redefined based on a point between the two.  While a planar surface was not required, the structural members did need to intersect to create a rigid frame.  This creates an interesting effect as the surface and the structure pass through each other, as can be seen below.

The next example is from the Taiwan Tower Competition that I recently completed.  Here again the diagrid works as structure, but also as a facade, so we returned to the triangle.  But in this example the triangles are alternating left and right, which differs from the repeating pattern shown in the basic example.  This effect was used specifically because the plan was based on a rotating “fat triangle” and we shifted the diagrid vertically to generate a structural pattern that worked with the rotating plan.

GH Definition

For this definition the inputs were a base plan geometry and points at which this geometry would be copied.  The variables included the rotation of the tower and the scaling of the “floors.”  Here there is no subdivision of the surface, as that would have taken away from the rotating/shifting strategy that was implemented.

The final example here is also taken from the Taiwan Tower Competition, but is part of an early study that we abandoned.  But I think it is worth showing because it takes a completely different approach.  The inputs are a curve and an attractor point.  The variables control the height, number of elements, and shift, as wells as the strength of the attractor.

GH Definition

As you can see there are no surfaces in this method, instead it uses curves. The goal was to create continuous curves as opposed to the segmented sections of the typical diagrid.  This leads to completely different organization and look to the structure.  Not a true diagrid. The idea comes from birdcaging wires.

These examples are obviously only a small sample of the possible approaches to creating a diagrid structure.  The approach worked bottom-up, from an understanding of what parameters to use, to how these parameters defined the space of the tower, and then using the diagrid to articulate that space.  Each time the articulation is a result of an interaction between parameters and the distribution of space.  I will continue to use the diagrid.  Its flexibility allows infinite possibilities and my hope is to also begin to work with it in terms of structural optimization which will add another level of feedback into the projects.


4 thoughts on “Diagrid Iterations

  1. Hello Matei,

    Thank you for sharing this very candid view into your design process – and the files really demonstrate how to get the most out of Grasshopper.

    I spent last night thinking about why it was necessary to have three different methods of generating the diagrid and whether retrospectively there is a general solution to all of these problems. I am afraid I can not see any pattern to it. I suspect it is necessary to have three different scripts because there are three different input conditions. You could write a general diagrid component that takes a list of points and makes a diagrid, but making the adapters to convert the three different inputs into this generalised format would take as long as just making three different diagrid scripts.

    So I think you are right in pointing out this is an interesting problem where parametric tools still require us to manually design each solution, even though they are similar problems, but I can not see any way around it yet.


    ps. I think the files linked to in example 1 and 2 are in the wrong order.

    • Hi Daniel,

      While I was writing the post I also spent some time trying to see why I resorted to different approaches, Initially I thought that only the surface changed, and then the diagrid would basically be the same just with a different input. But that is not the case, the diagrid itself is used differently, with the triangle and diamond both used as outputs. With both the output and the input changing it was clear to me that if i had tried to reuse previous definition would probably have actually worked against me rather than helping.

      But I think that the flexibility of both the approach (grasshopper) and the system (the diagrid in this case) are what make computational design so powerful. Because we are working from the bottom up we are not limited by simple typologies or even the presets of a drafting program. Using mathematical principles tied to an understanding of architecture as the managing and articulation of relations really gives us the option to start from scratch on every project without the tabula rasa condition that would be otherwise implied.


      and i fixed the links, thanks.

  2. Pingback: parametricmodel.com « Digital Morphogenesis | Evolving architecture through computation

  3. Pingback: Spring is in the Air and Work is in the Pipeline « B.U.A.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s