Karamba3D v2
English 英文
English 英文
  • Welcome to Karamba3D
  • New in Karamba3D 2.2.0
  • See Scripting Guide
  • See Manual 1.3.3
  • 1: Introduction
    • 1.1 Installation
    • 1.2 Licenses
      • 1.2.1 Cloud Licenses
      • 1.2.2 Network Licenses
      • 1.2.3 Temporary Licenses
      • 1.2.4 Standalone Licenses
  • 2: Getting Started
    • 2 Getting Started
      • 2.1: Karamba3D Entities
      • 2.2: Setting up a Structural Analysis
        • 2.2.1: Define the Model Elements
        • 2.2.2: View the Model
        • 2.2.3: Add Supports
        • 2.2.4: Define Loads
        • 2.2.5: Choose an Algorithm
        • 2.2.6: Provide Cross Sections
        • 2.2.7: Specify Materials
        • 2.2.8: Retrieve Results
      • 2.3: Physical Units
      • 2.4: Quick Component Reference
  • 3: In Depth Component Reference
    • 3.0 Settings
      • 3.0.1 Settings
      • 3.0.2 License
    • 3.1: Model
      • 3.1.1: Assemble Model
      • 3.1.2: Disassemble Model
      • 3.1.3: Modify Model
      • 3.1.4: Connected Parts
      • 3.1.5: Activate Element
      • 3.1.6: Line to Beam
      • 3.1.7: Connectivity to Beam
      • 3.1.8: Index to Beam
      • 3.1.9: Mesh to Shell
      • 3.1.10: Modify Element
      • 3.1.11: Point-Mass
      • 3.1.12: Disassemble Element
      • 3.1.13: Make Beam-Set 🔷
      • 3.1.14: Orientate Element
      • 3.1.15: Dispatch Elements
      • 3.1.16: Select Elements
      • 3.1.17: Support
    • 3.2: Load
      • 3.2.1: General Loads
      • 3.2.2: Beam Loads
      • 3.2.3: Disassemble Mesh Load
      • 3.2.4: Prescribed displacements
    • 3.3: Cross Section
      • 3.3.1: Beam Cross Sections
      • 3.3.2: Shell Cross Sections
      • 3.3.3: Spring Cross Sections
      • 3.3.4: Disassemble Cross Section 🔷
      • 3.3.5: Eccentricity on Beam and Cross Section 🔷
      • 3.3.6: Modify Cross Section 🔷
      • 3.3.7: Cross Section Range Selector
      • 3.3.8: Cross Section Selector
      • 3.3.9: Cross Section Matcher
      • 3.3.10: Generate Cross Section Table
      • 3.3.11: Read Cross Section Table from File
    • 3.4: Joint
      • 3.4.1: Beam-Joints 🔷
      • 3.4.2: Beam-Joint Agent 🔷
      • 3.4.3: Line-Joint
    • 3.5: Material
      • 3.5.1: Material Properties
      • 3.5.2: Material Selection
      • 3.5.3: Read Material Table from File
      • 3.5.4: Disassemble Material 🔷
    • 3.6: Algorithms
      • 3.6.1: Analyze
      • 3.6.2: AnalyzeThII 🔷
      • 3.6.3: Analyze Nonlinear WIP
      • 3.6.4: Large Deformation Analysis
      • 3.6.5: Buckling Modes 🔷
      • 3.6.6: Eigen Modes
      • 3.6.7: Natural Vibrations
      • 3.6.8: Optimize Cross Section 🔷
      • 3.6.9: BESO for Beams
      • 3.6.10: BESO for Shells
      • 3.6.11: Optimize Reinforcement 🔷
      • 3.6.12: Tension/Compression Eliminator 🔷
    • 3.7: Results
      • 3.7.1: ModelView
      • 3.7.2: Deformation-Energy
      • 3.7.3: Element Query
      • 3.7.4: Nodal Displacements
      • 3.7.5: Principal Strains Approximation
      • 3.7.6: Reaction Forces 🔷
      • 3.7.7: Utilization of Elements 🔷
        • Examples
      • 3.7.8: BeamView
      • 3.7.9: Beam Displacements 🔷
      • 3.7.10: Beam Forces
      • 3.7.11: Node Forces
      • 3.7.12: ShellView
      • 3.7.13: Line Results on Shells
      • 3.7.14: Result Vectors on Shells
      • 3.7.15: Shell Forces
      • 3.7.16 Results at Shell Sections
    • 3.8: Export 🔷
      • 3.8.1: Export Model to DStV 🔷
      • 3.8.2 Json / Bson Export and Import
    • 3.9 Utilities
      • 3.9.1: Mesh Breps
      • 3.9.2: Closest Points
      • 3.9.3: Closest Points Multi-dimensional
      • 3.9.4: Cull Curves
      • 3.9.5: Detect Collisions
      • 3.9.6: Get Cells from Lines
      • 3.9.7: Line-Line Intersection
      • 3.9.8: Principal States Transformation 🔷
      • 3.9.9: Remove Duplicate Lines
      • 3.9.10: Remove Duplicate Points
      • 3.9.11: Simplify Model
      • 3.9.12: Element Felting 🔷
      • 3.9.13: Mapper 🔷
      • 3.9.14: Interpolate Shape 🔷
      • 3.9.15: Connecting Beams with Stitches 🔷
      • 3.9.16: User Iso-Lines and Stream-Lines
      • 3.9.17: Cross Section Properties
    • 3.10 Parametric UI
      • 3.10.1: View-Components
      • 3.10.2: Rendered View
  • Troubleshooting
    • 4.1: Miscellaneous Questions and Problems
      • 4.1.0: FAQ
      • 4.1.1: Installation Issues
      • 4.1.2: Purchases
      • 4.1.3: Licensing
      • 4.1.4: Runtime Errors
      • 4.1.5: Definitions and Components
      • 4.1.6: Default Program Settings
    • 4.2: Support
  • Appendix
    • A.1: Release Notes
      • Work in Progress Versions
      • Version 2.2.0 WIP
      • Version 1.3.3
      • Version 1.3.2 build 190919
      • Version 1.3.2 build 190731
      • Version 1.3.2 build 190709
      • Version 1.3.2
    • A.2: Background information
      • A.2.1: Basic Properties of Materials
      • A.2.2: Additional Information on Loads
      • A.2.3: Tips for Designing Statically Feasible Structures
      • A.2.4: Hints on Reducing Computation Time
      • A.2.5: Natural Vibrations, Eigen Modes and Buckling
      • A.2.6: Approach Used for Cross Section Optimization
    • A.3: Workflow Examples
    • A.4: Bibliography
