Thursday, 29 July 2010

Generate Finite Element model in Rhino and exporting back Stress Results

I've had a number of requests lately about analyzing Rhino/Grasshopper mesh and using the mesh results back in Rhino/Grasshopper.  Thanks to Tom of [UTO] for this particular example, which was mesh created in Grasshopper using WeaverBird.

The video above demonstrates this using GSA (which is free for Students).
The rhinocommand ssiGSAMeshtoGWA translates a Rhino mesh into GWA data which can be pasted in the gateway. The mesh remains unchanged, although the routine will triangulate quad faces that are not within GSA planar tolerance.

Node Restraints, finite element properties and loads are quickly applied in GSA, and the model analayzed for results. The results can be exported to a text file, which can then be loaded back into Rhino. The number and nature of these results can be controlled in the GSA export process, and this can be saved into the GSA model as saved output to be recalled later. ssiGSALoadResults command can be used to open this results file and false-colour the mesh. Note the model data must be active in either the Rhino (or Grasshopper) plug-in (thus I imported the model data back).

There's improvements to be implemented in the near future, including other results and importing into a Grasshopper component.

Here's the files so you can try for yourself:
Rhino Mesh Model
GSA Model

19th August 2010
Some further discussions and experiments with finding vector fields on the Grasshopper forum  for the model have prompted me to append this blog post.

I've added some additional functionality to ssiRhinoGSA (v0.8.0037 and newer) to allow using the command ssiGSALoadResults command to interpret Principal stress data results.  An export such as this results.txt
can be read, I used a scale factor of 2e-8 and unsigned magnitude to generate the lines representing the principal stress vector field.  You can then set these lines in Grasshopper and convert to vectors as shown in this Grasshopper model.


  1. Hi Jon,

    I am very close to being able to perform this method for a model...

    But for some reason when I load the results, the layers contain no objects (specifically, the Min and Max Principal Stresses). I noticed that you imported some additional information (CL elements and nodes, among other things).

    Is there a trick to having the principal stresses come in as vectors (lines) that we can then reference in gh?

    I am a little confused by your wording of "unsigned magnitude to generate the lines representing the principal stress vector feild"

    If you can elaborate on that step, I would really appreciate it.



  2. Hi Jon,

    I was wondering if there is a way that the stress values at the nodes of the false colour meshes can be accessed in Grasshopper?

    Perhaps using UTO's add attributes component or something like that?

    I want to use the stress values at the nodes to drive material distribution.

    Right now I'm using the lengths of the principal stress crvs to drive the distribution but it would be nice to be able to use the values from the analysis meshes.

    Any help or suggestions would be greatly apreciated.

    all the best,


  3. Hi Matt,

    Thanks for the suggestion. I just added a grasshopper component to StructDrawRhino to take a mesh, and a value for each vertex and it can produce a false color mesh. Does this help? I posted an example just before on the blog.

    There are better ways to do this now in Grasshopper than the method shown in this older blog post.

    Are you extracting the result from GSA analysis as I have already provided components to extract 2d element stress. If you're using a different analysis program or having difficulty, email me know and I'll assist with applying this.



  4. Hi Jon,

    Yes I'm extracting the result from GSA analysis as per your tutorial above, I'm just not sure how I would go about getting the stress values at each node into a list in grasshopper, ie the Von Mise stress at each node. Is there some way to read it directly from the coloured mesh?

    Would the component your referring to be the "SSI Query Derived Stress" component?

    Would the analysis have to be conducted within grasshopper to use that component? Or is there someway to get the derived stresses into grasshopper after importing the results from the text file as per your video above?

    Thanks so much for your help Jon, I really appreciate it.



  5. I've set up a forum discussion with example model of Grasshopper extraction here:

  6. Hi Jon,

    is there a way to do the same with 1D element model (beams and columns)?

    Thank you.