Grasshopper Karamba


I am very much new in using grasshopper so the goat. I have some general questions regarding Goat solver and other optimization components:
How do we generally select Variables into the optimizer?
with the solver how can we use the algorithms form NLopt library?
is there any way to optimize shell line using this goat solver?

I need some tutorials to learn this goat solver with grasshopper. can anyone give me some tutorials/examples related to goat?


In this script goat is used to find the lowest point on a catenary curve. file: (7.1 KB)

To help you out with your “shell line idea” you need to be more specific what you want to achieve & and upload a file of your rough idea.

Hi Ehrhardt

sorry for late reply.

Basically I’m very much encouraged to optimize two important factors:

  1. optimize no. of shell line.
  2. changing the pattern of shell line (such as uniform shell line distance and symmetry)

I have uploaded the files for your concern. this example is based on the Input Surfaces as shell from karamba website.

SurfacesAsShell.3dm (18.5 KB) (37.6 KB)

@Hass could you change the Category of the discussion to “Grasshopper Karamba” ?!

please change the category to Grasshopper Karamba

yes. I have changed the category.

Regarding you optimization idea. The ShellLineResult componant is generating the Principal Stress Lines based on a source input. The Shell in your example is a simple rectangle with an even load distribution from the top. With an even source for the principal stress lines (e.g. Points of Load location) the result will be a nearly symmetrical plot. The more you disturbe the even load distribution/ or source of principal stress lines the more unsymmetric your plot will get.

Meaning: The relation between result and goal of you optimization is quiet linear and predictable. An Optimization Solver like goat is not needed in my opinion. In case you want to generate a bunch of random solutions as an design input than a solver could become a tool to build up a set of different solutions … I hope this helps a bit.

Using an optimization solver like goat for your idea would mean that you have to find a way to discribe the symmetry of the principal stress lines in a number you could either minimize or maximize.

Thank you very much for your answer. I have few more questions. These questions are very general.

  1. is the solver can be used to optimize shell thickness?
  2. is the solver have any option to input codes for optimization?

OtpiCroSec componant of Karamba does optimize the material thickness of the shell.You could use an EA-solver to optimize for min. displacement etc. There is an example file on the karamba page as far as I know.

Maybe the @karamba3d team can help you out here.
Regaring the goat solver i don’t think so. But you could check out the source code on github!?

Hi @hass @kaspar-ehrhardt,

the OptiCros Section component can be indeed now used to optimise thicknesses of shells. It follows the same principles as beams - An example can be found on

I am not sure what you mean by inputting codes for optimisation. Do you mean building codes or actual programming code?

In regards to your earlier question of the shell line patterns, @kaspar-ehrhardt is correct in saying that the line results are dependent on the source input. You will get denser pattern if you input more source pts into the Line Results component but if the actual structural model does not change, the pattern itself will not change.


Hi, Thank you for your reply. I would like to clarify few more points, if the load applied symmetrically to the structure, is the stress line pattern should be symmetric along X-axis? if yes. the example in the karamba website is showing the unsymmetrical stress line pattern along X-axis (at middle) even with a symmetric loading pattern? Sorry I’m a bit confused with that.

And if the stress line are indicating principle stress direction for both compression and tensile stress, is that the lines should be 90° to each other?

yeap, I was trying to mean programming code.

thank you