Powered by GitBook
On this page

Was this helpful?

  1. 3: In Depth Component Reference
  2. 3.6: Algorithms

3.6.8: Optimize Cross Section 🔷

Previous3.6.7: Natural VibrationsNext3.6.9: BESO for Beams

Last updated 3 years ago

Was this helpful?

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 100mm100mm100mm. 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²fy​=23.5kN/cm2.

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

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.

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

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"

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

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 ). 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%.

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.71/1.4≈0.7 under characteristic loads and use the resulting displacements directly for usability design.

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 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 for details). The interaction values for the cross section forces kyyk_{yy}kyy​, kyzk_{yz}kyz​and so on get calculated according to EN 1993-1-1 appendix B. The values CmyC_{my}Cmy​and CmzC_{mz}Cmz​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 and the master thesis of Jukka Mäenpää . It is possible to switch off the influence of buckling for single members or set user defined values for the buckling length (see section ).

The adverse effect of compressive normal forces in a beam can be taken into account globally (see section ) 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_blb​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 ). 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.

During the optimization of cross sections normal forcesNIIN_{II}NII​are not updated. In order to include second order theory effects either setNIIN_{II}NII​manually or use "AnalysisThII" (see section ) to determineNIIN_{II}NII​iteratively.

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

fyf_yfy​
3.5.1
3.3.11
[5]
3.6.5
3.6.5
3.6.2
A.2.6
[9]
3.1.10: Modify Element
31KB
OptiCroSec_BeamGroups.gh
30KB
OptiCroSec_Column.gh
31KB
OptiCroSec_InfluenceOfLateralTorsionalBuckling.gh
29KB
OptiCrosec_InfluenceOfNormalForceBuckling.gh
31KB
OptiCroSec_Joints.gh
40KB
OptiCroSec_Lineload.gh
40KB
OptiCroSec_Membrane_Large.gh
34KB
OptiCroSec_PlasticDesign.gh
36KB
OptiCroSec_ResultsRetrieval.gh
37KB
OptiCroSec_Shell.gh
50KB
OptiCroSec_Shell_Beam.gh
37KB
OptiCroSec_Shell_Large.gh
49KB
OptiCroSec_Shell_Small.gh
35KB
OptiCroSec_SpringAndBeam.gh
33KB
OptiCroSec_Truss.gh
39KB
OptiCroSec_UniformLevelOfLowerBeamEdges.gh
43KB
OptiCroSec_TensionCompressionEliminator_I.gh
37KB
OptiCroSec_TensionCompressionEliminator_II.gh
51KB
OptiCroSec_UserDefinedBeamFamily.gh
35KB
OptiCroSec_VariableJointsStiffness.gh
Fig. 3.6.8.1: Cross section optimization with the "OptiCroSec"-component on a simply supported beam.
Fig. 3.6.8.2: Cross section optimization with the "OptiCroSec"-component on a cantilevering wall.