# 3.2.1: General Loads

Currently Karamba3d offers these general types of loads: gravity-, point-, imperfection-, pretension-, temperature-loads, constant mesh-loads, variable mesh-loads and prescribed displacements at supports. For beam and truss elements additional options exist (see section Beam Loads). The types of loads discribed in this section apply to all types of elements.\
An arbitrary number of point-, mesh-, etc.-loads and one gravity-load may be combined to form a load-case of which again an arbitrary number may exist. Fig. 3.2.1.1 shows the definition of loads with the help of the **“Loads”** multi-component. On the bottom of the **“ModelView”**-component (see section [3.6.1](../3.6-results/3.6.1-modelview)) there is a drop-down-list (unfold it by clicking on the **“Result-case Selection”**-menu header) which can be used to select single load-cases for display. Select **“–all–”** in order to view all existing load-definitions of all load-cases simultaneously. Use the force-slider to scale the size of the load-symbols (double-clicking on its knob lets you change the value range and its current value).

![Fig. 3.2.1.1: Simply supported beam with five loads](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2Fd8fbdfa39a7fac9564fd602997c7a188effdd0ad.png?generation=1595316055211814\&alt=media)

## **Gravity**

It is the default setting when you place a **“Loads”**-component on the canvas.

Each load case may contain zero or one definition for the vector of gravity. In this way one can e.g. simulate the effect of an earthquake by applying a certain amount of gravity in horizontal direction. For Vienna, which has medium earthquake loads, this amounts to approximately 14 % of gravity that a building has to sustain in horizontal direction. In areas with severe earthquake loads this can rise to 100 % (the value however also depends on the stiffness properties of the structure and underlying soil).

Gravity applies to all active elements in the structural model for which the specific weight gamma (see section [3.4.1](../3.4-material/3.4.1-material-properties)) is not zero. The gravity vector defines the direction in which gravity shall act. A vector of length one corresponds to gravity as encountered on earth.

When working in SI-units Karamba3D assumes a value of $$10m/s^2$$ for the acceleration of gravity. In case of Imperial units $$g = 9.8066352 m/s^2$$ is used. Otherwise the conversion from pound mass to pound force does not work. The value of $$g$$ can be set in the [“karamba.ini”](broken-reference)-file, which resides in the Karamba3D installation folder.



{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2F2VKapMYQ86mEqwx6wsTF%2FLoad_Gravity_ResultingForce.gh?alt=media&token=4c5c8a45-39db-4cdc-85fa-aa143d1f5a3e" %}

## **Point-Load**

The component **“Point-Load”** lets you define loads on nodes. These get attached by node-index or coordinate. In order to find out the index of a specific node enable the **“node tag”**-checkbox in the **“ModelView”**-component. Feed a corresponding list of items into the **”Pos|Ind”**-plug (quite analogous to the **“Support”**-component). See section [3.1.6](../3.1-model/3.1.6-line-to-beam) on how to predefine the index of specific nodes or node-position. Point-loads can be either forces ($$kN$$) or moments ($$kNm$$). Feed a force- or moment-vector into the **“Force”** or **“Moment”** input-plug. Its components define 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 [3.5.4](../3.5-algorithms/3.5.4-analyze-large-deformation)).

Plugging a point-load into a panel component gives the following information: Node-index where the load gets applied or position, force-vector, moment vector, the number of 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 defines 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.

Be cautious in case of nodes where only truss- or membrane-elements attach: these nodes do not possess rotational degrees of freedom. A moment load will therefore have no effect and gets automatically removed from the structure.

