I’m working on a structural model in which some elements (specifically vertical connections) behave differently in tension and compression (a tie-rod connection).
I would like to assign different elastic moduli (E-values) for these elements depending on whether they are under tensile or compressive axial force. For example:
Under tension → Etension
Under compression → Ecompression
If this is not natively supported, is there a recommended way to mimic or approximate this behavior accurately within the Karamba3D framework?
I’m trying to model a vertical connection between columns that should behave like a tie-rod under tension but when under compression it should resemble the column. The goal is for the element to:
Respond with a specific axial stiffness (based on EA) when under tension — matching a real tie-rod
But react differently when under compression, ideally as the column below. Since in these type of connections tension is taken by the rod and compression is taken by the columns.
I understand the Modify Element but as far as I know, there’s no built-in way to apply different stiffness properties depending on the sign of the normal force.
Is there a way in Karamba to simulate this kind of direction-dependent stiffness within one element or would this require a workaround, like separating the tie-rod behavior into two different elements with conditional activation?
Thanks a lot for your help, I’d really appreciate your insight on the best approach here.
Hi @Schelto_Blanken,
Material non-linearity is currently not supported in Karamba3D version 3.1.50414.
As a possible workaround, you can use the “Tension/Compression Eliminator” component to remove elements that are either in tension or compression. By applying two of these components in parallel, disassembling their outputs, and then reassembling them into a single model, you could try to approximate the desired behavior.
The Karamba3D scripting manual contains the tension/compression algorithm as a script (see here). Combining it with the cross section optimization script in section 2.4.1 could help to achieve what you want.