Computational Morphogenesis with Karamba/Galapagos – Test on the Crematorium of Kakamigahara – Meiso no mori – Toyo Ito

In 2007, I started my PhD working on the development of a GA for the structural optimisation of free-form structures. I first tested the GA on the crematorium of Kakamigahara, designed by Toyo Ito and Mutsuro Sasaki consultants. The geometrical data, as well as the optimisation procedure were directly developed in Rhinoscript, the simple programming environment implemented by Rhinoceros. Ansys was used as the FEM solver to calculate the maximum displacements of the roof structure. The structural model was prepared in Rhinoscript, and then transferred to the FEM solver via a *.txt file (that run in batch mode). The optimisation procedure was conceived to be entirely automated.

The mesh was a triangular grid of 2500 elements. The concrete columns were considered as the only supports (fixed joints, even if that was not the real condition, as explained in the book “From control to design”). Regarding applied loading, gravity and self-weight were considered. The design variables of the problem were the Z coordinates of the control points of the NURBS surface of the roof. This was my way to “see” – or better interpret – the crematorium, and it was an exercise in which such architecture was freely redesigned.

The results of this research work were published in: Pugnale A., Sassone M., Morphogenesis and Structural Optimization of Shell Structures with the Aid of a Genetic Algorithm, “Journal of the International Association for Shell and Spatial Structures”, Vol. 48, n. 155, December 2007, pp.161-66. The can also be found within my PhD thesis, which is published online here (in the appendix you can find the original algorithm used).

Flowchart 2007 Crematorium

In the following years (2008-2010), similar GAs and relaxation algorithms were developed for the solution of other optimisation problems, related – for instance – to acoustics and planarity of gridshells.

Considering that Toyo Ito has been recently awarded of the Pritzker prize 2013, I am proposing here a “restored version” of the crematorium case study using Grasshopper, Karamba and Galapagos as design tools.


Kakamigahara Karamba screenshot - OPT script

This time, the roof has been described with a NURBS surface, again using the Z coordinates of the control points as the design variables (vertical domain restricted to the range -10m/+10m). Karamba has been used as the FEM solver. The mesh has been simplified comparing to the previous calculation done in 2007 for speed reasons (now it is a 35×20 grid). Regarding the loads, a gravity load has been applied, as well as the self-weight and a live load of 6KN/m2. The shell material has been chosen as a conventional concrete C25/30 (defined by the Eurocode), and the shell thickness has been defined equal to 25cm. The algorithm has been run for 400 generations in Galapagos, and it has resulted in a structural form with maximum displacements of 3.3 cm. (the flat surface would give a max displacement of 67 cm).

Kakamigahara Karamba screenshot - OPT karamba script

Kakamigahara Karamba screenshot - OPT loads

Kakamigahara Karamba screenshot - OPT displacements

Kakamigahara Karamba screenshot - OPT running GA

The Rhinoceros and Grasshopper files of this exercise can be downloaded under Resources.

You will need a full license of Karamba to run the optimisation process. However, you could also use the trial version by reducing the number of shell elements used (max 50 elements).

1 11407


  1. This is a topic that’s near to my heart… Cheers!
    Exactly where are your contact destails though?

  2. Hi! Thank you for this definition and elaborated problem! It is definitely great! I would like to test a new optimization solver Glowworm which I am currently working on to compare results with Galapagos on this problem.
    However, I found a tiny mistake in definition – In ROW 5, when you are projecting points to find supports, you should put to List Item 1 and 4 (now is 1 and 5).
    I am also wondering, if the surface you are initially projecting on ( with vector 0.0.1) is quite low (level about 6m), so that you cannot project points that are above this level back to the surface (with vector 0,0,-1)
    This leads to the consequence that supports cannot be created at this points. To check it, what I am talking about, put all sliders (variables) to 10.000 – only 4 supports are created. Or I am wrong and you have done in on purpose to limit the height of the structure?

    Could you also tell me, if we should consider for calculation the total vector of displacement (as in Karamba displacement includes “translations and rotations” )or just vertical translation?
    In the work 2007 you included just vertical displacement….

    I would be grateful for answer. I am going to refer to your work in my next publication and I would like to fairly conduct optimization tests.
    Thank you!

    • Hi Judyta, I am not sure I remember exactly all of what happens in that GH file, which was quickly prepared for teaching purposes, but I’ll try to reply anyway. I remember that projection was an issue as require the vectors to be facing always the same direction, and to be either below or about the surface. I guess there was a trick to solve that in the file, and was done by purpose.
      Displacements were directly taken from the Karamba analysis component, so that’s what I’ve used. But you are right, it was different in the original VB GA done in 2007, where only vertical displacements were considered.
      Best regards

  3. Reza

    Hi Albert,

    I am very new to this whole grasshopper and karamba so excuse me if my question is out of topic in advance. I am confused with the supports component in this definition. Are they necessarily the points that the load is going to transfer to the columns?


  4. On behalf of book editor Dr. Paul Iaizzo and book chapter author Erik Gaasedelen, I am requesting permission to republish an image from your blog in an educational book. Here are the details:

    Intended use of the material:

    1. Title of work in which material will appear: Book: Engineering in Medicine: Advances and Opportunities. Chapter 8: 3D Graphics to Virtual Reality in Medicine: Opportunities and Prospective
    2. Authors/editors of work: Erik Gaasedelen and Iaizzo, University of Minnesota
    3. Publisher of work: Elsevier
    4. Retail price of work: ~$100
    5. Number of copies of work to be produced: ~200
    6. Intended audience: Educational, professional
    7. Whether work is for nonprofit or commercial use: For profit

    Thank you in advance for your prompt attention to our request.

  5. blas churba


    incredible work you ve done!
    I am an architect student, who is just starting on his own on grasshopper, and the different grasshopper plug ins, as my school is years away from teaching this.
    My knowledges are very low, but I try anyways..

    I was wondering if you could send me the GH file used to create this shell structure, for research purposes.

    thank you for your time,

  6. Thanks. An updated version of the file is available under Resources, here:

    If you are looking for the original script (the one used in 2007), you’ll find it as an appendix to my PhD thesis, here:

Trackbacks for this post

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.