For more information on loads and some typical values see section [A.2.3](../../../appendix/a.4-background-information/a.4.3-tips-for-designing-statically-feasible-structures#table-a-3-2-loads-for-typical-scenarios).



{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FYBUdfA6fqzZEN130rfHW%2FPointLoad.gh?alt=media&token=060ccb7a-e78d-43e7-82e3-afe865abc3b2" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2Fog2XvuLOf8OlooYFmoZg%2FPointLoadsOnGrid.gh?alt=media&token=9023bfbd-c3cd-4e7e-89c3-2aeec4cc6c53" %}

## ~~**Imperfection-Load**~~

With Karamba3D 2.2.0 this load option was moved to the "Beam Loads"-component (see section [3.2.2](3.2.2-beam-loads)).

## **Initial Strain-Load**

Karamba3D lets you define initial strains. Fig. 3.2.1.3 shows a beam with both ends fixed, subject to a positive initial constant strain and curvature. The unit of dimension of the pretension which gets fed into the **“Eps0”** plug is $$mm/m$$.

{% hint style="info" %}
A positive value means that the element gets longer.
{% endhint %}

![ Fig. 3.2.1.3: Member under initial strains fixed at both ends and support reactions](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2F9e0d02e47f478bf7719ed025a36f8a4df0a4ff34.png?generation=1595316054967990\&alt=media)

Applying initial strain to an element is not the same as applying a pair of opposite forces or moments at its endpoints: In case of initial strain, the axial force in the element depends on its boundary conditions: If the structure to which it connects is very stiff then the resulting axial force will be $$N = -\epsilon _0 \cdot A \cdot E$$. In fig. 3.2.1.3 the supports are rigid, the elements cross section $$A = 25 cm^2$$, Young’s Modulus $$E = 21000 kN/cm^2$$ and $$\epsilon _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 **“Kappa0”**-input is a vector of curvature values with respect to the local element axes. A positive component value signifies an anti-clockwise rotation about the corresponding axis. The input plug **“ElemIds”** defines the elements where the load acts and **“LCase”** the load-case.



{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FpNCIatEHK9KKhNzYEdsS%2FInitialStrainLoad_Beam.gh?alt=media&token=b85081af-fed4-4842-a9ee-a1f044304e3b" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FzMO6WVzqaOoXNWV41Q24%2FInitialStrainLoad_Truss.gh?alt=media&token=2c57b9e4-d2ec-4b04-9c8b-3653c8f28779" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2Fd16rRZphWeWKAtvO0Ne3%2FInitialStrainLoad_Shell.gh?alt=media&token=b4af6515-2044-4cf0-a7d8-281b02361bd9" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FBSQz2IjEWCJiKL12eXz4%2FInitialStrainLoad_ClampedShell.gh?alt=media&token=c5feebed-99e0-414c-ae27-c736b98f1f99" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FhKDCB87NdWfk4FjSzgGy%2FInitialCurvatureLoad_Beam_Arc.gh?alt=media&token=f36d75b4-cecf-41d3-9722-caaadaf7a646" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2F1Dbvlqiv2QxbrIwXbWqD%2FInitialCurvatureLoad_Beam_Cantilever.gh?alt=media&token=63177f92-d692-4812-906c-72b4d3ff3079" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FMjaWniUkawijX2H3wVIB%2FInitialCurvatureLoad_Beam_Clamped.gh?alt=media&token=5b6cf1df-1520-415a-ba8c-ee416c77c938" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FDRtJJiAkYnIUH7Y4yw9H%2FInitialCurvatureLoad_Beam_Clamped_Rotated.gh?alt=media&token=271bdace-6ce8-47c5-8cda-de1a85679dfd" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FoaFaS6aWFhGZSrp5LR9p%2FInitialCurvatureLoad_Beam_SimplySupported.gh?alt=media&token=9dc7367e-6d20-468c-9213-476eeac75cf1" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FPEV42UQiOfJkanF7QMkr%2FInitialCurvatureLoad_Shell_Arc.gh?alt=media&token=45e0a2ee-ef05-441d-ae19-f505499c4ca5" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FDDrOtxtonBJyU3G5V31s%2FInitialCurvatureLoad_Shell_Cantilever.gh?alt=media&token=d33aa8b5-162a-4cbc-b81c-285495f3fcf0" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FzjhgCAed79lO206GJRrC%2FInitialCurvatureLoad_Shell_Clamped.gh?alt=media&token=b08414ef-2bec-44d2-ad64-3bfe93fffd6e" %}

## **Temperature-Load**

The definition of temperature loads works analogously to defining pretension loads (see section [3.2.1](#initial-strain-load)). The coefficient of thermal expansion (see section [3.4.1](../3.4-material/3.4.1-material-properties)) characterizes the response of a material to temperature changes.

![ Fig. 3.2.1.4: Temperature load on a member which is fixed at both ends](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2F4674002dd59c519162b5275fc64451504f915f03.png?generation=1595316055003040\&alt=media)

## ~~**Line-Load on Element**~~

With Karamba3D 2.2.0 this load option was moved to the "Beam Loads"-component (see section [3.2.2](3.2.2-beam-loads)) where it is available as **'Block'**-load.

## **Mesh-Load: Const and Variable**

### Mesh

The **“MeshLoad”**-component can be used to transform surface loads into equivalent node- or element-loads. This lets you define life-loads on floor slabs, moving loads on bridges (see example “Bridge.ghx” in the [examples ](https://www.karamba3d.com/examples/)collection on the Karamba3D web-site), snow on roofs, wind-pressure on a facade, etc.. The mesh where the load is applied and the underlying structure do not need to be connected. It needs to be fed into the **“Mesh”**-input-plug.

### Vec

There exist two types of mesh-loads:

1. **“MeshLoad Const”**: for loads which are constant throughout the mesh.
2. **“MeshLoad Var"**: lets one set specific load-values for each face of the mesh.

These two variants differ with respect to the data-structure expected at the input **“Vec”** and **“Vecs”** respectively: Either a single vector for specifying a constant load or a list of vectors. In the latter case the list items are applied to the mesh-faces based on the longest list principle. In what follows the **“MeshLoad Const”**-variant will be depicted but everything mentioned there applies to **“MeshLoad Var”** also.

![Fig. 3.2.1.6: Simply supported beam with line-loads from a mesh load](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2F687901ba0297da8d57d2c66fd6de5a5382cd2f39.png?generation=1595316055278651\&alt=media)

Fig. 3.2.1.6 left side shows a simply supported beam and a mesh which consists of two rectangular faces. Each face covers one half of the beam and has a width of $$2m$$ perpendicular to the beam axis. With a distributed load of $$1kN/m^2$$ in negative global Z-direction a uniformly distributed load of 2 $$kN/m$$ results.

### Pos

In order to define structure nodes where equivalent point-loads may be generated, plug a list of their coordinates into the **“Pos”**-plug. These need to correspond to existing nodes – otherwise the Assembly-component turns red. Offending nodes will be listed in its run-time error message. By default all points of the structure are included. Uncheck **“Point loads”** to avoid point-loads.

### BeamIds

With the input-plug **“BeamIds”**, groups of elements can be specified on which equivalent loads shall be generated. By default all beams of the model are included. In case no beam loads shall be included uncheck the **“Line loads”** button on the **“Generation”** submenu.

The procedure for calculating nodal loads and uniformly distributed beam loads from surface loads consists of the following steps: First Karamba3D 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 [3.1.1](../3.1-model/3.1.1-assemble-model)) 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 fig. 3.2.1.6 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. 3.2.1.7: Simply supported beam with point loads from a mesh load](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2F763bc110085423e37363506978f64f9b256c9e94.png?generation=1595316055024631\&alt=media)

Fig. 3.2.1.7 shows a similar setting as in fig. 3.2.1.6. The difference lies in the refined 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 the generation of a uniform line-load.

### LCase

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.

### Orientation

The right side of fig. 3.2.1.7 shows what data the **“MeshLoad const”**-component collects: The input-plug **“Vec”** expects a vector which specifies the surface load. Its physical unit is kilo Newton per square meter $$kN/m^2$$. The orientation of the load-vector depends on the checkbox selected under **“Orientation”** (see also fig. 3.2.1.8):

*   **"local to mesh”**: The convention for local coordinate systems for local loads corresponds to that given in section [3.1.14](../../3.1-model/3.1.14-orientate-element#orientate-shell): The local x-axis is parallel to the global x-direction unless the mesh-face normal is parallel to the global x-direction. In that case the local x-axis points in the global y-direction. The local z-axis is always perpendicular to the mesh-face and its orientation depends on the order of the vertices: If the z-axis points towards ones nose, the order of the face vertices is counter-clockwise.

    This means a surface load with components only in Z-direction acts like wind pressure or suction.
* **“global”**: The force-vector is oriented according to the global coordinate system. This makes the surface load behave like additional weight on the mesh plane.
* **“global proj.”**: The force-vector is oriented according to the global coordinate system. The corresponding surface load is distributed on the area that results from projecting the mesh-faces to global coordinate planes. In such a way the action of snow load can be simulated.

![ Fig. 3.2.1.8: Orientation of loads on mesh: (a) local; (b) global; (c) global projected to global plane](https://442610158-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCkDlhlZpqUmakSqOrp%2Fsync%2F80080c6eb00b2c56f17ad6d72bbcd60283951037.png?generation=1595316055096401\&alt=media)

### Generation

By default, the **“MeshLoad const”**-component creates point- and line-loads. The radio-buttons in the submenu **“Generation”** can be used to disable the first or the latter.



{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FoZLwmQ5cdjhFtDRzgsZG%2FMeshLoad_VerySimple.gh?alt=media&token=fbf3d02b-d89e-4444-ad75-a2dd011e6a31" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2Fzfq2YPpGDgUl74ijrBTp%2FMeshLoad_Selective.gh?alt=media&token=e583eb66-cd75-4017-87e0-7a0d20a63323" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2F5cn7fXhSxlj95VyCfBAz%2FMeshLoad_OnShaft.gh?alt=media&token=e192477c-8156-482f-9403-1780c52ffbc5" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2Fc8GdQKg5PtsynxDptBuP%2FMeshLoad_MeshDependency.gh?alt=media&token=31c00144-a3e1-4528-bfc6-ce8e5e947e5f" %}

{% file src="https://442610158-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCkDlhlZpqUmakSqOrp-2335387569%2Fuploads%2FYz6wRwOBHC470iVt5Ht2%2FMeshLoad_CrossingElements.gh?alt=media&token=4873721d-c4cd-4ce4-80b0-6729134560eb" %}
