3.6.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.

Figure 3.6.8.1 shows a typical set-up. The initial structure consisted of I-sections of type HEA100 which have a height and width of 100mm100mm. 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.5 kN/cm².

Design against structural failure at the Ultimate Limit State (ULS)

In Fig. 3.6.8.1 there is no displacement limit given. Thus 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 and load case combinations given via their names at the "LCasesUtil"-input-plug. If no input is given in "LCasesUtil" all load cases and load case combinations in the model are selected. 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. Sufficient means that the element's utilization falls below the value given at the "MaxUtil" input-plug.

  3. If no changes were necessary in step two or the maximum number of design iterations ("ULSIter") 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. 3.6.8.2 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 comparative stress in a point divided by the material strength. The comparative strength depends on the strength hypotheses chosen for the material (see section 3.5.1). In case of steel the Von Mises comparative stress applies. 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%.

In case the largest cross section of a family is not sufficient the "OptiCroSec"-component issues a warning like in fig. 3.6.8.2. The "Info"-output provides information regarding the cause of the problem. A cross section may be insufficient with respect to reaching the maximum displacement or the maximum utilization target. The output-plug "insSLS" returns the indexes of the elements which are insufficient with regards to the serviceability limit state (SLS) for which the displacement limit is in place. "insULS" provides the indexes of the elements insufficient at the ultimate limit state (ULS) where the utilization needs to be limited. Both outputs can be directly fed into the "ModelView"-component's "View"-input-plug to visualize the problem zones. The "insSLS"-ouput is only informative in case the structure as a whole can be made sufficient by increasing the cross sections of neighboring elements.

Design against excessive deflections at the Serviceability Limit State (SLS)

When given a positive number at the "maxDisp"-input-plug iterative design steps for limiting the maximum displacement precede ultimate limit state design. Karamba3D uses the following procedure which is described in [16]:

  • Determination of the maximum displacement for the load cases and load case combinations given via "LCasesDisp". If nothing is given there the load cases and load case combinations of "LCasesUtil" are used. The displacements retrieved include all nodal displacements and beam displacements at the element start-, mid- and end-positions. In case a deformation direction is specified for the model via "ModelViews" "defDir"-input, it gets applied.

  • For the load case with the maximum displacement a virtual load case gets constructed, and calculated. The corresponding virtual work of the maximum displacement load case is used to adapt the cross section sizes of the elements.

  • The increase of cross section sizes is done in such a way that the displacement limit is reached within "DispIter" number of steps.

Building codes prescribe different levels of safety against reaching maximum displacement and load bearing limits. Karamba3D offers two options for taking account of that:

  • Simplified approach: 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. The advantage is that no separate load combinations for ULS and SLS need to be defined

  • Accurate approach: Define load superposition rules according to the design codes with different safety factors for SLS- and ULS-states and supply them via "LCasesDisp" and "LCasesUtil" respectively.

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 and consider the load-bearing capacity of the whole cross section. The "Stress/Strength Ratio"-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.

Regarding the ultimate limit state: 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 static 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 families are ranked according to their height. The cross section with the smallest height comes first, 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 section 3.3.11 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 values CmyC_{my}and CmzC_{mz}are limited to a minimum of 0.9 by default. This means that sideways sway initiates buckling which is on the safe side in case of non-sway frames. When the input-plug "SwayFrame" is set to 'False' the limit of 0.9 does not apply.

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: Modify Element).

The adverse effect of compressive normal forces in a beam can be taken into account globally (see section 3.6.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. 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 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 section 3.6.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 elements 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 updated according to the setting made for the respective load cases and load case combinations.

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

"Model"

Structure to be optimized.

"ElemIds"

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

"GroupIds"

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.

"CroSecs"

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.

"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 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.

"LCasesUtil"

List of load cases and load case combinations for which the load bearing capacity of the elements shall be checked. These load cases define the ultimate limit state. If nothing is given all load cases and load case combinations of the model are considered.

"MaxDisp"

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. If given as a vector, the displacement components in the direction of the vector shall be smaller than its given length. 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.

"LCasesUtil"

List of load cases and load case combinations for which the maximum nodal- and element-displacements (at start, middle, end) shall be limited to the value given in "MaxDisp". These load cases define the servicability limit state. If nothing is given all load cases and load case combinations specified at "LCasesUtil" are considered.

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

"ULSIter"

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

"DispIter"

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.

"nSamples"

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

"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 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.

"gammaM0"

Material safety factor according to EN 1993-1-1 in case that failure is not initiated by buckling. This applies in case of tensile normal force or zero buckling length. Its default value is 1.0. In some European countries this factor lies above 1.0. The default value of gammaM0 can be set in the karamba.ini-file.

"gammaM1"

Material safety factor according to EN 1993-1-1 in case that buckling initiates failure. This applies in case of compressive normal force and non-zero buckling length. The default value again lies at 1.1 - may be specified differently in your national application document of EN 1993-1-1. The default value of gammaM1 can be set in the karamba.ini-file. Attention: in Karamba3D 1.3.3 the default value of gammaM1 was 1.0!

"SwayFrame"

This flag inidicates whether parts of the structure are susceptible to sideways sway blucking. By default its value is 'True' which results in cross section dimensions which lie on the safe side.

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