Karamba3D v3
  • Welcome to Karamba3D
  • New in Karamba3D 3.1
  • See Scripting Guide
  • See Manual 2.2.0
  • 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 The Karamba3D Menu
      • 2.4 User Settings
      • 2.5 Physical Units
      • 2.6 Asynchronous Execution of Karamba3D Components
      • 2.7 Quick Component Reference
  • 3 In Depth Component Reference
    • 3.0 Settings
      • 3.0.1 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 Create Linear Element
        • 3.1.6.1 Line to Beam
        • 3.1.6.2 Line to Truss
        • 3.1.6.3 Connectivity to Beam
        • 3.1.6.4: Index to Beam
      • 3.1.7 Create Surface Element
        • 3.1.7.1: Mesh to Shell
        • 3.1.7.2: Mesh to Membrane
      • 3.1.8: Modify Element
      • 3.1.9: Point-Mass
      • 3.1.10: Disassemble Element
      • 3.1.11: Make Element-Set
      • 3.1.12: Orientate Element
      • 3.1.13: Dispatch Elements
      • 3.1.14: Select Elements
      • 3.1.15: Support
    • 3.2: Load
      • 3.2.1: General Loads
      • 3.2.2: Beam Loads
      • 3.2.3: Disassemble Mesh Load
      • 3.2.4 Load-Case-Combinations
        • 3.2.5.1 Load-Case-Combinator
        • 3.2.5.2 Disassemble Load-Case-Combinaton
        • 3.2.5.3 Load-Case-Combination Settings
    • 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 General Results
        • 3.7.1.1 ModelView
        • 3.7.1.2 Result Selector
        • 3.7.1.3 Deformation-Energy
        • 3.7.1.4 Element Query
        • 3.7.1.5 Nodal Displacements
        • 3.7.1.6 Principal Strains Approximation
        • 3.7.1.7 Reaction Forces
        • 3.7.1.8 Utilization of Elements
        • 3.7.1.9 ReactionView
      • 3.7.2 Results on Beams
        • 3.7.2.1 BeamView
        • 3.7.2.2 Beam Displacements
        • 3.7.2.3 Beam Forces
        • 3.7.2.4 Node Forces
      • 3.7.3 Results on Shells
        • 3.7.3.1 ShellView
        • 3.7.3.2 Line Results on Shells
        • 3.7.3.3 Result Vectors on Shells
        • 3.7.3.4 Shell Forces
        • 3.7.3.5 Shell Sections
    • 3.8 Export
      • 3.8.1 Export Model to DStV
      • 3.8.2 Json/Bson Export and Import
      • 3.8.3 Export Model to SAF
      • 3.8.4 Export/Import Model to and from Speckle (WIP)
    • 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.9.18 Surface To Truss
    • 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
      • Older Versions
      • Version 2.2.0
      • 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: Performance Optimization in Karamba3D
      • 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
  • Dynamic Relaxation
  • Newton-Raphson Method
  • Arc-Length Method
  1. 3 In Depth Component Reference
  2. 3.6: Algorithms

3.6.3: Analyze Nonlinear WIP

Previous3.6.2: AnalyzeThIINext3.6.4: Large Deformation Analysis

Last updated 7 months ago

Linear structural behavior implies that if the external loads are scaled by a factor, the physical response quantities (displacements, cross-section forces, stresses, etc.) also scale by that factor. This property allows for the superposition of different loads, eliminating the need to recalculate the model for each possible combination of external loads. In real structures, the assumption of linear behavior is an approximation, though a good one in many cases. There are two major sources of non-linearity:

  • Material Non-Linearity: This occurs when the stress-strain relationship of the material is not linear (e.g. concrete that cracks, steel that yields, …).

  • Geometric non-linearity: Takes effect when

    • lateral displacements get so large, that their effect on the axial (in case of e.g. beams) or in-plane (think of shells) deformation can not be neglected any more,

    • a nodal rotation α\alphaα reaches such a value, that the difference between α\alphaα and tan⁡(α)\tan(\alpha)tan(α) gains importance.

