# Springs from Compression to Tension

**URL:** <https://calculix.discourse.group/t/springs-from-compression-to-tension/2101>\
**Category:** Uncategorized\
**Created:** [February 20, 2024, 9:18am UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101 "2024-02-20T09:18:24Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 20, 2024, 9:18am UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/1 "2024-02-20T09:18:24Z")

</div>

Hi,

I’m finding what looks like a bug. I would like if someone could confirm before posting on Github.  
It may seem an strange situation but I think this could be involved in the convergence issues present in one of my pretension tests.  
Springs passing from compression to tension show a nonlinear behavior that makes them to suddenly jump and end up at an incorrect position.

Spring in the example has:

K= 1 N/mm.  
Initial length 1000mm.  
Ramped compression force from 0 to 2000N  
Expected elongation: 2000N/1N/mm=2000mm.  
Expected final length 1000 mm = 1000N invested to compress 1000mm + 1000N invested to Stretch 1000mm (passing through a singular point with zero lenght)  
Resulting final length = 3000mm

 ![screenshot.99](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/8/86410b3971856f1ab96291f6dbf0300420801a6e.jpeg)

```auto
** Generated by Mecway 24
*NODE
1,0,0,0
2,0,0,-1
*ELEMENT,TYPE=SPRINGA
1,1,2
*ELSET,ELSET=Springs
1
*SPRING,ELSET=Springs

1.000000000000E+003
*BOUNDARY
1,1,,0
1,2,,0
1,3,,0
2,1,,0
2,2,,0
*AMPLITUDE,NAME=Az_2_1
0,0
0.5,1000
1,2000
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC,DIRECT,SOLVER=PARDISO
0.01,1,0,0
*CLOAD,AMPLITUDE=Az_2_1
2,3,1
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE
*END STEP

```

A second situation is when the spring passes from compression to tension but now one of the nodes is offset such that the load is not colinear. Convergence in this situation directly fails.

 ![screenshot.100](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/2/2d63188c0c5f9a9c7defcfd2fac51f775b40d5e5.jpeg)

```auto
** Generated by Mecway 24
*NODE
1,0,0,0
2,0,0.1,-1
*ELEMENT,TYPE=SPRINGA
1,1,2
*ELSET,ELSET=Springs
1
*SPRING,ELSET=Springs

1.000000000000E+003
*BOUNDARY
1,1,,0
1,2,,0
1,3,,0
2,1,,0
2,2,,0
*AMPLITUDE,NAME=Az_2_1
0,0
0.5,1000
1,2000
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC,DIRECT,SOLVER=PARDISO
0.01,1,0,0
*CLOAD,AMPLITUDE=Az_2_1
2,3,1
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE
*END STEP

```

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [February 20, 2024, 11:27am UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/2 "2024-02-20T11:27:03Z")

</div>

The second one doesn’t converge in Abaqus either, throwing the “FIXED TIME INCREMENT IS TOO LARGE” error. Direct incrementation is risky.

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 20, 2024, 11:39am UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/3 "2024-02-20T11:39:00Z")

</div>

That probably come from my different testing options.  
The result with automatic fails with maximum time step and converges to the wrong value in automatic.

 ![imagen](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/f/ffaade57a4ccf38930017d0fa0dcf6e52cacc5cf.png)

```auto
** Generated by Mecway 24
*NODE
1,0,0,0
2,0,0.2,-1
*ELEMENT,TYPE=SPRINGA
1,1,2
*ELSET,ELSET=Springs
1
*SPRING,ELSET=Springs

1.000000000000E+003
*BOUNDARY
1,1,,0
1,2,,0
1,3,,0
2,1,,0
2,2,,0
*AMPLITUDE,NAME=Az_2_1
0,0
1,2000
*STEP,NLGEOM=YES,INC=110,AMPLITUDE=STEP
*STATIC,SOLVER=PARDISO
0.01,1,0,0.01
*CLOAD,AMPLITUDE=Az_2_1
2,3,1
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE,OUTPUT=2D,SECTION FORCES
S,NOE
*END STEP

```

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [February 20, 2024, 11:58am UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/4 "2024-02-20T11:58:34Z")

</div>

The new input reaches 27.5% in Abaqus and gives the displacement magnitude of 718 mm for this load level.

The first input results in (displacement magnitude [m]):

 ![spring](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/9/99a266a4c7be8a139f80243ab08396bb7754bdd2.png)

From CalculiX User’s Manual:

> Note that a spring under compression, if not properly restrained, may change its direction by 180°, leading to unexpected results.

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 20, 2024, 12:24pm UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/5 "2024-02-20T12:24:46Z")

</div>

ooooh. Of course. The spring rotates and it’s suddenly loaded. How to control that???. Springs doesn’t have rotational degrees of freedom right?  
If pretension by force has anything to do internally with springs , that could be the reason why in some cases, it suddenly fails when tension (operational load) exceeds pretension load.

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [February 20, 2024, 12:44pm UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/6 "2024-02-20T12:44:58Z")

</div>

> [@Disla](#):
>
> How to control that???

With a displacement control instead of a force control but I guess it’s not a satisfying solution in your case.

> [@Disla](#):
>
> If pretension by force has anything to do internally with springs

It shouldn’t. Pre-tension is internally handled by linear MPCs.

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 20, 2024, 12:52pm UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/7 "2024-02-20T12:52:44Z")

</div>

> [@Calc\_em](#):
>
> It shouldn’t. Pre-tension is internally handled by linear MPCs.

Then, maybe it’s is my compression only support.  
I have to do more testing.

Thanks .

---

<div class="post-metadata">

**Author:** ![xyont](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/xyont/32/3553_2.png) [@xyont](https://calculix.discourse.group/u/xyont)\
**Post date:** [February 20, 2024, 3:21pm UTC](https://calculix.discourse.group/t/springs-from-compression-to-tension/2101/8 "2024-02-20T15:21:50Z")

</div>

> [@Calc\_em](#):
>
> From CalculiX User’s Manual:

probably, this is similar to truss element. In stability purpose and eliminate spurious mode, it’s required rotational restraint in longitudinal axis (torsion) of element.
