Karamba 1 1 0 Manual PDF
Karamba 1 1 0 Manual PDF
Karamba 1 1 0 Manual PDF
User Manual
March 8, 2015
Contents
1. Introduction 7
1.1. Citing Karamba . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. How to obtain a pro- or pro-student-license . . . . . . . . . . 7
3. Installation 10
4. Quick start 12
4.1. Basic Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2. Physical Units . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3. Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4. Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5. Cross Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.6. Supports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.7. Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.8. Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.9. Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.10. Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.11. Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6. Component Reference 26
6.1. Ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1.1. Activate Element . . . . . . . . . . . . . . . . . . . . 26
2
6.1.2. Assemble Model . . . . . . . . . . . . . . . . . . . . . 26
6.1.3. Connected Parts . . . . . . . . . . . . . . . . . . . . . 27
6.1.4. Disassemble Model . . . . . . . . . . . . . . . . . . . 28
6.1.5. Line to Beam . . . . . . . . . . . . . . . . . . . . . . 28
6.1.6. Index to Beam . . . . . . . . . . . . . . . . . . . . . . 30
6.1.7. Connectivity to Beam . . . . . . . . . . . . . . . . . . 30
6.1.8. Mesh to Shell . . . . . . . . . . . . . . . . . . . . . . 31
6.1.9. Modify Element . . . . . . . . . . . . . . . . . . . . . 31
6.1.10. Modify Element for Beams . . . . . . . . . . . . . . . 32
6.1.11. Modify Element for Shells . . . . . . . . . . . . . . . 35
6.1.12. Point-Mass . . . . . . . . . . . . . . . . . . . . . . . . 35
6.1.13. Disassemble Beam . . . . . . . . . . . . . . . . . . . . 36
6.1.14. Make Beam-Set . . . . . . . . . . . . . . . . . . . . . 37
6.1.15. Orientate Beam . . . . . . . . . . . . . . . . . . . . . 37
6.1.16. Select Beam . . . . . . . . . . . . . . . . . . . . . . . 38
6.1.17. Support . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.2. Cross Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.2.1. Beam Cross Section . . . . . . . . . . . . . . . . . . 43
6.2.2. Shell Cross Section . . . . . . . . . . . . . . . . . . . 44
6.2.3. Spring Cross Section . . . . . . . . . . . . . . . . . . 44
6.2.4. Beam-Joints . . . . . . . . . . . . . . . . . . . . . . . 45
6.2.5. Beam-Joint Agent . . . . . . . . . . . . . . . . . . . . 47
6.2.6. Disassemble Cross Section . . . . . . . . . . . . . . . 47
6.2.7. Eccentricity on Beam, Eccentricity on Cross Section 48
6.2.8. Cross Section Matcher . . . . . . . . . . . . . . . . . 49
6.2.9. Cross Section Range Selector . . . . . . . . . . . . . 49
6.2.10. Cross Section Selector . . . . . . . . . . . . . . . . . 50
6.2.11. Generate Cross Section Table . . . . . . . . . . . . . 51
6.2.12. Read Cross Section Table from File . . . . . . . . . . 52
6.3. Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3.1. Material Properties . . . . . . . . . . . . . . . . . . . 53
6.3.2. Material Selection . . . . . . . . . . . . . . . . . . . . 54
6.3.3. Read Material Table from File . . . . . . . . . . . . 55
6.4. Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.4.1. Gravity . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4.2. Point-Load . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4.3. Imperfection-Load . . . . . . . . . . . . . . . . . . . . 58
6.4.4. Pretension-Load . . . . . . . . . . . . . . . . . . . . . 58
3
6.4.5. Temperature-Load . . . . . . . . . . . . . . . . . . . 58
6.4.6. Line-Load on Element . . . . . . . . . . . . . . . . . 59
6.4.7. Mesh-Load . . . . . . . . . . . . . . . . . . . . . . . . 59
6.4.8. Prescribed displacements . . . . . . . . . . . . . . . . 63
6.5. Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.5.1. Analyze Th. I . . . . . . . . . . . . . . . . . . . . . . 64
6.5.2. Analyze Th. II . . . . . . . . . . . . . . . . . . . . . . 65
6.5.3. Analyze Large Deformation . . . . . . . . . . . . . . 67
6.5.4. Buckling Modes . . . . . . . . . . . . . . . . . . . . . 70
6.5.5. Eigen Modes . . . . . . . . . . . . . . . . . . . . . . . 71
6.5.6. Natural Vibrations . . . . . . . . . . . . . . . . . . . 72
6.5.7. BESO for Beams . . . . . . . . . . . . . . . . . . . . 74
6.5.8. Tension/Compression Eliminator . . . . . . . . . . . 78
6.5.9. Optimize Cross Section . . . . . . . . . . . . . . . . 78
6.6. Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.6.1. Deformation-Energy . . . . . . . . . . . . . . . . . . 84
6.6.2. ModelView . . . . . . . . . . . . . . . . . . . . . . . . 85
6.6.3. Nodal Displacements . . . . . . . . . . . . . . . . . . 89
6.6.4. Principal Strains Approximation . . . . . . . . . . . . 90
6.6.5. Reaction Forces . . . . . . . . . . . . . . . . . . . . . 91
6.6.6. Utilization of Elements . . . . . . . . . . . . . . . . . 92
6.6.7. Beam Displacements . . . . . . . . . . . . . . . . . . 93
6.6.8. BeamView . . . . . . . . . . . . . . . . . . . . . . . . 94
6.6.9. Resultant Section Forces . . . . . . . . . . . . . . . . 96
6.6.10. Beam Forces . . . . . . . . . . . . . . . . . . . . . . 98
6.6.11. Line Results on Shells . . . . . . . . . . . . . . . . . 99
6.6.12. Principal Force Directions on Shells . . . . . . . . . 103
6.6.13. Principal Stress Directions on Shells . . . . . . . . . 104
6.6.14. Shell Forces . . . . . . . . . . . . . . . . . . . . . . . 104
6.6.15. ShellView . . . . . . . . . . . . . . . . . . . . . . . . 105
6.7. Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.7.1. Export Model to DStV . . . . . . . . . . . . . . . . . 106
6.8. Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.8.1. Mesh Breps . . . . . . . . . . . . . . . . . . . . . . . . 106
6.8.2. Nearest Neighbors . . . . . . . . . . . . . . . . . . . . 108
6.8.3. Multi-dimensional Nearest Neighbors . . . . . . . . . 108
6.8.4. Remove Duplicate Lines . . . . . . . . . . . . . . . . 110
6.8.5. Remove Duplicate Points . . . . . . . . . . . . . . . . 110
4
6.8.6. Get Cells from Lines . . . . . . . . . . . . . . . . . . . 110
6.8.7. Line-Line Intersection . . . . . . . . . . . . . . . . . . 110
6.8.8. Element Felting . . . . . . . . . . . . . . . . . . . . . 110
6.8.9. Mapper . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.8.10. Interpolate Shape . . . . . . . . . . . . . . . . . . . . 113
6.8.11. Proximity Stitch . . . . . . . . . . . . . . . . . . . . . 113
6.8.12. Simple Stitch . . . . . . . . . . . . . . . . . . . . . . 114
6.8.13. Stacked Stitch . . . . . . . . . . . . . . . . . . . . . . 115
6.8.14. User Iso-Lines and Stream-Lines . . . . . . . . . . . 116
5
A.1.3. Theoretical Background of Stiness, Stress and Strain 123
A.2. Additional Information on Loads . . . . . . . . . . . . . . . . 123
A.3. Tips for Designing Statically Feasible Structures . . . . . . 123
A.4. Hints on Reducing Computation Time . . . . . . . . . . . . . 125
A.5. Natural Vibrations, Eigen Modes and Buckling . . . . . . . . 126
A.6. Approach Used for Cross Section Optimization . . . . . . . 126
6
1. Introduction
In case you use Karamba for your scientic work please cite the following
paper:
The commercial license (pro) without time limitation costs e 30 for stu-
dents and e 1250 for businesses. A pro-license with one year validity comes
at e 450. The pro-student version is for non-commercial use only. In case
you plan to use Karamba for university courses please contact us for special
conditions.
7
One single static license can be installed on two computers. A license
includes all updates of the current main version (i.e. currently 1.x.x.).
For commercial use a network license option exists. Being based on the
Zoo 5.0 license server of McNeel it comes at the same price as a static
license. Versions of one year and unlimited validity can be purchased.
In order to obtain the pro-version download Karamba from either http:
//www.karamba3d.com or http://www.food4rhino.com/project/karamba and in-
stall the trial-version. Then use the Karmba-license component (right-click
on the icon) to generate a machine.id-le on the computers where you wish
to run Karamba on. Send these les to [email protected] and buy a license
at http://www.karamba3d.com/downloads/. In return you will get a license.lic-
le which turns your Karamba trial into a Karamba pro or pro-student ver-
sion. Start Rhino as an administrator, right-click on the Karamba-license
component and select Load license le.
When purchasing a student version either attach a scan of your student ID
or send the e-mail from your university account. More information regarding
the pro-version can be obtained through the License-component (see g.
1).
Those parts of this manual that apply to the pro/trial-version only, are either
blue or have blue section headings.
8
2. What's new in version 1.1.0.
Some functions got grouped together (e.g. for the denition of cross
sections and loads) into mutable components to avoid crowding of the
icon panels.
Fold-out panels give detailed access to element and cross section prop-
erties.
Karamba now comes with second order theory analysis based on the
assumption of small displacements. Imperfections (member inclinations
and initial curvature) may be applied as loads.
In the free version the number of shell elements is not limited any more.
The examples that come with Karamba got restructured and updated.
9
On 64-bit machine all available memory can be used.
2.1. Disclaimer
3. Installation
Rhino 5.0
Grasshopper
version 1.1.0 of Karamba was tested on GH 0.9.0076.
In case you do not possess Rhino, download a fully featured, free trial
version from http://www.rhino3d.com/download.html. Grasshopper which is
free can be found at http://www.grasshopper3d.com/.
Karamba comes as 32-bit or 64-bit application. Select the version accord-
ing to the bitness of the Rhino version you want to work with. By default
'Rhinoceros 5' (this is the 32-bit version) and 'Rhinoceros 5 (64-bit)' get
installed.
The installation procedure lets you set the physical units used for calcula-
tion. By default Karamba assumes input to be in SI units (e.g. meters for
point coordinates). You can switch to Imperial units either on installation or
later on by editing the karamba.ini le. Coordinates will then be interpreted
to be in feet, force in kips, material strength in ksi and so on.
For installation invoke KarambaSetup.msi. It automatically copies karamba-
.dll and libiomp5md.dll to C:/Windows/ and all other les to the plug-ins
folder of Rhino (e.g. something like ../Rhinoceros 5.0 (64-bit)/Plug-ins in
10
case of installing the 64-bit version). This installs Karamba for all users by
default.
The path to Rhinoceros may dier slightly from the default on some sys-
tems. Sometimes it is ../Rhinoceros 5 (64-bit)/Plug-ins without .0.
Check carefully and change the installation path manually if necessary. Oth-
erwise Karamba will not be installed correctly.
Besides other things a folder named Karamba will be created in the in-
stallation directory, containing an examples folder, the license agreement, a
readme-le, pre-fabricated cross section and material tables and the cong-
uration le karamba.ini. The cong-le contains general program settings
and can be edited with any text editor. It contains key - value pairs and is
pretty self descriptive.
If all goes well you will notice upon starting Grasshopper that there is a
new category called Karamba on the component panel. It consists of ten
subsections (see gure 2). In case you do not see any icons select Draw
All Components in Grasshoppers View-menu. The installation can be
tested by placing a Karamba License-component on the canvas: it should
not issue a warning or error. If not see section 7.2 for how to solve that
issue. On Apple machines make sure to have Microsofts .NET Framework
4.0 installed.
11
Ensemble: lets you create models
4. Quick start
Creating a statical model in Karamba consists of six basic steps1 see g.
3:
12
1. Create wire-frame, point geometry or meshes for the structural model
with Rhino or GH.
On installing Karamba one can specify the family of physical units to be used
for input and results. The default option is metric (e.g. meters, centimeters,
degree Celsius, Newtons,...) but Karamba can also deal with Imperial units
(e.g. feet, inch, degree Fahrenheit, kiloponds,...).
The set of units to be used can be changed any time by editing the
karamba.ini le.
Depending on the family of units Karamba interprets geometric input either
as meters or feet. The kind of physical units that components expect to
receive shows up in the tool-tip which appears when the mouse pointer hovers
over an input-plug.
Changing the type of physical units during the creation of a GH denition
may give rise to problems: The help text of Grasshopper components does
13
not change dynamically. Switching from SI to imperial units leaves the help
text of those components already placed on the canvas unaltered. The
interpretation of the input values however changes. Opening a GH denition
with Karamba versions with dierently set physical units entails the same
problem.
4.3. Elements
4.4. Materials
Figure 5: left: definition of a custom material (1). Right: selection of a material from the
material library (2)
14
nothing is given.
Figure 6: left: definition of a beam cross section (1); Middle: definition of a shell cross
section (2); Right: selection of a cross section from the default cross section library. (3)
Arbitrary I-, hollow box, lled trapezoid and hollow circular cross sections
can be dened for beams, an element-wise variable height for shells. Cross
sections get attached to elements via element names (B and S in g.
6). Alternatively cross sections can be chosen from a library.
The Karamba cross sections are available as multi-components: they can
be accessed via the single component Cross Sections. The drop down
menu lets you select the concrete type.
4.6. Supports
15
Figure 8: definitions of gravity load (1), point load (2), uniformly distributed load on a
beam (3) and distributed load on a mesh (4)
4.7. Loads
Fig. 8 shows examples for dening loads on parts of a structural model. The
input-plug LCase can be used to set the number of the load case in which
the load acts. This enables dierent load scenarios (e.g. wind from dierent
directions) to be created. Gravity loads (1) act on the whole structure. The
location of point loads (2) can be specied by node index or position. Beam
loads (3) act on elements given by element identiers. Distributed loads
on arbitrary meshes (4) get reduced to approximately statically equivalent
node and beam loads. The direction of gravity and point-loads is given by a
vector in input-plug Vec and refers to the global coordinate system. The
direction vector of beam- and mesh-loads can be specied relative to the
global or local (relating to the element or mesh) coordinate system.
The loads can be accessed via the Loads-multi-component where the
concrete type is selected with the drop down menu.
4.8. Model
Figure 9: The model gets assembled from the generated structural information.
After dening Elements, supports, loads and optionally cross sections and
16
materials the statical model can be assembled (see g. 9). Elements get
rigidly connected in case they attach to the same node. The component
outputs the total mass of the model and its center of gravity (COG).
4.9. Algorithms
Figure 10: The model can be evaluated in several ways. Left: analysis of structural re-
sponse under loads; Right: calculation of eigen-modes.
4.10. Visualization
Figure 11: There are three components for visualizing the model: ModelView,
BeamView and ShellView
Karamba comes with three components for visualizing the structural model
(see g. 11):
17
of displacements, sizes of symbols, number of displayed load case,...
4.11. Results
Figure 12: Retrieval of numerical results: nodal displacements (1), level of material uti-
lization (2), resultant cross section forces (3) and reaction forces (4).
Structural response properties can be used to inform the model and e.g.
optimize it. Fig. 12 shows some of the available options.
5.1. License
5.2. Algorithms
18
AnalyzeThII: Calculates the deections of a given model using second
order theory.
Shell Cross Section: Lets you set the height of a shell cross
section.
19
Beam-Joint Agent: Crawls around in the model and adds joints to
beams on the basis of geometric relations.
Cross Section Matcher: Returns for a cross section the best tting
cross section contained in a given list. The matched cross section is
equal or better in all mechanical aspects at minimum weight.
Read Cross Section Table from File: Reads cross section data from
a csv-le.
5.4. Model
20
Assemble Model: Creates a nite element model by collecting given
entities (points, beams, shells, supports, loads, cross sections, mate-
rials,... ).
21
5.5. Export
5.6. Load
5.7. Material
22
Material Selection: Lets you select a material by name, regular ex-
pression or index from a list of materials.
Read Material Table from File: Reads a list of materials from a
table given in csv-format.
5.8. Results
Beam View: Lets you inspect beam properties: section forces, cross
sections, displacement, utilization and stresses. Is to be plugged into
the denition after the ModelView-component.
23
Force Flow Lines on Shells (default): Computes ow lines for
forces in given direction at user dened positions.
Shell forces: Outputs the values of rst and second principal normal
forces and moments in the center of each shell element.
Shell View: Lets you inspect shell properties: displacement, utiliza-
tion, principal stresses and Van Mises stress. Is to be plugged into the
denition after the ModelView-component.
5.9. Utilities
Get Cells from Lines: Creates closed cells from a graph and vertices
on a user supplied plane.
24
Line-Mesh Intersection: Returns the points where given lines inter-
sect given meshes.
Mesh Breps: Takes multiple breps and generates a unied mesh from
them. The algorithm takes account of common edges and predened
points. This lets one dene positions for supports or point-loads on shells.
25
User Stream-Lines: Creates stream-lines on a model based on user
supplied vectors at the nodes.
6. Component Reference
6.1. Ensemble
Figure 13: Setting the activation state of all elements of a model with a list of boolean
values.
In order to calculate the behavior of a real world structure one needs to dene
its geometry, loads and supports. The component Assemble gathers all the
necessary information and creates a statical model from it (see gure 14).
In case that some beams were dened by node indexes then these will refer
to the list of points given at the Pt input-plug.
26
Figure 14: The Assemble-component gathers data and creates a model from it.
The input-plug LDist can be used to dene the distance of points below
which they will be merged to one. This helps in dealing with inaccurate
geometry. Giving a negative value to LDist allows two separate nodes in a
model to reside on the same spot. This lets you dene zero length elements
such as springs connecting the two halves of a scissor structure.
The output-plug Mass renders the mass of the structure in kilogram,
COG the position of its center of gravity. When being plugged into a
panel the model prints basic information about itself: number of nodes,
elements, and so on. At the start of the list the characteristic length of the
model is given which is calculated as the distance between opposing corners
of its bounding box.
27
Figure 15: The Connected Parts-component groups beams into sets of elements that have
at least on node in common each.
28
distance is less than that given in LDist. The default value is 0.005[m].
The LineToBeam-component accepts only straight lines as geometric input.
Therefore poly-lines and the like need to be exploded into segments rst.
Figure 17: The LineToBeam-component that turns two lines into beams
New: If this plug has the value False only those lines will be added to
the structure that start and end at one of the points given in the input
points-list.
LDist: sets the limit distance for two points to be merged into one.
Lines of length less than that value will be discarded. The default value
29
is 5[mm].
Id: takes a list of strings as identiers for beams. The default value
is an empty string. Each beam has a name by default: its zero based
index in the model. Identiers provide a useful means to group the
beams in order to modify or display them.
Figure 18: The IndexToBeam-component lets you directly define the connectivity infor-
mation of beams
30
converted to beam-structures (see gure 19).
Figure 19: The ConToBeam-component turns connectivity diagrams into sets of beams
31
meet they are rigidly connected like they were welded together. Use the
ModifyElement-component with Element Type set to Beam to set the
beam properties according to your choice. Figure 21 shows how this can be
done. There are two variants for using the Modify Element-component:
32
corresponding beam into a truss. There exist reasons that motivate such a
step:
For slender beams i.e. beams with small diameter compared to their
length the eect of bending stiness is negligible compared to axial
stiness. Just think of a thin wire that is easy to bend but hard to tear
by pulling.
Trusses only take axial forces. Therefore they do not prevent the nodes
they are connected to from rotating. In case that only trusses attach to
a node, Karamba automatically removes its rotational degrees of freedom.
Otherwise the node could freely rotate which is a problem in static calcu-
lations. As soon as one beam connects to a node the node has rotational
degrees of freedom. Bear this in mind when the Analysis-component turns
red and reports a kinematic system. Transferring only axial forces means
that a truss reduces a nodes movability in one direction. A node that is
33
not attached to a support has three translational degrees of freedom. Thus
there must be three truss elements that do not lie in one plane for a node
to be xed in space.
Height and wall-thickness of cross-sections
Height which in case of circular tubes is equivalent to the outer diameter
D and wall-thickness of a cross-section determine a beams axial and bend-
ing stiness. Karamba expects both input values to be given in centimeter.
The cross-section area is linear in both diameter and thickness whereas the
moment of inertia grows linearly with thickness and depends on D 3 in case of
full sections and on D 2 in case of hollow sections. So in case of insucient
bending stiness it is much more eective to increase a beams height (or
diameter) than increasing its wall thickness.
Local and Global Eccentricity of the Beam axis
The input-plugs ecce-loc and ecce-glo serve to set the eccentricity of
the beam-axis with respect to the connection line between its endpoints.
Both expect a three dimensional vector. ecce-loc refers the eccentricity
to the local, ecce-glo to the global coordinate system. Eccentricities of
beams can also be dened via the Eccent-Beam-component (see sec. 6.2.7).
Orientation of the Beam
Lets you dene the orientation of a beam. Works analogously to the
orientate-beam-component (see 6.1.15).
Buckling property for cross section optimization
Buckling can be turned o for cross section optimization. This lets you
simulate pre-tensioned, slender elements without having to really pretension
them. The necessary pretension force is roughly the negative value of the
largest compressive axial normal force of all load cases.
Buckling length in local beam directions
For doing cross section optimization it is necessary to know a beams buck-
ling length. Karamba approximates it using the algorithm described in section
6.5.9. For cases of system buckling this approximation does not lie on the
safe side. The input-plugs BklLenY, BklLenZ and BklLenLT allow to
specify the buckling length of a beam for its local Y- and Z- axis respectively
as well as for lateral torsional buckling. When specied, these values override
those from the buckling length calculation of Karamba. The value lg sets
the distance of transverse loads from the center of shear of the cross sec-
tion. It defaults to zero. Positive values mean that the loads point towards
the shear center and thus act destabilizing for lateral torsional buckling. The
property lg inuences the beams utilization with respect to lateral torsional
34
buckling according to EC3.
Second order theory normal force N II
Axial normal forces inuence the stiness of a beam in second order theory
calculations. If compressive they lower, in case of tension they increase
its bending stiness. Think of a guitar string which vibrates at a higher
frequency (i.e. is stier) under increased tension. In Karamba the normal
force which impacts stiness (N II ) is independent from the normal force
which actually causes stresses in the cross section (N ). This enables one to
superimpose second order theory results on the safe side by choosing N II as
the largest compressive force N of each beam.
Height
Sets a uniform height throughout the shell.
Second order theory normal force N II
As for beams N II for shells species the in-plane normal force which impact
stiness in case of second order theory calculations. It is a force per unit of
length assumed to be of same magnitude in all directions of the plane of the
shell.
6.1.12. Point-Mass
Figure 22: Vibration mode of beam with point mass in the middle.
35
(see g. 22). Nodes where masses shall sit can be identied by supplying
node indexes or positions (just like for point-loads). Point masses get dis-
played as green spheres. Their diameters result from the volume calculated
as mass divided by density. The latter defaults to 7850[kg/m3 ] (steel) and
can be provided at the input-plug-rho.
36
6.1.14. Make Beam-Set
37
Figure 25: The orientation of the local beam coordinate system can be controlled with
the OrientateBeam-component.
The local X-axis (of red color) is the beam axis and points from starting-
node to end-node.
The local Y-axis (green) is at right angle to the local X-axis and parallel
to the global XY-plane. This species the local Y-axis uniquely unless
the local X-axis is perpendicular to the XY-plane. If this is the case,
then the local Y-axis is chosen parallel to the global Y-axis.
The local Z-axis (blue) follows from the local X- and Y-axis so that the
three of them form a right-handed coordinate system.
The local coordinate system aects the direction of locally dened loads
and the orientation of the element's cross section. Use the Orientate Beam
component to set the local coordinate system (see g. 25):
The input plug X-axis accepts a vector. The local X-axis will be
oriented in such a way that its angle with the given vector is less than
90[deg]. This allows to give a consistent orientation to a group of beams.
The local Z-axis lies in the plane which is dened by the local X-axis
and the vector plugged into the Z-axis-input.
All structural elements can be given identiers, i.e. names. These names
need not be unique: Two elements can have the same name without Karamba
complaining. By default an element identier corresponds to the elements
index. Figure 26 shows how a list of elements can be split into two data
38
Figure 26: Elements can be selected by using their identifiers.
&b.: matches any identier that starts with b followed by an arbi-
trary character.
6.1.17. Support
Without supports a structure would have the potential to freely move around
in space. This is not desirable in case of most buildings. The current version
of Karamba does statical calculations. This means that there must always
be enough supports so that the structure to be calculated can not move
without deforming. Thus rigid body modes are forbidden.
When dening the supports for a structure one has to bear in mind, that
in three dimensional space a body has six degrees of freedom (DOFs): three
translations and three rotations (see gure 27). The structure must be
39
supported in such a way that none of these is possible without invoking
a reaction force at one of the supports. Otherwise Karamba will refuse
to calculate the deected state. Sometimes you get results from moveable
structures although you should not: The reason for this lies in the limited ac-
curacy of computer-calculations which leads to round-o errors. Sometimes
one is tempted to think that if there act no forces in one direction consider
e.g. a plane truss then there is no need for corresponding supports. That
is wrong: What counts is the possibility of a displacement.
Figure 27: Metaphor for the six degrees of freedom of a body in three-dimensional space.
40
Support-component takes as input either the index3 or the coordinates of
the point (or a list with indexes or positions of points) to which it applies.
By default the coordinate system for dening support conditions is the
global one. This can be changed by dening a plane and feeding it into the
Plane-input plug of the Support component.
Six small circles on the component indicate the type of xation: The
rst three correspond to translations in global x, y and z-direction, the last
stand for rotations about the global x,y and z-axis. Filled circles indicate
xation which means that the corresponding degree of freedom is zero. The
state of each circle can be changed by clicking on it. The string output of
the component lists node-index or nodal coordinate, an array of six binaries
corresponding to its six degrees of freedom and the number of load-case to
which it applies. Supports apply to all load cases by default.
Supports cause reaction forces. These can be visualized by activating
Reactions in the Display Scales section of the ModelView (see section
6.6.2). They show as arrows with numbers in colors green representing
forces and purple representing moments. The numbers either mean [kN ]
in case of forces or [kN m] when depicting moments. The orientation of the
moment arrows corresponds to the screw-driver convention: They rotate
about the axis of the arrow anti-clockwise when looked at in such a way that
the arrow head points towards the observer.
(a) (b)
Figure 29: Influence of support conditions undeflected and deflected geometry. Left:All
translations fixed at supports. Right: One support moveable in horizontal direction.
From the support-conditions in gure 28 one can see that the structure is
a simply supported beam: green arrows symbolize locked displacements in
3 In order to nd out the index of a specic node enable the node-tag checkbox in the
ModelView-component. See section 6.1.5 on how to predene the index of specic
nodes
41
the corresponding direction. The translational movements of the left node
are completely xed. At the right side two supports in y- and z-direction
suce to block translational movements of the beam as well as rotations
about the global y- and z-axis. The only degree of freedom left is rotation of
the beam about its longitudinal axis. Therefore it has to be blocked at one
of the nodes. In this case it is the left node where a purple circle indicates
the rotational support.
The displacement boundary conditions may inuence the structural re-
sponse signicantly. Figure 29 shows an example for this: when calculating
e.g. the deection of a chair, support its legs in such a way that no exces-
sive constraints exist in horizontal direction otherwise you underestimate
its deformation. The more supports you apply the stier the structure and
the smaller the deection under given loads. In order to arrive at realistic
results introduce supports only when they reliably exist.
By default the size of the support symbols is set to approximately 1.5[m].
The slider with the heading Support on the ModelView-component lets
you scale the size of the support symbols. Double click on the knob of the
slider in order to set the range of values.
Karamba oers cross section denitions for beams, shells and springs. They
can be generated with the Cross Sections multi-component. Use the drop-
down list on the bottom to chose the cross section type.
The dimensions of each cross section may be dened manually or by ref-
erence to a list of cross sections (see section 6.2.10).
42
Cross sections are autonomous objects which can be plugged into the
Assemble-component (see g. 30). They know about the elements (or
element sets) they belong to by their ElemIds property: This is a list
of strings containing element identiers (see 6.1.5) or regular expressions
that match a group of element identiers (elem-ids). Upon assembly all
elem-ids are compared to all ElemIds entries of a cross section. In case
of correspondence the cross section is attached to the element. An empty
string which is the default value signies that the cross section shall be
applied to all elements. If two cross sections refer to the same element then
that which gets processed later by the assemble-component wins. It makes
no sense to attribute beam cross sections to shells and vice versa Karamba
ignores any such attempts.
I-prole
43
Name: the identier of a cross section need not be unique. Enable
CroSec names in ModelViews RenderSettings-submenu in order to
view them.
When rendering the shell cross sections (see g. 31) thicknesses get linearly
interpolated between the nodes. The cross section height at each node
results from the mean thickness of shell elements attached to it.
The input-plugs Family and Name have the same meaning as described
in section 6.2.1.
Springs allow you to directly dene the stiness relation between two nodes
via spring constants. Each node has six degrees of freedom (DOFs): three
translations and three rotations. Using the Cross Sections multi-component
with Cross Section set to Spring lets one couple these DOFs by means of
six spring-constants. A relative movement ui,rel between two nodes thus leads
to a spring force Fi = ci ui,rel . In this equation ui,rel stands for a relative trans-
lation or rotation in any of the three possible directions x, y, z, ci is the spring
44
Figure 32: Spring fixed at one end and loaded by a point load on the other.
stiness. In Karamba the latter has the meaning of kilo Newton per meter
[kN/m] in case of translations and kilo Newton meter per radiant [kN m/rad]
in case of rotations. The input-plugs Ct and Cr expect to receive vec-
tors with translational and rotational stiness constants respectively. Their
orientation corresponds to the local beam coordinate system to which they
apply. In case of zero-length springs this defaults to the global coordinate
system but can be changed with the OrientateBeam-component.
In case one wants to realize a rigid connection between two nodes the
question arises as to which spring stiness should be selected. A value too
high makes the global stiness matrix badly conditioned an can lead to a
numerically singular stiness matrix. A value too low results in unwanted
relative displacements. So you have to nd out by trial and error which value
gives acceptable results.
Figure 32 shows a peculiarity one has to take into account when using
springs: They are unaware of the relative position of their endpoints. This
is why the load on the right end of the spring does not evoke a moment at
the left, xed end of the spring.
6.2.4. Beam-Joints
45
Figure 33: Beam under dead weight, fixed at both supports with a fully disconnected
joint at one end resulting in a cantilever.
ditions at both end-points. At the right end the joint (which is in fact no
joint any more) completely dissociates the beam from the support there.
The result is a cantilever.
The symbols for joints resemble that for supports: pink arrows represent
translational joints, white circles symbolize moment hinges. In Karamba
joints are realized by inserting a spring between the endpoint of a beam
and the node to which it connects. This necessitates sucient support
conditions at the actual nodes to prevent them from freely moving around.
See for example the right node in g. 33 which has to be fully xed
otherwise the system would be kinematic.
The Crosec-Joint-component allows to dene hinges at a beams starting-
and end-node. A list of beam-identiers lets you select the beams where the
joint denition shall apply. Filled circles mean that the corresponding degrees
of freedom represent joints. T stands for translation, R for rotation.
Feed the resulting cross-section into the Joint-plug of the Assemble-
component. The orientation of the axes of the joints corresponds to the
local coordinate system of the beam they apply to.
Sometimes the stiness of connections lies between fully xed and zero.
With the input-plugs Ct-start and Cr-start it is possible to set the stiness
of the hinge in translation (kN/m) and rotation (kN m/rad) respectively at the
start of the element. Ct-end and Cr-end provide the same functionality
for the end-point.
In order to make the denition of hinges accessible to optimization the
input-plugs Dofs-start and Dofs-end can be used to set hinges at the
beams endpoints with a list of numbers. Integers in the range from '0' to
'5' signify degrees of freedom to be released in addition to those specied
46
manually with the radio-buttons.
Figure 34: Three different but equivalent possibilities for defining a hinge based on geo-
metric relations using a Beam-Joint Agent.
The node on the at-element lies on one of the geometric items supplied
in ToGeom. This can be points, curves, planes, breps or meshes.
The tolerance for two geometric items touching in space is LDist as
dened on model assembly (see 6.1.2).
The meaning of Ct, Cr and Dofs is analogous to that of the Beam-
Joints-component.
47
Figure 35: Properties of a given cross section can be retrieved via the Disassemble Cross
Section-component.
Figure 36: Beam positioned eccentrically with respect to the connection line of its two
end-nodes.
Cross section forces of beam and truss elements relate to the line that con-
nects the cross section centroids. When a cross section changes, chances are
high that also the position of its centroid shifts. In case of elements predom-
inantly loaded by bending moments, such a shift can normally be neglected.
In the presence of normal forces however e.g. when considering columns
changes in the centroids position lead to additional bending moments that
may be decisive for a members cross section design.
In Karamba there exist two components that can be used to take care
of eccentricities (see g. 36): One works on beams, the other on cross
sections. When both variants of denition coincide for an element then they
48
get additively combined. This enables one to dene families of cross sections
of dierent size with e.g. the position of their upper sides at one level.
The denition of a local eccentricity for cross sections with a Eccent-
CroSec-component is straight forward: The ecce-loc-input plug expects a
vector that denes the oset with respect to the local beam axes. Values
are expected in centimeters. x represents the longitudinal beam axis, y is
horizontal, z vertically upwards. Cross sections with eccentricities can be
stored in cross section tables using the GenCSTable-component and thus
be made reusable in other projects.
The Eccent-Beam-component has one additional input-plug as compared
to the cross section variant: ecce-glo lets one dene beam eccentricities
([cm]) with respect to the global coordinate system.
Figure 37: The Cross Section Matcher-component returns a standard profile for a
custom profile.
Use the Cross Section Matcher-component in case you want to nd the
rst prole from a given list that provides equal or higher resistance compared
to a given custom prole (see g. 37). The CSMatch-component takes a
cross section and a list of cross sections as input. Traversing the list starting
from the rst element it proceeds until an appropriate prole is found which
is returned as the result.
The cross section library that comes with Karamba contains roughly 6000
proles. In order to reduce the amount of information the list can be short-
49
ened by applying selection criteria on it using the Cross Section Range
Select component (see g. 38). The input-plugs maxH and maxW let
you limit the list according to maximum cross section height and width. The
submenu which unfolds when clicking on the black select-bar oers further
options for narrowing the search: country of origin, general shape and family
name.
In case one does not supply a list of cross sections at the CroSec input-
plug, the cross section table that comes with Karamba is used by default.
Figure 38: Selection of a range of cross sections from among a given list.
Figure 39: Cantilever with four different kinds of cross section taken from the standard
cross section table.
50
CroSecSelect lets you specify beams via the Elems|Ids-plug which shall
be assigned a specic cross section. The Assemble-component sets the
cross-sections of elements accordingly.
In case one does not supply a list of cross sections at the CroSec input-
plug, the cross section table that comes with Karamba is used by default.
family: name of the group to which the cross section belongs (see
sec. 6.2.1)
S: spring
Sh: shell
geometric properties which are used for drawing the cross section
area, moments of inertia, etc. that dene the cross sections mechanical
behavior.
51
Figure 40: Transformation of a list of cross sections to a cross section table.
Figure 41: List of cross sections generated from the standard cross section table.
52
6.3. Material
There are two ways for dening materials in Karamba: Either select a ma-
terial by name from a list of materials (see section 6.3.2) or set mechanical
material properties manually (see below).
The Appendix (see section A.1) contains additional information on me-
chanical properties of materials.
Materials (like cross sections) are autonomous entities which may be plugged
into the Assemble component. They know about the elements (or element
sets) they apply to by their Elems|Ids property: This is a list of strings con-
taining element identiers (see 6.1.5) or regular expressions that match a
group of element identiers (element-ids). Upon assembly each element-id
is compared to all Elems|Ids entries of a material. In case they match the
material is attached to the element. An empty string which is the default
value signies that the material shall be applied to all elements.
Figure 42: The definition of the properties of two materials via the MatProps compo-
nent, selection of the second Material from the resulting list (mid, bottom) or selection
from the default material table (mid, top).
53
coecient of thermal expansion alphaT [1/ C]
54
Figure 43: Partial view of the default data base of materials. SI units are used irrespec-
tive of user settings. Automatic conversion ensures compatibility with Imperial units.
55
Figure 44: List of materials resulting from the ReadMatTable-component reading the
default data base of materials. Selection of the default Steel via MatSelect.
6.4. Load
Figure 45: Simply supported beam with three loads and three load-cases.
56
6.4.1. Gravity
6.4.2. Point-Load
The component Point-Load lets you dene loads on points. These get
attached to their points either by node-index6 or coordinate. Feed a cor-
responding list of items into the Pos|Ind-plug (quite analogous to the
Support-component). A point-loads can be either a forces (kN ) or mo-
ments (kN m). Feed a force- or moment-vector into the Force or Moment
input-plug. Its components dene the force or moment in global x-, y- and
z-direction.
When set to true the boolean input Local? makes loads and moments
follow the nodal rotations in large displacement calculations (see section
6.5.3).
Plugging a point-load into a panel component gives the following informa-
tion: Node-index where the load gets applied, force-vector, moment vector,
the number of the load case to which it belongs and whether the load is tied
to the nodal coordinate system.
By default point loads will be put into load case zero. Any positive number
fed into the LCase-plug denes the load case to which the corresponding
load will be attributed. A value of 1 signals that the load acts in all existing
load cases.
For more information on loads and some typical values see section A.2.
6 In order to nd out the index of a specic node enable the node tag-checkbox in the
ModelView-component. See section 6.1.5 on how to predene the index of specic nodes
or node-position
57
6.4.3. Imperfection-Load
6.4.4. Pretension-Load
Karamba lets you dene axial pretension. Pre-tensioning means that the
element gets rst axially loaded in such a way that it reaches the target
strain. Then it gets built into the structure. Fig. 46 shows a beam with
both ends xed, subject to a compressive pretension load. The unit of
dimension of the pretension which gets fed into the eps0 plug is [mm/m].
Pre-tensioning an element is not the same as applying a pair of opposite
forces at its endpoints: In case of pretension the axial force in the element
depends on its boundary conditions: If the structure to which it connects
is very sti then the resulting axial force will be N = 0 A E . In gure
46 the supports are rigid, the elements cross section A = 25[cm2 ], Young's
Modulus E = 21000[kN/cm2 ] and 0 = 0.00015. This results in an axial force
of N = 78.75[kN ] and shows up as horizontal support reactions. When the
rest of the structure does not resist, then a pretension-load merely results in
lengthening or shortening the corresponding element.
The input plug ElemIds denes the elements where the load acts and
LCase the load-case.
6.4.5. Temperature-Load
58
Figure 46: Pre-tensioned member fixed at both ends and resulting support reactions.
structure rst, then they are subjected to a temperature change. The co-
ecient of thermal expansion (see section 6.3.1) characterizes the response
of a material to temperature changes.
Figure 48 shows a tilted structure consisting of three beams under the action
of a uniformly distributed load at elements 0 and 2. The load acts parallel
to the beams local z-axis. The components of the load vector are assumed
to be given in kilo Newton per meter [kN/m]. The input-plug BeamIds
receives a list of the identier of the beams on which the load shall act. See
section 6.1.5 for how to attach identiers to beams. By default beams are
named after their index in the FE-model. There are three options for the
orientation of the load: local to element, global and global proj.. Their
meaning corresponds to the options available for mesh-loads (see g. 51).
The input-plug LCase which designates the load case defaults to 0.
6.4.7. Mesh-Load
59
Figure 48: Line loads on a structure consisting of three beam elements defined in local
beam coordinate systems.
Figure 49: Simply supported beam loaded with line loads that approximate a given,
evenly distributed surface load on a mesh.
60
all points of the structure are included. Uncheck Point loads to avoid
point-loads.
The procedure for calculating nodal loads and uniformly distributed beam
loads from surface loads consists of the following steps: First Karamba
calculates the resultant load on each face of the given mesh. Then the
resultant load of each face gets evenly distributed among its three or four
vertices.
The second step consists of distributing the vertex-loads among the nodes
of the structure. In order to arrive at beam loads additional helper-nodes
along their axes get generated. The mutual distance of those is chosen equal
to a third of the mean edge length of the given mesh.
Each mesh vertex transfers its load to the nearest node. In case that there
are several nodes within a radius of less than LDist as set at the Assemble-
component (see section 6.1.2) the vertex load gets evenly distributed among
them. The loads received by the helper-nodes along beam axes get summed
up and divided by the element length. This results in the approximately
equivalent uniformly distributed load which is placed on the element. From
the procedure described, one can see that a crude mesh may lead to a locally
incorrect distribution of loads. In the system shown in g. 49 the points
closest to the vertices are the element's end-points. Therefore the helper
nodes along the beam-axis do not receive a share in the mesh-load and thus
no line-load results.
Fig. 50 shows a similar setting as in g. 49. The dierence lies in the
rened mesh with more vertices along the beam axis. Now loads from the
mesh vertices get distributed also to the helper nodes along the element axis.
This leads to to the generation of a uniform line-load.
The right side of gure 50 shows what data the Mesh-load-component
collects: The input-plug Vec expects a vector or list of vectors that dene
the surface load. Its physical units are kilo Newton per square meter (kN/m2 ).
The orientation of the load-vector depends on the checkbox selected under
Orientation (see also gure 51):
61
Figure 50: Simply supported beam loaded with point loads (dark orange) that approxi-
mate a given, evenly distributed surface load on a mesh.
system. This makes the surface load behave like additional weight on
the mesh plane.
Figure 51: Orientation of loads on mesh: (a) local; (b) global; (c) global projected to
global plane.
The input-plug Mesh accepts the mesh where the surface load shall be
applied. Its vertices need not correspond to structure nodes. The mesh may
have any shape.
Set the LCase-input to the index of the load case in which the surface
load shall act. Indexing of load-cases starts with zero, -1 is short for all
load cases.
62
6.4.8. Prescribed displacements
Figure 52: Left: Deflection of a beam under predefined displacements at its end-supports;
Right: PreDisp-component for setting displacement condition at left support.
4 The term displacement as used throughout this manual includes translations and rota-
tions.
5 In order to nd out the index of a specic node enable the node tag-checkbox in the
ModelView-component. See section 6.1.5 on how to predene the index of specic nodes
63
A positive value means that the node rotates counter-clockwise if the X-
axis points towards you. Analog denitions apply to rotations about the
Y- and Z-axis. Karamba is based on the assumption of small deections.
Thus be aware that large prescribed displacements and rotations give rise
to incorrect results (which can nevertheless be used for shape-nding). For
approximating eects due to large displacements see section 6.5.3.
Displacements can only be prescribed if the corresponding displacement
degree of freedom is removed from the statical system. This means you
have to activate the corresponding button in the Conditions-section of the
PreDisp-component. The rst three buttons stand for translations the last
three for rotations. Only those components of the Trans- and Rot-vectors
take eect which correspond to activated supports.
6.5. Algorithms
With geometry, supports and loads dened the statical model is ready for
processing. The AnalyzeThI-component computes the deection for each
load case and adds this information to the model. It assumes that the
inuence of axial forces is negligible thus ThI which stands for rst order
theory. Whenever the AnalyzeThI-component reports an error (turns red)
despite the fact that the Assemble component works, it is probably a good
idea to check the support conditions.
Figure 53: Deflection of simply supported beam under single load in mid-span and axial,
compressive load.
Figure 53 shows a deected beam with two load-cases. An axial load acts
in load-case zero, a transverse load in mid-span in load-case one.
The analysis component not only computes the model deections but also
outputs the maximum nodal displacement (in meter), the maximum total
64
force of gravity (in kilo Newton, if gravity is set) and the structures internal
deformation energy of each load case - see section 6.6.1 for details on work
and energy.
These values can be used to rank structures in the course of a structural
optimization procedure: the more ecient a structure the smaller the max-
imum deection, the amount of material used and the value of the internal
elastic energy. Real structures are designed in such a way that their de-
ection does not impair their usability. See section A.3 for further details.
Maximum deection and elastic energy both provide a benchmark for struc-
tural stiness yet from dierent points of view: the value of elastic energy
allows to judge a structure as a whole; The maximum displacement returns
a local peak value.
In order to view the deected model use the ModelView-component (see
section 6.6.2) and select the desired load case in the menu Load case
Selection. There exist two options for scaling the deection output. First
there is a slider entitled Deformation in the menu Display Scales that lets
you do quick ne-tuning on the visual output. Second option: the input-
plug LC-Factor which accepts a list of numbers that ModelView uses to
scale the loads. Its default value is 1.0. Each item in the list applies to
a load case. If the number of items in this list and the number of load
cases do not match then the last number item is copied until there is a one
to one correspondence. The second option for scaling displacements can
be used in the course of form-nding operations: The model-plug at the
right side of the ModelView outputs the displaced geometry which can be
used for further processing. Selecting item all on the drop-down-list for
the selected load case results in a superposition of all load cases with their
corresponding scaling factor.
Looking at gure 53 one immediately notices that only beam center axes
are shown. In order to see beams or shells in a rendered view add a
BeamView- or ShellView-component after the ModelView. See sections
6.6.8 and 6.6.15 for details.
Axial forces in beams and in-plane forces in shells inuence the structures
stiness. Compressive forces decrease a structure's stiness, tensile forces
increase it. The inuence of compressive forces on displacements and cross
section forces may be neglected as long as their absolute value is less than
65
10% of the buckling load.
Karamba lets you consider second order theory (Th.II) via the AnalyzeThII-
component. It is based on small displacements and takes account of axial
forces via the element's geometric stiness matrix. For beams the procedure
outlined in [3] gets used for calculating cross section forces.
In Karamba distinction is made between normal forces Nx which cause
stresses in the members and normal forces N II which result in second order
eects (see also [3]). At rst sight this concept seems weird. How can there
be two kinds of normal forces in the same beam? Well, in reality there can't.
In a computer program it is no problem: stresses get calculated as = Nx /A
and N II is used for determining second order eects. The advantage is, that
in the presence of several load-cases one can chose for each element the
largest compressive force as N II . This gives a lower limit for the structures
stiness. A reevaluation of the load-cases using these N II values leads to a
structural response which is too soft. However the dierent load-cases may
then be safely superimposed.
In a model N II can be set using the ModifyBeam-component (see 6.1.9).
In such a case 0 has to be supplied at the MaxIter-input plug of the
AnalyzeThII-component. Otherwise N II will be determined in the course
of the iterative procedure. The value of N II can be displayed via the
ModelView-component (see 6.6.2).
Fig. 54 shows the same system as in g. 53. This time with results
according to rst and second order theory. When comparing the transverse
deections in load-case two one can see that the maximum deection in-
creased from 0.24[m] to 0.28[m] due to the eect of the axial compressive
load.
Figure 54: Deflection of simply supported beam under single load in mid-span and axial
compressive load. Comparison of first and second order theory results.
66
Model Model to be considered.
LC Number of load-case from which to take the normal force N II in the
members which cause second order theory eects. If set to -1 the
minimum normal force of all load-cases is considered.
The normal forces N II get attached to the model and will be considered
in all further analysis steps.
In case that N II lies beyond the buckling load an error will result. If
that happens reduce the normal forces in your structure and determine the
buckling load factor using the Buckling Modes-component.
Before the advent of digital modeling people like Heinz Isler or Antoni Gaudi
helped themselves with physical models for generating curved geometries.
A popular method was to use the shape of meshes or elastic membranes
hanging from supports (see g. 55).
In Karamba the behavior of hanging models can be simulated with the
help of the Analyze Large Deformation-component. Figure 56 shows a
geometry derived from an initially at mesh under evenly distributed point-
loads. Karamba handles geometric non-linearity by an incremental approach:
All external loads get applied in steps. After each step the model geometry
updates to the deected state. The more and the smaller the steps the
67
(a) (b)
Figure 55: Hanging models. Left: Model of Antoni Gaudi for the Temple Expiatori de la
Sagrada Famlia (from the internet). Right: Some of Heinz Islers hanging models (from the
internet).
Figure 56: Structure resulting from large deflection analysis with the LaDeform-
component.
68
Figure 57: Catenary resulting from point loads that do not change their direction when
displaced.
In g. 57 the point loads are dened with respect to the global coordinate
system: The input-plug Local? at the point-load component is set to
false. Fig. 58 shows what happens if one changes that property to true:
The point-loads co-rotate with the points they apply to. This leads to a
pneumatic shape. The same happens for locally dened line-loads.
Figure 58: Pneumatic form resulting from point loads that rotate along with the points
they apply to.
69
X-Y-plane. If an element reaches a vertical position however, its default
coordinate system ips the Y-axis is then taken parallel to the global
Y-axis. This may lead to unwanted results when using line-loads which ip
along with the local coordinate system. It is possible to avoid this by dening
local axes via the OrientateBeam-component.
In each incremental step the internal forces of the previous step get cleared.
This is the reason why the resulting, deected model contains no information
regarding internal forces.
Figure 59: Shape and load-factors of the first buckling mode of a cantilever analyzed as a
beam and shell.
Axial forces in beams and trusses as well as in-plane forces in shells change
the elements response under transverse load. Tension makes them stier,
compression has a softening eect.
Slender columns or thin shells may fail due to buckling before the stresses
in the cross section reach the material strength. Stability analysis therefore
plays an important role in structural design.
When doing cross section optimization with the Optimize Cross Section-
component the design formulas applied take account of buckling, based on
the buckling length of the members. By default local buckling of individual
elements is assumed. So called global buckling occurs if a structural sub-
system consisting of several elements (like e.g. a truss) loses stability. Global
buckling can be checked with the Buckling Modes-component (see g. 59).
The Buckling Modes-component expects these input parameters:
70
FromInd : Index of the rst buckling mode to be determined. The default
is 1. This is also normally the only buckling shape of interest since it
corresponds to the mode of failure.
71
Figure 60: Left: 14th eigen-mode with strain display enabled. Right: EigenMode-
component in action.
In case you want to know how and at which frequency a structure vibrates
use the NaturalVibrations-component (see g. 62).
The mass of beams and trusses enters the calculation of natural vibrations
with the values derived from their material weight. Karamba uses consistent
72
Figure 61: Undeflected geometry (upper left corner) and the first nine eigen-modes of the
structure.
mass matrixes for beam elements. For truss and shell elements a lumped
approach is applied.
At nodes additional masses (see sec. 22) can be dened to simulate the
eect of e.g. concrete slabs (these normally make up the majority of mass
in high-rises) in an approximate manner. These masses are assumed to have
translational inertia only.
Karamba scales the resulting vibration modes v
~i in such a way that their
largest component is one. They get attached to a model as load-cases which
can be viewed via a ModelView-component. The calculation of modal mass
and participation factors are based on the modal displacements as scaled in
the above described manner.
Figure 62: Simply supported steel beam IPE100 of length 10[m] in its 14th natural vi-
bration mode.
73
6.5.7. BESO for Beams
Figure 63: Cantilever with initially regular mesh after application of the BESO for
Beams-component.
74
a surface. There exist two load cases with loads acting in the plane of
the structure in horizontal and vertical direction respectively. Three corner
nodes of the structure are held xed. The right picture shows the opti-
mized structure reduced to 45% of its initial mass in the course of 20 design
iterations.
Here the description of the input parameters:
GroupIds : Expects list of strings. Elements that match a given list entry
take part in the optimization and belong to one group. They get col-
lectively activated or deactivated during force path nding. A structure
may consist of active and non-active elements. The initial state of a
group is determined by the state of the majority of its elements. Groups
need not be disjoint.
LCase : List of load cases to be considered. Zero is the index of the rst
load case. Considering the total eect of several load cases amounts
to adding up their individual inuences on an element.
Target : ratio of the target mass to the initial mass of a structure. When
determining the initial mass all elements of the structure irrespective of
state of activation count. In the target structure only active elements
contribute to its mass. This enables one to apply BESO-components
in series. Depending on the activation status of the model elements
applying BESO for Beams will lead to an increase or decrease in the
number of active elements. The activation status of individual ele-
ments can be set by means of the ModifyBeam- and ActivateModel
components.
75
that Karamba applies a so called soft-kill approach for thinning out the
structure: elements are not removed but simply given small stiness
values. This ensures that structural response can be calculated under
all circumstances.
By clicking on the Settings bar you can unfold the following input-plugs:
MinDist : In some cases one wishes to limit the number of elements that
get added or removed in a certain area. MinDist lets you select the
minimum distance in meter [m] between the endpoints of elements that
may be changed in one iteration.
76
lets you remove those elements whose weight is below WLimit times
the average weight of elements.
Figure 64: Triangular mesh of beams before (a) and after (b) applying the BESO for
Beams-component.
Hist : a data tree which contains for each iteration step a list of boolean
values that signify whether an element in active (true) or inactive (false).
The boolean values map directly on the model elements. Using a Tree
Branch component with a slider connected to a Activate Model-
component (see section 6.1.1) lets you inspect the history of the BESO-
process (see g. 64).
Is active : renders a list of true/false values one for each element. True
signals that the corresponding element is part of the nal structure (i.e.
active). Otherwise it contains a false entry.
77
6.5.8. Tension/Compression Eliminator
LC You can specify a special load case to consider. The default is 0.
Compr If true, then only members under compression will be kept. Oth-
erwise only members under tension will survive. This value is false by
default.
78
into account the cross sections load bearing capacity and optionally limits
the maximum deection of the structure.
Figure 66 shows a typical set-up. The initial structure consisted of I-
sections of type HEA100 which have a height and width of 100[mm]. They
could not sustain the given load: The resulting bending stresses would lie
way beyond the yield stress of the assumed material which is steel S235 with
fy = 23.5[kN/cm2 ].
Figure 66: Cross section optimization with the OptiCroSec-component on a simply sup-
ported beam.
2. For each element or given set of elements: selection of the rst sucient
entry from the family to which each cross section belongs
79
Figure 67: Cross section optimization with the OptiCroSec-component on a cantilever
discretized with shell elements.
80
determinate.
The prole selection procedure assumes that the cross sections of a family
are ordered: starting with your most favorite and descending to the least de-
sired cross section. In the cross section table CrossSectionValues.csv that
comes with Karamba all families are ranked according to their height. The
cross section with the smallest height comes rst, the one with the largest
height last. When using cross section area as sorting criteria, structures of
minimum weight (and thus approximately cost) result. See 6.2.12 for how
to switch between minimum height and minimum weight design. Ordering
the proles by area may lead to structures where the cross section heights
vary signicantly from one beam to the next.
In order to check whether a given beam cross section is sucient Karamba
applies a procedure for steel beams according to Eurocode 1993-1-1. The
interaction values for the cross section forces kyy , kyz and so on get calculated
according to EN 1993-1-1 appendix B. The values Cmy and Cmz are limited
to a minimum of 0.9. The design procedure takes account of normal force,
biaxial bending, torsion and shear force. For more details see section A.6. It
is possible to switch o the inuence of buckling for single members or set
user dened values for the buckling length (see section 6.1.10).
The adverse eect of compressive normal forces in a beam can be taken
into account globally (see section 6.5.4) or locally on the level of individual
members. The procedure applied in Karamba for cross section optimization
works on member level. A crucial precondition for this method to deliver
useful results is the determination of a realistic buckling length lb of an
element. For this the following simplication which is not always on the
safe side is applied: Starting from the endpoints of an element, proceeding
to its neighbors, the rst nodes are tracked that connect to more than two
elements. The buckling length is determined as the distance between these
two nodes. It lies on the safe side in case of endpoints held by the rest of the
structure against translation. When beams are elements of a larger part of a
system that buckles (e.g. a girder of a truss) then the applied determination
of buckling length produces unsafe results! One should always check this
by calculating the global buckling modes (see section 6.5.4). In case of
a free end the buckling length is doubled. Compressive normal force in
slender beams reduces their allowable maximum stress below the yield limit.
Visualizing the level of utilization with the ModelView-component will then
show values below 100% in the compressive range.
The design procedure applied in Karamba takes lateral torsional buckling
81
into account. An elements lateral torsional buckling length is calculated in
the same way as for conventional buckling. The buckling length for lat-
eral torsional buckling can be set manually via the property BklLenLT of
the Modify Beam-component. In the course of cross section optimization
Karamba checks the cross sections for local buckling and issues a warning
if necessary. The check for local buckling uses the classication of cross
sections into classes 1 to 4 according to EN 1993-1-1. Class 4 cross sections
are susceptible to local buckling.
During the optimization of cross sections normal forces N II are not up-
dated. In order to include second order theory eects either set N II manually
or use AnalysisThII (see section 6.5.2) to determine N II iteratively.
The OptiCroSec-component provides the following set of input-plugs:
MaxUtil Target value of the element utilization where 1.0 means full
utilization - the default. In some situations (e.g. early stage design)
loads or geometry can not be fully specied. Then it makes sense to
keep some structural reserves for later phases by setting this value to
less than 1.0.
82
ULSIter Maximum number of design iterations for sucient load bearing
capacity in the ultimate limit state (ULS). The default value is ve.
Elast If set to true (the default) cross section design is done within
the elastic range. This means that under given loads the maximum
resulting stress in a cross section has to lie below the yield stress fy
of the material. In case of materials with high ductility (like steel)
the plastic capacity of cross sections can be exploited. Depending on
the cross section shape the plastic capacity is 10% to 20% higher than
the elastic capacity. Set Elast to false in order to activate plastic
cross section design. When enabling plastic cross section design do not
be surprised that the ModelView reports utilization-levels beyond 100%.
The reason is that Karamba assumes linear elastic material behavior.
On the output side the Model-plug renders the structure with optimized
cross sections. Check the Info-plug in order to see whether any problems
occurred during optimization. The Mass-plug informs you about the overall
mass of the optimized structure. Disp- and Energy-plugs return the
maximum displacement and internal energy of the structure after the last
cross section design iteration.
The aim of the design procedure applied in Karamba is to render plausible
cross section choices. Be aware that it builds upon assumptions like the
correct determination of buckling lengths.
83
6.6. Results
The results category consists of three sections. The rst contains compo-
nents that apply to a structure in general. Components of the second and
third category apply to beams and shells respectively.
6.6.1. Deformation-Energy
Figure 68: Simply supported beam under axial and transversal point-load: List of axial
deformation energy and bending energy for each element and load case.
84
6.6.2. ModelView
LC-Index lets one select the visible load-case. The value in LC-
Index will be added to the load-case selected in the drop-down-list of
ModelView (all counts as -1). If the resulting number is larger
than the number of available load-cases the ModelView turns red. If
the resulting value is smaller than 0 all load-cases are superimposed.
The possibility of using a number-slider for selecting load-cases makes
life easier in case that there are many of them.
85
Colors: Color plots for e.g. stresses use a color spectrum from blue to
white to red by default. One can customize the color range by handing
over a list of RGB-values to the Colors-plug. There have to be at
least four colors given. The rst color is used for values below, the last
color for values above the current number range. The remaining colors
get distributed over the number range (see g. 70). The colors are
centered on zero if zero is part of the number range. Otherwise the
colors spread evenly between lower and upper numerical limit. In case
you want to change the coloring defaults, set them in the karamba.ini
le. There it is also possible to switch o the centering around zero by
setting center_color_range_on_zero to false.
Ids: This plug lets one select those parts of a model which shall be
displayed. It expects a list of strings. The default value is an empty
string which means that all of the model shall be visible. As one can
see in g. 69 it is possible to input regular expressions. These must
start with the character & and adhere to the conventions for regular
expressions as used in C#. The identier of each element of the model
is compared to each item of the given string list. In case a list entry
matches the element identier the element will be displayed. Fig. 69
contains four examples of Id lists: The rst would limit visibility to
element A, the second to element B. The third is a regular expression
which matches elements A or C. The fourth matches elements A
to C.
86
From the defMesh output-plug you can get the mesh of the shells and
beam cross sections of the deformed model for further processing. It is
a list of meshes with each item corresponding to one shell or beam.
The defAxes plug delivers the axes of the beams of the deformed
structure as interpolated 3rd degree nurb-splines. Use the Length/Sub-
division slider to set the number of interpolation points.
Figure 71: Local axes of cantilever composed of two beam elements, reaction force and
moment at support.
87
The Render Settings-submenu
The slider entitled Length/Segment[m] lets one control the distance at
which beam results (displacements, forces, moments, etc.) are plotted (see
6.6.8). It also sets the number of control points that are used for the
defAxes-output and for displaying.
In some cases the color display of results gets distorted by the presence of
stress concentrations or utilization peeks. They make much of the structure
look unstrained with some small patches of color where the peeks are. The
Upper Result Threshold- and Lower Result Threshold-sliders let you elim-
inate these extreme values. In case of the Upper Result Threshold-slider
a value of x% sets the upper boundary value of the color range in such a
way that x% of the actual value range is below. For the lower threshold it is
vice versa. Values in the model beyond the given thresholds are given special
colors to make them easily recognizable.
By default the result threshold values given above refer to the value range
in percent. Sometimes it turns out to be practical to prescribe absolute
values as thresholds (e.g. the yield stress of a material). The radio button
group Result Threshold as can be used to switch between relative and
absolute thresholds.
Limiting the value range of utilization values can be confusing: If the result
thresholds are given in percent, then setting the lower threshold to zero and
the upper to 100 displays the full range of utilization values. If the result
thresholds are given as absolute values then a lower threshold of 100 and an
upper threshold of 100 limit the color range to the areas where the material
resistance is sucient.
88
Material names displays the name of the material of each element
Load values adds the numerical values of loads or point masses to the
corresponding sysmbols.
NII prints the value of second order theory normal forces N II for all
element where it is not equal to zero. For the meaning of N II see 6.5.2.
Figure 72: Simply supported beam under axial and transverse point-load: List of nodal
displacements: vectors with translations and rotations for each node and load case.
The NodeDisp component lists the displacements of each node for all
load cases. Two data-trees consisting of vectors make up its output. The
89
two rightmost dimensions correspond to Model/LoadCase. The data for
each node at the output plugs Trans and Rot consists of a vector which
contains the three translations or three rotations (see g. 72). The vectors
refer to the global coordinate system. Their units are meter and radiant
respectively. A positive rotation say about the global X-axis means that the
node rotates counter clockwise for someone who looks at the origin of the
coordinate system with the X-axis pointing towards him or her.
Figure 73: Approximation of principal strains in a simply supported slab simulated with
beam elements under a point-load. Irregularity of principal strain directions is due to the
irregularity of the element grid.
Karamba includes shell elements from which principal stress lines can be
retrieved (see sec. 6.6.11). In case of single layer grid shells made up
of beams the Approximate Principal Strains-component can be used to
determine the approximate principal strain directions of such structures (see
g. 73). It works on arbitrary sets of deformed points.
The calculation of principal strains is based on the assumption of a con-
tinua. When applied to nodes connected with linear elements the result can
thus only result in a qualitative picture therefore the term Approximate.
The Approximate Principal Strains-component expects as input a refer-
ence model (input-plug Model) and the same model in a deformed cong-
uration (input-plug def.Model). The deformed model can be the output
of a ModelView-component. Hand over a list of points to the input-plug
'Point' where principal strain directions shall be computed. For each point
in this list the following two steps are applied: First those three nodes of
the reference model that do not lie on a line and have minimum distance
to the given point are determined. Second the strains in the sides of the
90
thus found triangle determine the principal strain directions plane stress is
assumed. The conversion of rst (output-plug VT1) and second principal
strains (output-plug VT2) to vectors occurs in such a way that they align
with the average displacement of the triangle that denes the corresponding
strain-state. The size of the vectors emanating from VT1 and VT2 can
be scaled by providing a factor in the input-plug Scale.
The principal strains are tangents to the principal stress lines of a struc-
ture. Use e.g. Daniel Hambleton's SPM Vector Components (see http:
//www.grasshopper3d.com/group/spmvectorcomponents) to retrieve these lines
from the strain-vector-eld.
Figure 74: Beam under axial and transverse point-load: Reaction forces and moments for
both load cases.
91
Figure 75: Beam under axial and transverse point-load: Utilization of the cross sections
of the elements.
Utilization of Beams
Fig. 75 shows the utilization component for beams. The meaning of the
input-plugs nSamples, Elast, gammaM0 and gammaM1 exactly cor-
responds to that of the Optimize Cross Section (see 6.5.9). The algorithm
for determining an elements utilization corresponds is the same as that under-
lying the cross section optimization procedure. Set the input-plug Details?
to true in order to get intermediate values of the utilization calculation at
the output-plug Details. For large structures the generation of the detailed
output may take some time.
Utilization numbers for beams rendered by this component (output-plug
Util) and the ModelView show dierences - especially for compressive axial
forces: The ModelView-component returns the ratio of stress to yield stress
as level of utilization, whereas the Utilization of Elements-component also
includes buckling. See for example the two utilization entries on the in g.
75: The second load case (i.e. number 1) is made up of an axial load
acting in the middle of the beam. As both ends are axially xed, one beam
92
is in tension, on in compression. The absolute value of the normal force in
both elements is the same. Yet the beam under compression has a utilization
of 0.26, the one under tension only 0.05. 1 means 100%.
In order to diagnose the reason why a specic beam shows over-utilization
the output-plugs Util-N, Util-Vy, Util-Vz, Util-Mt, Util-My and Util-
Mz return the contribution of each cross section component to the overall
utilization. When enabled via Details? the output-plug Details renders
a detailed account of intermediate values used for the calculation of the
element's utilization according to EN 1993-1-1.
Utilization of Shells
The utilization calculated for shells (see g. 76) is the ratio between yield
stress and Van Mises Stress in each element of the shell. The output-plug
Util lists the utilization of each element of the shell in the same order as
the mesh-faces are listed in the mesh which underlies the shell geometry.
Figure 77: Beam consisting of two elements under axial and transverse point-load: List
of displacements along the axis: three components of translations and rotations for each
section and load case.
In case you want to know how displacements change over the length
of a beam use the Beam Displacements-component (see g. 77). The
'LCase, 'maxL and 'NRes input-plugs work analogously to those of the
93
Section Forces-component (see section 6.6.10).
6.6.8. BeamView
(a) (b)
Figure 79: Rendered images of the beam. Left: Cross section-option enabled. Right:
Axial Stress enabled.
94
The color range of the results starts at the minimum value and stretches to
the maximum. You can dene individual color ranges for all result quantities
in the karamba.ini-le. A Legend-component lets you inspect the meaning
of the colors.
The mesh of the rendered image is available at the Mesh-output of the
BeamView-component. Two sliders control the mesh-size of the rendered
beams: First Length/Segment of ModelView determines the size of sec-
tions along the middle axis of the beams. Second Faces/Cross section
of BeamView controls the number of faces per cross-section. For ren-
dering circular hollow cross sections the number of Faces/Cross section is
multiplied by six in order to get a smooth visual result.
Figure 80: Mesh of beams under dead weight with Render Color Margin set to 5%.
95
Display of cross section forces and moments
Figure 81: Moment My (green) about the local beam Y-Axis and shear force Vz (blue) in
local Z-direction.
The Section Forces sub-menu lets you plot section forces and moments as
curves, meshes and with or without values attached. All generated curves
and meshes get appended to the BeamViews curve and Mesh output. The
graphical representation is oriented according to the local coordinate axes
of the beam and takes the undeected geometry as its base. The index of
bending moments indicates the local axis about which they rotate, for shear
forces it is the direction in which they act (see also g. 82). Customize
the mesh-colors via karamba.ini. The slider Length/Subdivision in sub-
menu Render Settings of the ModelView-component controls the number
of interpolation points.
96
Figure 82: Normal force N, shear force V and resultant moment M at a cross section
with local coordinate axes XYZ. Force and bending moment components are positive in the
direction of the local coordinate axes.
Figure 83 shows a beam with two load cases presented in one picture. The
beam consists of two elements and has a total length of eight meters. In
load case zero a vertical force of magnitude 1kN acts vertically downwards
in the middle of the beam. Load case one consists of a point-load of 3kN
directed parallel to the undeformed beam axis. The results at the output-
plugs N and M in g. 83 are trees that hold the beams normal force in
kilo Newton [kN] and resultant bending moment in kilo Newton times meter
[kNm] respectively. There is only one model fed into the S-Force component
thus the second index from the right is zero. The rst index from the right
refers to the load case. If the input-plug LCase has a value other than the
default of -1 the output in N, M, and V is limited to the load-case
with the corresponding index. With BeamIds the result output may be
conned to a subset of the beams in the model.
Tensile normal forces come out positive, compressive normal forces have
negative sign. The resultant moment yields always positive values as it is
the length of the resultant moment vector in the plane of the cross section.
The input-plug NRes sets the number of equidistant points along the
beam axis where resultant forces are calculated in order to determine the
maximum values for output. In case of zero gravity and in the absence of
uniform beam loads the maximum values of M and N occur at the endpoints.
Otherwise these maxima may lie inside the elements. The default value of
NRes is three which means that values are checked at the beams end-points
and in the middle.
As M is always rendered positive the maximum along an element is unam-
biguously given. Under gravity normal forces in a beam may change sign.
97
Figure 83: Beam under axial and transverse point-load: List of normal forces, shear
forces and moments for all elements and all load cases.
In such a case Karamba returns that N which gives the maximum absolute
value.
Fig. 83 shows the results of a simply supported beam consisting of two
elements under two load-cases: In load case zero both elements return zero
normal force because there acts no external axial load. The maximum mo-
ment of both elements is 2[kN m]. For a simply supported beam under a
mid-point transverse load the maximum moment occurs in the middle and
turns out to be M = F L/4 = 1[kN ] 8[m]/4 = 2[kN m].
The axial force of 3[kN ] in load case one ows to equal parts into both
axial supports. It causes tension (1.5[kN ]) in the left element and compression
(1.5[kN ]) in the right one.
98
in the output.
LCase and BeamIds input can be used to limit the results to a specic
load-case of a subset of the beams in the model.
Figure 84: Simply supported beam under axial and transverse point-load: List of normal
forces, shear forces and moments for all elements and all load cases along an the elements.
Figure 85: Cantilever consisting of triangular shell elements: Flow lines of force in hori-
zontal direction.
Force ow (FF) lines or load pathes (as they are also sometimes called)
illustrate the load distribution in structures [4]). There is a loose analogy
between those force ow (FF) lines and streamlines in hydromechanics: The
law of conservation of mass in hydromechanics is matched by the static
conditions of equilibrium in a specied direction. If there are two FF-lines
the resultant force between those in a predened direction stays constant.
Consider e.g. the cantilever in g. 85 for which the force ow in horizontal
99
direction is described by the red lines. At the supports the force ow lines
run nearly horizontal at the upper and lower side where the normal stresses
from the supports reach their maximum and thus dominate the resultant
force. They gradually curve down to the neutral axis where the shear stresses
constitute the only contribution to horizontal forces.
Aside from resulting in nice line drawings those force ow lines can be
practical as well [4]:
FF-lines form eddies in ineective (with respect to the given force di-
rection) parts of a structure or reverse their direction there.
FF-lines are not the same as principal stress lines because the latter lack
the property of constant force between adjacent lines.
The Shell Force Flow Lines-component lets you create force ow lines in
arbitrary points of shells (see g. 85). There exist seven input plugs:
Model: The model from which you want to create FF-lines. By default
the results of all load-cases get superimposed with factor 1. Use a
ModelView-component to select specic load-cases or to impose load-
factors other than 1.
Layer: In case of bending the stress state of shells and therefore the
FF-lines change over the cross section height. A value of -1 denotes
the lower 1 the upper shell surface and 0 the middle layer. The
default value in 0.
Source: Denes points on the shell where FF-lines shall originate. You
can feed points on or near the shell into this plug. It is also possible to
100
use lines that intersect the shell. In case of multiple intersections there
will be the same number of FF-lines.
dA: This parameter sets the accuracy with which the FF-lines get
determined: It is the maximum dierential angle between to adjacent
pieces of a FF-line. If this criteria results in pieces of length smaller
than Seg-L then they will be joined before sent to the output-plug
Line. By default this value is set to 5[deg].
theta: Here you can dene an angle between the FF-lines and those
lines output at the Line-output plug. The angle is in [deg] and defaults
to zero.
Isolines on Shells
The Isolines on Shells-component lets you do two thing. First draw con-
tour lines on shells that connect points of equal principal stresses, principal
moments, utilization, resultant displacements or shell thickness (see g. 86).
Second query results in arbitrary points of the shell.
The input-plugs Model, Layer, Sources and Seg-L have the same
meaning as for the Force Flow Lines on Shells-component (see sec. 6.6.11).
The load-case to examine as well as load-case factors can be set with a
ModelView-component plugged into the denition ahead of the Isolines
on Shells-component. By default all load-cases get superimposed using unit
load-factors.
Isolines are straight lines within each shell element. This may result in
slightly rugged poly-lines. Set the Smooth-input plug to true in order to
atten them out. The Line-output-plug will then return splines instead of
lists of line-like curves. They result from using the calculated iso-points as
control-points. For curved shell geometries this has the disadvantage that
101
Figure 86: Lines of equal first principal stress on a cantilever.
those splines no longer stay exactly on the shell surface. This may give you
a hard time trying to intersect dierent groups of such lines.
In the property-submenu you can select the result-value to be displayed:
rst or second principal stress (Sig1, Sig2), rst or second principal
bending moments (m1, m2), utilization (Util)), resultant displacement
(Disp) or shell thickness (Thick).
The Lines-output data-structure corresponds to that of the Force Flow
Lines on Shells-component. Each number in the output-plug Value cor-
responds to one piece of isoline from the Lines'-output.
Figure 87: Principal stress lines: they are tangent to the first and second principal stress
direction. The coloring reflects the level of material utilization.
102
Principal stress (PS) lines are tangent to the principal stress directions (see
g. 87). In the case of a cantilever they either run parallel or at right angle
to the free boundaries. In the middle where normal stresses due to bending
vanish rst and second principal stress lines intersect at 90[deg].
The meaning of the input-plugs of the Principal Stress Lines on Shells-
component correspond to that of the Force Flow Lines on Shells-component
(see sec. 6.6.11 for details). On the output side Lines1 and Lines2 hold
the rst and second principal stress lines in data trees: the right-most di-
mension holds a list of lines that represent a part of a PS-line. There are
usually two parts per line that start o to either side of the starting point.
In case of more complicated topologies there can be more than two parts.
These parts populate the second dimension from the right.
Figure 88: Cantilever analyzed as shell structure: directions of second principal normal
forces at element centers.
103
6.6.13. Principal Stress Directions on Shells
Figure 89: Triangular mesh of shell elements and principal stress directions at their cen-
troids. Colors indicate the resultant displacement.
This components provides the same results as the Princ. Stress 1-2
option of the ShellView-component (see g. 89). The output-plug P
renders the positions of the elements centroids. V1 and V2 return corre-
sponding vectors for the rst and second principal stresses there. Thin out
results by setting Result Threshold of ModelView (needs to be upstream
of the data-ow) to a value of less than 100% . Like for isoline and force-
ow lines a specic load case or superimposition of load cases can be set
via ModelView. By default all load-case results get added up using unit load
factors.
104
6.6.15. ShellView
Cross section: shows the upper and lower shell surface and adds them
to the output at the Mesh-output plug.
Princ. Stress 1: visualizes the resultant value of the rst principal
stress in the plane of the shell.
Princ. Stress 2: displays the resultant value of the second principal
stress. direction would also be a correct result.
Layer of Results: sets the shell layer on which results are calculated.
A value of +1 corresponds to the upper surface, 1 to the lower.
105
sliders in the Display Scales-menu of the ModelView-component to
thin them out if necessary.
6.7. Export
6.8. Utilities
106
Figure 91: Unified mesh generated from Breps using the MeshBreps-component; cre-
ated by Moritz Heimrath.
nodes determine its connectivity to the other parts of the structure. Thus
point-loads, supports, point-masses and the like can only be attached to
mesh vertices. When two meshes have common boundaries they need to
have identical vertices there in order to be structurally connected.
The MeshBreps-component ensures the connectedness of meshes gen-
erated from multiple breps. It also allows to dene points on those breps
where mesh vertices shall result. Fig. 91 shows the unied mesh based on
four breps and one predened point.
Figure 92: In- and output of the MeshBreps-component; created by Moritz Heimrath.
107
Brep: List of breps to be joined and meshed.
SStep and SIter: These two parameters let you control mesh relax-
ation. Triangular nite shell elements give better results when having
sides of approximately equal length. The smoothing algorithm tries
to improve the mesh in that direction: It moves each vertex towards
the center of gravity of those vertices it connects to. During mesh
relaxation vertices always remain on the brep they belong to.
Assume you have two lists of points: say FromPts and ToPts. Further
imagine you want to have a network that connects each point of the rst set
with a predened number of its nearest neighbors in the second set (or to
points in set two that lie within a given distance). In that case the Nearest
Neighbor-component will be the right choice. It outputs lists of connection
lines and a corresponding connectivity diagram. Be aware of the fact that
these lists will probably contain duplicate lines. But this is no big problem
(see section 6.8.4).
108
Figure 93: Random points in a unit volume connected to their nearest neighbor in a 5-D
setting
than three. Fig. 93 shows an example with ve dimensions: Dimensions one
to three represent space. Dimension four is the shortest distance between
each point and the thick red guide line. The curve parameter of the guide
line at the point where it meets the line of shortest distance acts as fth
dimension. Each of the randomly generated points is connected with its
nearest neighbor. One can see from g. 93 that the resulting line segments
align to the guide curve in some way.
There are three input-plugs on the component:
109
6.8.4. Remove Duplicate Lines
When you have a list of lines that you suspect of containing duplicate lines
then send it through this component and out comes a puried list of ones of
a kind. The input-plug LDist determines the limit distance for nodes to be
considered as identical. Lines of length less than LDist will be discarded.
Lines that overlap only partly can not be detected.
Does essentially the same as the component described above only with
points instead of lines.
This component takes a list of lines as input and mutually tests them for
intersection. Output-plug IP delivers a list of intersection points. LSS
returns all the line-segments including those which result from mutual inter-
section. The input-plug LTol sets the tolerance length in meter for nding
intersections between lines that do not actually intersect. LTol is also the
minimum length of segments at the ends of lines (e.g. at T-intersections).
110
Figure 94: The elements A and B of the original model are connected resulting in
the additional element C.
MaxELen [m]: you can set here a length limit for elements that shall
take part in the felting-process. All element longer than the value of
MaxELen will be ignored.
StartInd: Lets you limit the felting process to elements with an index
larger than or equal StartInd.
Beam Id: The beam identier provided her will be attributed to the
connections generated by the component. Cross sections, materials and
eccentricities previously dened for this beam identier apply to these.
In case no identier is given neighboring elements snap to the point in
the middle of their shortest connection line.
The felting algorithm proceeds from the rst element to the last, always
testing against all currently existing elements. Therefore newly generated
connection elements may be the source of further connections.
111
The algorithm operates directly on the Karamba-model and is therefore
quite fast.
6.8.9. Mapper
Figure 95: The Mapper-component applies mappings to a given model. In this case
there is one mapping that connects two beam-sets with elements whose position is con-
trolled by the parameters given to the mapper.
112
6.8.10. Interpolate Shape
Figure 96: Definition for optimizing the shape of a simply supported beam under mid-
span single load.
Fig. 96 shows a denition where the rst 30 eigen-forms (the thin red
lines in 97) of a simply supported beam serve as the shape-dimensions of
the design space.
Galapagos is used to determine the position in that design-space which
results in minimum deection under a single load at mid-span. It is clear
(think of a hanging model) that the optimum shape has a sharp kink under
the load and is otherwise straight.
Fig. 97 shows the result of the optimization run which resembles the
ideal shape to a large degree. A sharper bend underneath the load could be
achieved by including more shape-dimensions in the design space.
113
Figure 97: Result of shape optimization (thick red line) for a simply supported beam
under mid-span single load using the first 30 eigen-forms the thin red lines as axes of
the design space.
Figure 98: Proximity Stitch-mapping with the same set-up as in fig. 95 but ten ran-
dom connections instead of two.
interval [ln1 minOf f set, ln1 + maxOf f set]. Here minOset and maxO-
set can be dened by the user. The narrower the interval they dene, the
more regular the structure.
114
Figure 99: Simple Stitch-mapping with the same set-up as in fig. 95 but fifteen random
connections instead of two.
how many parameters are needed. The input plug Beam Id can be used
to dene the name of the connection elements. Fig. 99 shows a structure
with 15 connections resulting from 30 randomly selected parameters.
This simple-variant of stitches is also the most versatile one: it gives you
great freedom in generating connection patterns by dening the way how a
set of parameters is mapped to the set of values that are fed into the Simple
Stitch. Sections 6.8.11 and 6.8.13 deal with variants of the Simple Stitch
which are limiting the scope of possible patters. This approach leads to
faster convergence in case of optimization with e.g. Galapagos and spares
you programming eort but lacks the full exibility of the Simple Stitch.
Figure 100: Stacked Stitch-mapping with the same set-up as in fig. 95 but fifteen
random connections instead of two.
115
The input-plug unevenness can be used to ne-tune the average irregularity
of the result. Zero means totally even: the connection elements are placed
at equal distance along the beam-sets (in terms of the corresponding beam-
set parameter). The larger the value in unevenness the more irregular the
layout of connection elements.
The components User Iso-Lines and User Stream-Lines let you draw iso-
lines and stream-lines on arbitrary meshes by dening values and vectors at
their vertices.
Figure 101: User defined Iso-lines (red) and stream-lines (green) on a rectangular shell
patch.
7. Trouble shooting
Do not panic in case some Karamba-components turn red upon feeding them
with your model. Read the error message. It usually contains information
116
that helps you further. The very ecient way of tracking errors is to divide
and conquer:
5. If not take that part as your new model and proceed to point 1.
2. In case that more than one item is plugged into an input, check the
incoming data via a panel component.
117
If the rst few eigen-modes seemingly show an un-deected struc-
ture there might be beams in the system that rotate about their lon-
gitudinal axis. Enable Local Axes in the ModelView-component
and move the slider for scaling Deformation in order to check this.
7.2. fem.karambaPINVOKE-exception
reinstall Karamba.
Make sure that you installed a Karamba version with the correct bitness:
Karamba (64bit) can be used together with Rhinoceros 5 (64bit);
Karamba (32bit) with Rhinoceros 5. Be aware of the fact that both
versions of Rhino get installed.
118
This is plan b if the above does not help:
Start Grasshopper
Restart Rhino
Upon installing Grasshopper some les of the Karamba package may have
been erased. Try to reinstall Karamba.
7.5. Karamba does not appear nor any of its components seem to
be installed
119
Having the path structures of the input-data wrong may lead to multiple
models. In such cases attening or simplifying the input-data helps.
Check whether you disabled the correct degrees of freedom in the Condi-
tions section of the PreDisp-component.
Check whether your Rhino background color is black. Some types of tags
are printed in black and do not show on a black canvas. You can change the
text color in the 'karamba.ini-le (see section 3).
120
7.13. Error messages upon loading denitions saved with outdated
Karamba versions
On some components the order of input-plugs changed over time (e.g. the
Assemble-component). They will turn red when loaded and the runtime error
message will state that one object can not be cast to some other object.
In this case replace the old component with a new one and reattach the
input-plugs accordingly.
Make sure that the beams you intend to optimize belong to the same family
as those you want them to be selected from.
In case you encounter any further problems please do not hesitate to con-
tact us at [email protected] or via the Karamba group at http://www.
grasshopper3d.com/group/karamba.
121
A. Background information
For composite materials like in the case of rods made from glass ber
and epoxy it is necessary to defer a mean value for E using material tests.
Karamba expects the input for E to be in kilo Newton per square centimeter
[kN/cm2 ].
If one stretches a piece of material it not only gets longer but also thinner:
it contracts laterally. In case of steel for example lateral strain amounts to
30% of the longitudinal strain. In case of beams with a large ratio of cross
section height to span this eect inuences the displacement response. In
common beam structures however this eect is of minor importance. The
shear modulus G describes material behavior in this respect.
122
case (see section 6.4.1).
=E
E stands for Young's Modulus which depends on the material and depicts its
stiness. Hooke's law expresses the fact that the more you deform something
the more force you have to apply.
123
type of material [kN/m3 ]
loads
type [kN/m2 ]
124
for an initial design. In order to get meaningful cross section dimensions limit
the maximum deection of the structure.
Figure 102 shows a simply supported beam of length L with maximum
deection under a single force at mid-span. The maximum deection of a
building should be such that people using it do not start to feel uneasy. As a
rough rule of thumb try to limit it to L/300. If your structure is more like
a cantilever L/150 will do. This can always be achieved by increasing the
size of the cross-section. If deection is dominated by bending (like in gure
102) it is much more ecient to increase the height of the cross-section than
its area (see section 6.1.10). Make sure to include all signicant loads (dead
weight, live load, wind...) when checking the allowable maximum deection.
For a rst design however it will be sucient to take a multiple of the dead-
weight (e.g. with a factor of 1.5). This can be done in Karamba by giving
the vector of gravity a length of 1.5.
In case of structures dominated by bending, collapse is preceded by large
deections (see for example the video of the collapse of the Tacoma-Narrows
bridge at http://www.youtube.com/watch?v=3mclp9QmCGs which also gives an
impression of what normal shapes are). So limiting deection automatically
leads to a safe design. If however compressive forces initiate failure, col-
lapse may occur without prior warning. The phenomenon is called buckling.
In Karamba it makes no dierence whether an axially loaded beam resists
compressive or tensile loads: it either gets longer or shorter and the abso-
lute value of its change of length is the same. In real structures the more
slender a beam the less compressive force it takes to buckle it. An extreme
example would be a rope. As a rule of thumb limit the slenderness which
is approximately the ratio of free span to diameter of compressed elements
to 1/100.
Karamba spends most of its time solving for the deections of a model.
The time needed depends on the number of degrees of freedom n of the
statical system and how many connections exist between the nodes. In
the theoretical case that each node is connected to all others computation-
time grows with n3 . If each node is connected to nneigh others and the
overall structure has a main axis along which it is oriented (i.e. there are
no connections between distant nodes) then computational eort increases
approximately with 0.5 n n2neigh . Karamba makes use of multiple processors
125
so having more than one saves time. Using trusses instead of beams more
than halves computation time. When doing optimization with Galapagos
the continuous display updates slow down things considerably. For better
performance disable the preview of all components or minimize the Rhino
window.
Karamba does cross section design by going through the list of cross sections
in a group of cross sections called a family. It starts at the rst entry and
proceeds to the next until a cross section is found that is sucient for the
given cross section forces.
126
The calculation of the utilization of a beam is done using the procedure
described in EN 1993-1-1 i.e. Eurocode (EC) 3. It takes account of buckling
and lateral torsional buckling. The superposition of dierent cross section
forces works according to procedure 2 (see annex B of EC 3). The values
Cmy , Cmz and CmLT are limited to 0.9. The Utilization components Details-
output returns a listing of intermediate values from the calculation according
to EC3 (see section 6.6.6).
References
[3] Rubin H. Schneider K.-J. Baustatik Theorie I. und II. Ordnung. Werner-
Verlag, 1996.
127