The “Analyze Nonlinear WIP”-component lets one deal with geometric non-linearity. It is work-in-progress. This means that especially for shells the algorithms may not converge within acceptable time for some structures. If however a result is returned, then it is sound.

With the “Analyze Nonlinear WIP”-component one can chose from three variants of iterative solution algorithms. Each of these has different benefits and liabilities which will be explained below. The algorithms are based on the assumption of small strains, but allow arbitrarily large displacements.

The target of all three algorithms is to find a displacement state, where the external loads and the internal forces are in equilibrium. Starting from a known initial displacement state, one has to guess how the structure deforms under the given loads. This guess leads to a second displacement state where the internal and external forces usually do not match. The remaining imbalance forms the basis of a next prediction regarding the change of displacements and so on. Equilibrium is reached when the residual-force or change of displacements falls below a given threshold. The three algorithms offered by the “Analyze Nonlinear WIP”-component differ in how they predict the displacement increments.

Dynamic Relaxation

Fig. 3.5.3.1 shows a cantilever beam with a bending moment load about the local y-axis at its tip. It consists of 20 beam elements. For calculating its response the “DynamicRelaxation”-option is used. This algorithm predicts the next move of a structure based on the direction of the residual forces acting on each node. It is a robust procedure which converges to equilibrium quite reliably but sometimes needs a large number of iterations to do so. This component offers the following input-plugs:

"Model"

Structure to be analyzed.

"nLoadSteps"

Number of load-cases which shall act as load-steps. The default is 1. When setting it to e.g. 2 it means that the algorithm starts with finding equilibrium for load-case 0. After that, the loads of load-case 0 remain in place and the loads of load-case 1 are added in order to arrive at the final stage. This allows to model a loading history. The remaining load-cases get added to the final stage separately and under the assumption of small displacements. In the case of an active bending structure the first load-cases serve as those which cause the deformed structure, whereas the rest of the load-cases constitute additional actions on the deformed configuration like wind- or live-load. The scaling factor for displacements in the “Display Scales” submenu of the “ModelView”-component acts only on the loading-steps for which small displacements are assumed. The large deformation share of the total displacements does not get scaled and is displayed in real size.

"nLoadIncs"

Number of increments per load-case (the default is 5). External loads get applied in several steps. In case of structures with nearly linear behaviour, the number of increments can be set to a small number. For highly non-linear problems a larger value can be advantageous. The smaller the load-increments, the easier it is for the algorithm to find equilibrium. The number of iterations usually decreases with increasing number of load-steps (and thus decreasing step size). The overall performance can however suffer if the number of load-steps is set to a number which is too high for the given type of structural behaviour.

"maxEquiIter"

Sets the maximum number of equilibrium iterations per load-increment and thus sets a limit on computation time. It defaults to 200.

"EquiTol"

"maxLimitIter"

The range of problems which can be tackled using the dynamic relaxation (DR) algorithm as implemented in Karamba3D is limited to stable structures. In case of phenomena like buckling or snap-through, equilibrium states may exist beyond the point of initial instability. They are however hard to reach due to their often large distance from the last known stable configuration. In such a case the DR-algorithm does not converge to an equilibrium state within the maximum number of equilibrium iterations. It then tries to close in on the point of assumed instability by halving the load-increment which led to divergence. By proceeding in this manner, the so called limit load can be determined with arbitrary precision. “maxLimitIter” sets an upper limit on the number of limit-load-iterations which is equal to 200 by default. Sadly, divergence can also be caused by numerical problems in the algorithm. Thus the limit-load-factor as determined by the “Analyze Nonlinear WIP”-component constitutes only a lower limit estimation.

"LimitTol"

Sets the minimum load-increment threshold for calculating the limit-load.

"StepSizeFac"

A factor for scaling the predicted displacement increments of the DR-algorithm.

