Tutorial 3: Space Frame
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
- 1 Step 1: Create Rhino Geometry
- 2 Step 2: Translate Rhino Geometry to Structural Elements
- 3 Step 3: Specify Cross Sections
- 4 Step 4: Specify Materials
- 5 Step 5: Specify Supports
- 6 Step 6: Specify Loads
- 7 Step 7: Assemble and Analyze the Model
- 8 Step 9:Evaluate Results
Step 1: Create Rhino Geometry
Columns and 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.
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 .
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
- 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, as shown at the image on the right.
Mesh to Shell
To specify a mesh as shell:
- Connect the slab's mesh to the Mesh to Shell component
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
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
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
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
To create supports:
- Connect the points, representing the supports, to the point component found at
- Connect the points to the Support component found at
- 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
- 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".
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
- Gather all similar entities in merged lists using the Merge component
- 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
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
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
- 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 .
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.