Karamba3D 2.2.0
Search…
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.
Fig. 3.6.8.1: Cross section optimization with the "OptiCroSec"-component on a simply supported beam.
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/cm²f_y = 23.5 kN/cm²
.
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. 1.
    Determination of section forces at "nSamples" points along all beams using the initial cross section.
  2. 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. 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.
Fig. 3.6.8.2: Cross section optimization with the "OptiCroSec"-component on a cantilevering wall.
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%.
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.4≈0.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. 3.6.8.2).
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 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 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_b
of 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 forces
NIIN_{II}
are not updated. In order to include second order theory effects either set
NIIN_{II}
manually or use "AnalysisThII" (see section 3.6.2) to determine
NIIN_{II}
iteratively.
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.
"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.
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 stress
fyf_y
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 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.
​
OptiCroSec_BeamGroups.gh
31KB
Binary
OptiCroSec_Column.gh
30KB
Binary
OptiCroSec_InfluenceOfLateralTorsionalBuckling.gh
31KB
Binary
OptiCrosec_InfluenceOfNormalForceBuckling.gh
29KB
Binary
OptiCroSec_Joints.gh
31KB
Binary
OptiCroSec_Lineload.gh
40KB
Binary
OptiCroSec_Membrane_Large.gh
40KB
Binary
OptiCroSec_PlasticDesign.gh
34KB
Binary
OptiCroSec_ResultsRetrieval.gh
36KB
Binary
OptiCroSec_Shell.gh
37KB
Binary
OptiCroSec_Shell_Beam.gh
50KB
Binary
OptiCroSec_Shell_Large.gh
37KB
Binary
OptiCroSec_Shell_Small.gh
49KB
Binary
OptiCroSec_SpringAndBeam.gh
35KB
Binary
OptiCroSec_Truss.gh
33KB
Binary
OptiCroSec_UniformLevelOfLowerBeamEdges.gh
39KB
Binary
OptiCroSec_TensionCompressionEliminator_I.gh
43KB
Binary
OptiCroSec_TensionCompressionEliminator_II.gh
37KB
Binary
OptiCroSec_UserDefinedBeamFamily.gh
51KB
Binary
OptiCroSec_VariableJointsStiffness.gh
35KB
Binary
Last modified 20d ago
Copy link