3.5.8: Optimize Cross Section 🔷

Use the “Optimize Cross Section”-component for the automatic selection of the most appropriate cross sections for beams and shells. It takes into account the cross sections load bearing capacity and optionally limits the maximum deflection of the structure.

Fig. 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.5kN/cm2f_y=23.5kN/cm^2.

First the “OptiCroSec”-component determines the cross section of each element in such a way that their load-bearing capacity is sufficient for all load-cases. In order to achieve this, Karamba3D uses the following procedure:

  1. Determination of section forces at “nSamples” points along all beams using the initial cross section.

  2. For each element or given set of elements: selection of the first sufficient entry from the family to which each cross section belongs.

  3. If no changes were necessary in step two or the maximum number of design iterations is reached, the algorithm stops. Otherwise it returns to step one using the cross sections selected in step two.

In statically indeterminate structures the section forces depend on the stiffness (i.e. cross section and materials) of the members. This necessitates the iterative procedure described above.

In fig. one can see the example of a cantilever idealized with shell elements: The optimization results in thicker shell elements at the top and bottom edge of the built-in side. The “CroSecs”-input of the “OptiCroSec”-component consists of a family of constant shell cross sections.

For shells the mechanical utilization is calculated as the maximum Von Mises stress in a point divided by the material strength. For cross section optimization of shells the same procedure applies as for beams. Starting with the first item of a cross section family the algorithm tests all members and stops when a cross section is encountered for which the utilization is less than a pre-set value which is 1 by default. This corresponds to 100 %.

After ensuring safety against structural failure a second, optional step follows where Karamba3D tries to reach a user supplied maximum deflection. Behind the scenes Karamba3D iteratively adapts temporarily the strength of the materials. This may lead to uneconomic results in case of structures where the maximum displacement occurs in a small region, whereas the rest of the structure shows a much smaller deformation. In order that the iterative adaption for the maximum displacement works, the number of design iterations should be chosen appropriately – five is normally sufficient.

Building codes prescribe different levels of safety against reaching maximum displacement and load bearing limits. When using external loads at ultimate limit state level one should keep in mind that this is approximately 1.4 times the loads used to check maximum displacement requirements. Thus one way of designing structures in Karamba3D is to limit material utilization to 1/1.40.71/1.4 \approx 0.7 under characteristic loads and use the resulting displacements directly for usability design.

When the given loads surpass the load bearing capacity of the biggest cross section available in a cross section family, Karamba3D issues a warning via the “Info” output-plug (see fig.

There is no guarantee, that the iteration procedure for finding the optimal cross sections eventually converges. One can check the results via the “Utilization of Elements”-component. It applies the same procedure as the “OptiCroSec”-component for assessing elements according to Eurocode 3 [5] and considers the load-bearing capacity of the whole cross section. The utilization-output of the “ModelView”-component only shows the ratio between the stress in a point of a cross section and the material strength there. Effects like buckling under compression are not considered. This is why the utilization as displayed by the “ModelView”-component may deviate from the results of the “Utilization of Elements”-component.

Due to the lower-bound theorem of plasticity, the structure will be sufficient for the given loads at any iteration step – although some elements may show over-utilization – provided that the material is sufficiently plastic (like e.g. steel). With increasing number of iterations the structural system tends to become more and more statically determinate.

The profile selection procedure assumes that the cross sections of a family are ordered: starting with your most favorite and descending to the least desired cross section. In the cross section table “CrossSectionValues.bin” that comes with Karamba3D all family members are ranked according to their height. The cross section with the smallest height comes first, the one with the largest height last. When using the cross section area as sorting criteria, structures of minimum weight (and thus approximately cost) result. See section 3.3.12 for how to switch between minimum height and minimum weight design. Ordering the profiles by area may lead to structures where the cross section heights vary significantly from one beam to the next.

In order to check whether a given beam cross section is sufficient, Karamba3D applies a procedure for steel beams according to Eurocode 3 (EN 1993-1-1) (see [5] for details). The interaction values for the cross section forces kyyk_{yy}, kyzk_{yz} and so on get calculated according to EN 1993-1-1 appendix B. The valuesCmyC_{my}andCmzC_{mz}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.2.6 and the master thesis of Jukka Mäenpää [9]. It is possible to switch off the influence of buckling for single members or set user defined values for the buckling length (see section 3.1.10).

The adverse effect of compressive normal forces in a beam can be taken into account globally (see section 3.5) or locally on the level of individual members. The procedure applied in Karamba3D 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 lbl_bof an element. For this the following simplification – which is not always on the safe side – is applied: Starting from the endpoints of an element, proceeding to its neighbors, the first nodes are tracked that connect to more than two elements or a support. The buckling length is determined as the distance between these two nodes. It lies on the safe side in case of endpoints firmly held by the rest of the structure against translation. When beams are members of a larger part 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 sec. 3.5). In case of a free end the buckling length is doubled. Compressive normal forces in slender beams reduce 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 Karamba3D takes lateral torsional buckling into account. An element's lateral torsional buckling length is calculated in the same way as for conventional buckling. The buckling length for lateral torsional buckling can be set manually via the property “BklLenLT” of the “Modify Beam”-component.

In the course of cross section optimization Karamba3D checks the cross sections for local buckling and issues a warning if necessary. The check for local buckling uses the classification 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 forcesNIIN^{II}are not updated. In order to include second order theory effects either setNIIN^{II}manually or use “AnalysisThII” (see section 3.5.2) to determine NIIN^{II} iteratively.

The "OptiCroSec"-component provides the following set of input-plugs:


Structure to be optimized.


Identifiers of elements that should be optimized. If not specified, optimization is carried out for the entire model.


List of identifiers of groups of elements that take part in cross section design and shall have uniform cross section. One can use the names of element sets and regular expressions for defining groups.


Cross section-list that contains families of cross sections ordered from most favorite to least desired. Family membership of cross sections is given via their “family” property.


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 specified. Then it makes sense to keep some structural reserves for later phases by setting this value to less than 1.0. When working with characteristic loads this value should be less than 0.7.


For usability of a structure it is necessary to put a limit on its maximum deflection. This can be done using the “MaxDisp”-plug. By default its value is −1 which means that the maximum deflection is not considered for cross section design. When working with design loads keep in mind that those are roughly a factor of “1.4” above the level to be considered for usability.

In order to see all input-plugs click on the “Settings”-button to unfold the rest of the component:


Maximum number of design iterations for sufficient load bearing capacity in the ultimate limit state (ULS). The default value is five.


Maximum number of iterations used to reach the maximum displacement criteria in case there is one. The design iterations for maximum displacement come after those for load bearing capacity.


Number of points along beams at which their utilization is determined. The default is three.


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 stressfyf_yof 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 Karamba3D assumes linear elastic material behavior.


Material safety factor according to EN 1993-1-1 in case that failure is not initiated by buckling. Its default value is 1.0. In some European countries this factor lies above 1.0.


Material safety factor according to EN 1993-1-1 in case that buckling initiates failure. The default value again lies at 1.0 - may be specified differently in your national application document of EN 1993-1-1.

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”-output 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 Karamba3D is to render plausible cross section choices. Be aware that it builds upon assumptions like the correct determination of buckling lengths.

Last updated