During a non-linear calculation lots of things can happen. In order to get an idea about why and where something went wrong, the DR variant of the “DynamicRelaxation”-option produces the following output:

"Model"

Structure with calculated displacements, stresses and internal forces.

"Disp"

Maximum displacement reached in centimeter.

"Energy"

"Info"

Details regarding the solution process. It outputs five columns of text:

  • “Factor”: The factor of the loads of the current load-step.

  • “Step”: The current load-step

  • “Iter”: Counts the number of iterations for the current load-increment.

  • “Disp.Err”: Outputs the ratio of the sum of iterative changes of the nodal displacements with respect to the change of displacements of the first iteration in the current load-increment

  • “Force.Err”: Outputs the ratio of the sum of iterative changes of the residual forces with respect to the current load-increment.

"Lambdas"

Informs about the load-factors for which equilibrium could be reached.

Newton-Raphson Method

In practice, dynamic relaxation(DR) procedures are used for highly non-linear problems like numerical crash-tests of cars, bolts being shot into a wall, …. The reason is, that implementing non-linear effects as DR code is relatively easy. This ease of implementation comes at the cost of high computational effort: Many iterations are necessary to reach equilibrium with acceptable accuracy. The way out of this is to invest more effort in a better prediction of the displacement increments. In DR-methods the residual forces at the nodes form the basis of predicting the next position of a node. Methods like the Newton-Raphson- or Arc-Length-method use a stiffness matrix for producing displacement predictions. There the computational cost per iteration is higher, but the number of iterations can be made much smaller as compared to DR-methods. With a consistent stiffness matrix quadratic convergence can be achieved under optimal conditions. This means that for the iterative displacement- and force-errors the number of zeros after the decimal separator doubles in each iteration. For the “Analyze Nonlinear WIP”-component this is not yet the case and one reason for the “work in progress”-label. Details on the Newton-Raphson- or Arc-Length methods can be found in [6] on page 102 ff. and 214 ff..

Fig. 3.5.3.2 shows the same cantilever beam as before, this time analyzed with the “NewtonRaphson”-option. The Newton-Raphson variant of the “Analyze Nonlinear WIP”-component comes with nearly the same input- and output-plugs as the DR-version. The only difference is the missing “StepSizeFac”-input. Since Newton-Raphson procedures have the same limitation with respect to unstable structures as DR-methods, an interval halving strategy for closing in on limit-points is applied as before.

Arc-Length Method

For many structures reaching a first point of instability is not yet the end of the story. Especially thin plate and shell structures show large load bearing reserves when considering their post-buckling behavior. The Arc-Length-method can be used for these kinds of situations. Fig. 3.5.3.3 shows the calculation of a truss structure which snaps through from an unstable state to a stable post-buckling configuration.

The first two inputs of the “Arclength”-component have the same meaning as before. Here a description of how the rest of the input-plugs controls the solution process:

"IniLoadFac"

The displacement of the structure under the external load multiplied by “IniLoadFac” serves as a first estimate for the target deformation increments.

"MaxEquiIter"

The maximum number of iterations per load increment.

"TargetEquiIter"

Sets the number of increments to be used in each increment. Is used to scale the load-increments accordingly.

"EquiTol"

The tolerance for out of balance forces and displacement changes from one iteration to the next.

"MaxLoadInc"

Maximum number of load iterations.

Tolerance for the iterative change of residual forces and displacements relative to their incremental change in the current load-step. The default value is .

Deformation energy stored in the structure in .

1E−71E-71E−7
kNmkN mkNm
42KB
DynamicRelaxationComponent.gh
36KB
newtonRaphsonComponent.gh
37KB
ArcLengthComponent.gh
Fig. 3.5.3.1: Dynamic relaxation method option of the “Analyze Nonlinear WIP”-component.
Fig. 3.5.3.2: Newton-Raphson method option of the “Analyze Nonlinear WIP”-component
Fig. 3.5.3.3: Arc-Length method option of the “Analyze Nonlinear WIP”-component