Tutorial 1: Simple Frame Structure

From TOI-Pedia

In this Tutorial we are gonna create a simple frame structure and test it out for deflection.


Karamba Workflow

Let's first summarize the workflow of the analysis process. There are some basic steps that we have to follow:

  • Create Rhino Geometry (lines or meshes)
  • Translate Rhino Geometry to Structural Elements
  • Specify Cross Sections
  • Specify Materials
  • Specify Supports
  • Specify Loads
  • Assemble the Model
  • Analyze the Model
  • Get the Results

Step 1: Create Rhino Geometry

Columns and beams

Base Geometry for beams

In Karamba3d solid elements such as beams and columns are represented by lines. Let's start by drawing in Rhino a basic frame structure.

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

Note:It is important to remember that the beams have to be single segment lines with two distinct endpoints.


Base Geometry for beams

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 Structural Elements

All structural elements in Karamba3D are 2D dimensional. To specify the lines as columns:

  • Connect the column lines to the Line to Beam component Karamba3D » 1.Model » Line to Beam

Repeat the same process for the horizontal beams. In this case the beams coincide with the slab's outline curve. Therefore we can retrieve the 2d beam curves by exploding the slab's polyline.

Mesh to 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 indentifier for the columns

Each group of structural elements has a unique Identifier. The identifying name is important as it allows modifying specific elements or assigning properties to them and also later retrieving information about their structural performance.

  • 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 Id 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

As mentioned in step 1, in Karamba3D all structural elements are 2D dimensional. The third dimension is specified as a cross section property.

  • Create a Cross Section through Karamba3D » 3.Cross Section » Cross Section(Karamba3D)

By default the cross section is "I" type. 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 centimeters.
  • 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.


Eccentricity correction
Eccentricity problem and correction

By default, the cross section property takes into account the line as the central axis of the beam. However this is not always desired.
To fix the eccentricity on the horizontal beams:

  • Create a Cross Section and specify "beams" as the Element Identifier.
  • Input the dimensions of the cross section.
  • Create a z vector with half of the height's length.
  • Invert it negatively by converting the value to negative.
  • Input the vector to the ecc-loc option.

Τhis will move the axis of the beam based on vector z and fix the eccentricity of the horizontal beams.

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 centimeters, 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 through Karamba3D » 4.Material » Material Selection
  • Karamba3D offers various ready material families, 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)

The Tx,Ty,Tz options will constrain translations in global x, y and z directions . The Rx,Ry,Rz will constrain rotations in global x, y and z axes.

  • Create a fixed support by enabling all Tx, Ty, Tz, Rx, Ry, Rz

Step 6: Specify Loads


Gravity Load
  • Create a load through Karamba3D » 2.Load » Loads (Karamba3D)
  • Specify the type of the load by clicking the white box and selecting Gravity.
  • Specify the vector of the gravity load. Gravity is negative to the global z direction therefore the vector has to be reversed.
  • Specify the Load Case by connecting a panel with a unique number to the LCase, in this case is "0".

The Load Case input is important for retrieving results for each Load Case effect in our structure separately. For example, we may need to examine the deflection due to live loads separately from the dead loads.

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 center of scaling.
  • Move a bit vertically the mesh.
  • Create a load through Karamba3D » 2.Load » 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 the Model

Merged list of all Structural Elements
Assemble the Model

The Model is an entity that contains all the information related to the structure and it is essential to retrieve the analysis results.

  • Gather all the structural elements in a merged list using the Merge component Sets » Tree » Assemble Merge
  • Use the Assemble Model component through Karamba3D » 1.Model » Assemble Model(Karamba3D)
  • Make sure you connect all the following entities to the Assembly component.
  1. Structural elements (beams, mesh shells)
  2. Supports
  3. Loads
  4. Cross Sections
  5. Materials
  6. Connect the entities to the assemble
  • Connect the entities to the assemble

The Model output of the Assemble Model component, will be used in the next step.

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.. Check the Grasshopper Data Tree Editing for more details on data trees in Grasshopper

Step 8: Analyze the Model

Analyze the Model

The Model Entity from the Assemble component does not yet contain the results from the mechanical response for each load case. That needs to be processed with the Analyze component:

  • Connect the Model from the Assemble Model to the Analyze(Karamba3D) component found at Karamba3D » 5.Algorithmns » Analyze(Karamba3D)

Step 9:View Results

Let's view the displacement results for beams and shells on rendered meshes:

  • Connect the Analyzed Model to the Model View component found at Karamba3D » 6.Results » Model View(Karamba3D)

Beam Results

Beam Displacements

For the Beam Elements:

  • For rendering the results we must set the color variations. Connect at least four color swatches on the Colors input. The first and the last one will be used as headings.
  • Connect the Model from the Model View to the Beam View found at Karamba3D » 6.Results » Beam 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 .

Mesh Shells Results

Mesh Shell Displacements

For the mesh shells repeat the same process but this time connect the Model from the Model View to the Shell View found at Karamba3D » 6.Results » Shell View(Karamba3D)

Personal tools