Tutorial 3: Space Frame

From TOI-Pedia

In this Tutorial we are gonna create a simple frame structure and elaborate on some extra steps that we need to take into account when having more than one structural element.

For this tutorial you can use the free version of Karamba3D.

You can get the file used for this tutorial here: Karamba3D: Tutorial 3

Note: When opening the file ignore the message of the missing installation of the "Bifocals" add-on. If however you wish to install it, you can direct here:Bifocals

Step 1: Create Rhino Geometry

Columns and beams

Base Geometry for beams

Let's create the rhino geometries that are gonna represent the structural elements:

  • Create lines for beams and columns.
  • Create points at the position of the frame structure's supports.


Base Geometry for the slab

Next, we will design a mesh that will represent the roof slab. For that we use an outline curve.

  • Create an outline polyline curve and connect it to the curve component.
  • Connect the outline curve to the Mesh Surface component Mesh » Util » Mesh Surface.

The U and V count define the number of the quad subdivisions of the mesh. It is important to remember that the smaller each mesh quad is, the more accurate the structural analysis is going to be, but also slower.

Note:If you are using the trial mode, put 5 as an input to UV count.

Step 2: Translate Rhino Geometry to Structural Elements

Line to Beam

Rhino objects to Beams
  • Connect the column lines to the Line to Beam component

Repeat the same process for the horizontal beams. In this case the beams coincide with the slab's outline curve. Therefore an easy way to retrieve the 2d beam curves is by exploding the the slab's polyline with the Explode component found at Curve » Util » Explode, as shown at the image on the right.

Mesh to Shell

Rhino object to Mesh Shell

To specify a mesh as shell:

  • Connect the slab's mesh to the Mesh to Shell component Karamba3D » 1.Model » Mesh to Shell


Specify the identifier for the columns

As we have more than one structural element, it is important to assign different identifiers to them. In this way we are gonna be be able to assign different properties to them, such as materials or cross sections, and also retrieve their results separately.

  • Create a panel using at least one letter to specify the name of the columns. In this case it is "columns".
  • Connect the panel to the Identifier input in the Line to Beam component.

Repeat the same process for the horizontal beams and the Mesh Shell

Step 3: Specify Cross Sections

Beam Cross Section

Create a Cross Section
  • Create a Cross Section

To create a rectangular section:

  • Click the white box at the bottom of the battery. This will open the cross section options.
  • Choose the Trapezoid option.
  • Specify Height, Upper and Lower width in centimetres.
  • Input the Element ID that you want to assign the cross section to, by connecting a panel with the ID name to the Element ID.

Repeat the same process for the for both beams and columns

Mesh Cross Section

Shell Cross Section

Now we need to assign a cross section to the mesh shell:

  • Create a Cross Section and this time choose the Shell Constant option.
  • Specify the thickness of the slab in centimetres, by defining the height.

Note: We can input the Element ID for the element that we want to assign the shell cross section to. If we do not input the ID then by default karamba will assign the shell cross section to all shell elements, which is desired in this case.

Step 4: Specify Materials

Create a standard concrete material

We are now going to create a default concrete material which we are going to assign to all the structural elements.

  • Create a new material with Material Selection
  • Let's choose the concrete family and concrete again from the name list.

Note: We can input the Element ID of the elements that we want to assign concrete to, as we did with the cross sections. If we do not input the ID then by default karamba will assign the concrete material to all of our elements, which is desired in this case.

Step 5: Specify Supports

Specify Supports

To create supports:

  • Connect the points, representing the supports, to the point component found at Params » Geometry » Point
  • Connect the points to the Support component found at Karamba3D » 1.Model » Support(Karamba3D)
  • Specify the support plane (by default it is the xy plane)
  • Create a fixed support by enabling all Tx, Ty, Tz, Rx, Ry, Rz

Step 6: Specify Loads


Gravity Load
  • Create a Gravity Load as in Tutorial 1: Simple Beam at Step 6
  • Specify the Load Case by connecting a panel with a unique number to the LCase, in this case is "0".

Mesh Load

Constant Mesh Load

Now let's create a live load of 1KN/m2 on our roof. For that we will use a mesh surface and we will apply a constant load to it. We first need to scale and move a bit the mesh used for the slab. The scaled mesh is going to be used for a constant mesh load.

  • Choose the mesh slab and retrieve its centroid by the area component.
  • Scale the mesh by a factor using the centroid for the centre of scaling.
  • Move a bit vertically the mesh.
  • Create a load with Loads (Karamba3D)
  • Choose Mesh Load Const from the load options for a load which is constant throughout the mesh.
  • Set the vector of the load by setting -1 value (that represents the a 1kN/m2 load) to a z vector and connect it to the vector option.
  • Specify the Load Case by inputting an integer number to the LCase, in this case it is "1".

Step 7: Assemble and Analyze the Model

Merged list of all Structural Elements
  • Gather all similar entities in merged lists using the Merge component Sets » Tree » Assemble Merge
Assemble the Model
  • Make sure you connect all the entities to the Assemble Modelcomponent.
  • Connect the Model from the Assemble Model to the Analyze(Karamba3D) component

Note: Grasshopper tends to create data trees which in most cases are unwanted in the Assemble component and will cause errors. Make sure that all the lists of your entities are flattened.

Step 9:Evaluate Results

Retrieve the Normal Forces for a Specific Structural Element

Normal Forces for the Beams

Let's check the normal forces at our columns

  • Create two Beam Resultant Forces one for each load case, as we did in Tutorial 2: Analysis of the results at Step 3
  • Connect the Analyzed Model to the Beam Resultant Forces components
  • Connect a panel with the element's identifier at the Beam Identifiers input, in this case it is columns to receive results only for the columns
  • Adding the data from Beam Forces (Karamba3D) for the LCase 0 and LCase 1 will give as the sum of the Normal Forces

Display the Mesh Shell

Shell View

Let's see how we can preview the Mesh Shell Cross Section and see the deformation results

  • Connect the analyzed model to the Shell View found at Karamba3D » 6.Results » Shell View(Karamba3D)
  • Choose in the Render Settings the property that you want to see rendered, in this case it is the Displacement.
  • Connect the Legend C (Legend Colors) and the Legend T (Legend Tags) to the Legend component found at Display » Graphs » Legend .

Note: If you have the full Karamba3D version, try to manipulate the UV subdivition of the initial surface. Notice that the results change. Increasing the subdivitions of the initial mesh, results in more accurate results.

Personal tools